diff options
Diffstat (limited to 'drivers/net/phy/phy.c')
| -rw-r--r-- | drivers/net/phy/phy.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 833a0512e..8da7688d7 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -318,10 +318,13 @@ static int genphy_parse_link(struct phy_device *phydev)  		lpa = phy_read(phydev, MDIO_DEVAD_NONE, MII_ADVERTISE);  		lpa &= phy_read(phydev, MDIO_DEVAD_NONE, MII_LPA); -		if (lpa & (LPA_100FULL | LPA_100HALF)) +		if (lpa & (LPA_100FULL | LPA_100HALF)) {  			phydev->speed = SPEED_100; -		if (lpa & (LPA_100FULL | LPA_10FULL)) +			if (lpa & LPA_100FULL) +				phydev->duplex = DUPLEX_FULL; + +		} else if (lpa & LPA_10FULL)  			phydev->duplex = DUPLEX_FULL;  	} else {  		u32 bmcr = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR);  |