Even if the advertisement registers content didn't change, we may have
just switched to aneg, and therefore have to trigger an aneg restart.
This matches the behavior of genphy_config_aneg().

Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com>
---
 drivers/net/phy/marvell10g.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c
index 03fa50087..4d8a290eb 100644
--- a/drivers/net/phy/marvell10g.c
+++ b/drivers/net/phy/marvell10g.c
@@ -288,6 +288,16 @@ static int mv3310_config_aneg(struct phy_device *phydev)
        if (ret > 0)
                changed = true;
 
+       if (!changed) {
+               /* Configure and restart aneg if it wasn't set before */
+               ret = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1);
+               if (ret < 0)
+                       return ret;
+
+               if (!(ret & MDIO_AN_CTRL1_ENABLE))
+                       changed = 1;
+       }
+
        if (changed)
                ret = genphy_c45_restart_aneg(phydev);
 
-- 
2.20.1


Reply via email to