Message ID | 2a8c3ca7-4ef3-3dd7-6276-759f66ab8b5e@gmail.com |
---|---|
State | New |
Headers | show |
Series | [net] net: phy: fix aneg restart in phy_ethtool_set_eee | expand |
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 9bdc924ee..d4bbf79da 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1240,9 +1240,11 @@ int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data) /* Restart autonegotiation so the new modes get sent to the * link partner. */ - ret = phy_restart_aneg(phydev); - if (ret < 0) - return ret; + if (phydev->autoneg == AUTONEG_ENABLE) { + ret = phy_restart_aneg(phydev); + if (ret < 0) + return ret; + } } return 0;
phy_restart_aneg() enables aneg in the PHY. That's not what we want if phydev->autoneg is disabled. In this case still update EEE advertisement register, but don't enable aneg and don't trigger an aneg restart. Fixes: f75abeb8338e ("net: phy: restart phy autonegotiation after EEE advertisment change") Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> --- drivers/net/phy/phy.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)