]> git.baikalelectronics.ru Git - kernel.git/commit
net: systemport: update UMAC_CMD only when link is detected
authorFlorian Fainelli <f.fainelli@gmail.com>
Tue, 2 Sep 2014 18:17:07 +0000 (11:17 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 5 Sep 2014 06:13:58 +0000 (23:13 -0700)
commit1214e745554ad038270ad3b5ef0c3b0dbc58384e
tree6a76d65ac4a4227df062f376173b31f2cdff3abf
parent2b909d3ac00606afdfc88bd07b838e12c0daf5cf
net: systemport: update UMAC_CMD only when link is detected

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:
e554f5b17a8fda763e22f96485753e679d8996d5 ("net: bcmgenet: update
UMAC_CMD only when link is detected").

Fixes: 2912eb7400ef ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bcmsysport.c