net: phy: fix setting autoneg_complete in genphy_update_link
authorHeiner Kallweit <hkallweit1@gmail.com>
Mon, 8 Apr 2019 17:28:28 +0000 (19:28 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 8 Apr 2019 23:35:52 +0000 (16:35 -0700)
The original patch didn't set phydev->autoneg_complete in one exit path.
Fix this.

Fixes: 4950c2ba49cc ("net: phy: fix autoneg mismatch case in genphy_read_status")
Reported-by: Simon Horman <horms@verge.net.au>
Tested-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phy_device.c

index 20b9ccd63345c9bd30a610819ab79ed76aee061b..48adb3d1f1ee3f24e4e939f6ee62604d2dd92c38 100644 (file)
@@ -1710,19 +1710,17 @@ int genphy_update_link(struct phy_device *phydev)
         */
        if (!phy_polling_mode(phydev)) {
                status = phy_read(phydev, MII_BMSR);
-               if (status < 0) {
+               if (status < 0)
                        return status;
-               } else if (status & BMSR_LSTATUS) {
-                       phydev->link = 1;
-                       return 0;
-               }
+               else if (status & BMSR_LSTATUS)
+                       goto done;
        }
 
        /* Read link and autonegotiation status */
        status = phy_read(phydev, MII_BMSR);
        if (status < 0)
                return status;
-
+done:
        phydev->link = status & BMSR_LSTATUS ? 1 : 0;
        phydev->autoneg_complete = status & BMSR_ANEGCOMPLETE ? 1 : 0;