OSDN Git Service

net: phy: marvell10g: check for newly set aneg
authorHeiner Kallweit <hkallweit1@gmail.com>
Sun, 17 Feb 2019 09:32:29 +0000 (10:32 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 17 Feb 2019 18:26:52 +0000 (10:26 -0800)
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 <hkallweit1@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/marvell10g.c

index 8955740..b83eb19 100644 (file)
@@ -296,6 +296,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);