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 <ho...@verge.net.au>
Tested-by: Simon Horman <ho...@verge.net.au>
Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com>
---
 drivers/net/phy/phy_device.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index a6f3ad971..2df8f7737 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -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;
 
-- 
2.21.0

Reply via email to