Message ID | abe2183b4c33f55228adc9a401d8603163930432.1339455422.git.bcollins@ubuntu.com |
---|---|
State | New |
Headers | show |
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index f53bc32..163e1e7 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -808,6 +808,16 @@ int genphy_read_status(struct phy_device *phydev) lpa &= adv; + err = phy_read(phydev, MII_BMSR); + + if (err < 0) + return err; + + /* if the link changed while reading speed and duplex + * abort the speed and duplex update */ + if (((err & BMSR_LSTATUS) == 0) != (phydev->link == 0)) + return 0; + phydev->speed = SPEED_10; phydev->duplex = DUPLEX_HALF; phydev->pause = phydev->asym_pause = 0;