diff options
Diffstat (limited to 'drivers/net/phy/phy_device.c')
| -rw-r--r-- | drivers/net/phy/phy_device.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 7ddd91df99e3..27ebc2c6c2d0 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1752,7 +1752,17 @@ EXPORT_SYMBOL(genphy_aneg_done);   */  int genphy_update_link(struct phy_device *phydev)  { -	int status; +	int status = 0, bmcr; + +	bmcr = phy_read(phydev, MII_BMCR); +	if (bmcr < 0) +		return bmcr; + +	/* Autoneg is being started, therefore disregard BMSR value and +	 * report link as down. +	 */ +	if (bmcr & BMCR_ANRESTART) +		goto done;  	/* The link state is latched low so that momentary link  	 * drops can be detected. Do not double-read the status  | 
