Use new function phy_modify_mmd_changed(), the result speaks for itself.

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

diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 3d14e48ae..2c61282a2 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -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;
 }
 
 /**
-- 
2.20.1

Reply via email to