From: Sascha Hauer Date: Fri, 12 Mar 2021 11:13:09 +0100 Subject: [PATCH] net: phy: fix waiting for link phydev->adjust_link() is called only from phy_update_status() when the link status changes during that function. phydev->link is also updated in genphy_update_link() called from phy_wait_aneg_done(), so it can happen that phydev->link changes outside of phy_update_status(), thus phydev->adjust_link is never called and no link change notice is printed. Instead of calling genphy_update_link() from phy_wait_aneg_done(), call phy_update_status(). This makes sure that a link change is properly noticed. Fixes: 8f75aa496dcb ("net: reply to ping requests") Signed-off-by: Sascha Hauer Link: https://lore.pengutronix.de/20210312101309.29650-1-s.hauer@pengutronix.de --- drivers/net/phy/phy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 622acbe40dd9..e8e8dad5bd25 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -571,7 +571,7 @@ int phy_wait_aneg_done(struct phy_device *phydev) } do { - genphy_update_link(phydev); + phy_update_status(phydev); if (phydev->link == 1) return 0; } while (!is_timeout(start, PHY_AN_TIMEOUT * SECOND));