net: phy: simplify genphy_config_eee_advert
authorHeiner Kallweit <hkallweit1@gmail.com>
Mon, 11 Feb 2019 21:16:13 +0000 (22:16 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 12 Feb 2019 17:40:36 +0000 (12:40 -0500)
Use new function phy_modify_mmd_changed(), the result speaks for itself.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phy_device.c

index 3d14e48aebc5140c8f1a297154b8a3f63858712b..2c61282a272616395a55d6440ddbbfc3ad5aa638 100644 (file)
@@ -1578,31 +1578,16 @@ static int genphy_config_advert(struct phy_device *phydev)
  */
 static int genphy_config_eee_advert(struct phy_device *phydev)
 {
-       int broken = phydev->eee_broken_modes;
-       int old_adv, adv;
+       int err;
 
        /* Nothing to disable */
-       if (!broken)
+       if (!phydev->eee_broken_modes)
                return 0;
 
-       /* If the following call fails, we assume that EEE is not
-        * supported by the phy. If we read 0, EEE is not advertised
-        * In both case, we don't need to continue
-        */
-       adv = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV);
-       if (adv <= 0)
-               return 0;
-
-       old_adv = adv;
-       adv &= ~broken;
-
-       /* Advertising remains unchanged with the broken mask */
-       if (old_adv == adv)
-               return 0;
-
-       phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, adv);
-
-       return 1;
+       err = phy_modify_mmd_changed(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV,
+                                    phydev->eee_broken_modes, 0);
+       /* If the call failed, we assume that EEE is not supported */
+       return err < 0 ? 0 : err;
 }
 
 /**