• Florian Fainelli's avatar
    net: systemport: update UMAC_CMD only when link is detected · 4a804c01
    Florian Fainelli authored
    When we bring the interface down, phy_stop() will schedule the PHY
    state machine to call our link adjustment callback. By the time we do so,
    we may have clock gated off the SYSTEMPORT hardware block, and this will
    cause bus errors to happen in bcm_sysport_adj_link():
    
    Make sure that we only touch the UMAC_CMD register when there is an
    actual link. This is safe to do for two reasons:
    
    - updating the Ethernet MAC registers only make sense when a physical
      link is present
    - the PHY library state machine first set phydev->link = 0 before
      invoking phydev->adjust_link in the PHY_HALTED case
    
    This is a similar fix to the GENET one:
    c677ba8b ("net: bcmgenet: update
    UMAC_CMD only when link is detected").
    
    Fixes: 80105bef ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4a804c01
bcmsysport.c 50.4 KB