[PATCH] net: phy: fix waiting for link

Ahmad Fatoum a.fatoum at pengutronix.de
Fri Mar 12 10:23:56 GMT 2021



On 12.03.21 11:13, Sascha Hauer wrote:
> 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")

Isn't it?

> Signed-off-by: Sascha Hauer <s.hauer at 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 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));
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list