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. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- 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 622acbe40d..e8e8dad5bd 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)); -- 2.29.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox