diff --git a/kernel/drivers/net/phy/realtek.c b/kernel/drivers/net/phy/realtek.c index 268a40a5..082e900e 100644 --- a/kernel/drivers/net/phy/realtek.c +++ b/kernel/drivers/net/phy/realtek.c @@ -56,6 +56,13 @@ int rtl821x_read_status(struct phy_device *phydev) { int value; + value = phy_read(phydev, RTL821x_INSR); + if (value&(1<<8)) + { + /* false carrier detected - restarting auto negotiation */ + genphy_restart_aneg(phydev); + } + value = phy_read(phydev, RTL821x_PHYCR); if (phydev->speed == SPEED_1000)