Message ID | 20200304201247.29978-1-simon.k.r.goldschmidt@gmail.com |
---|---|
State | New |
Headers | show |
Series | net: phy: fix autoneg timeout | expand |
Hi Simon, On 04.03.20 21:12, Simon Goldschmidt wrote: > Recently, genphy_update_link() has been changed to use a 50ms polling > interval instead of the previous 1ms. However, the timeout to give up > waiting for a link remained unchanged, calculating the iterations. > > As a result, PHY_ANEG_TIMEOUT now specifies "multiples of 50ms" instead > of just to be a number of milliseconds. > > Fix this by dividing PHY_ANEG_TIMEOUT by 50 in this loop. This gets us > back to a 4 seconds timeout for the default value (instead of 200s). > > Fixes: net: phy: Increase link up delay in genphy_update_link() ("27c3f70f3b50") > Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com> > --- > > This should be applied before the next release as it fixes a regression > of v2020.01! > > 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 80a7664e49..5cf9c165b6 100644 > --- a/drivers/net/phy/phy.c > +++ b/drivers/net/phy/phy.c > @@ -244,7 +244,7 @@ int genphy_update_link(struct phy_device *phydev) > /* > * Timeout reached ? > */ > - if (i > PHY_ANEG_TIMEOUT) { > + if (i > (PHY_ANEG_TIMEOUT / 50)) { > printf(" TIMEOUT !\n"); > phydev->link = 0; > return -ETIMEDOUT; > A similar fix from Andre for this is queued for this for quite some time now: https://patchwork.ozlabs.org/patch/1217524/ Joe or Tom, could you please take this one? Thanks, Stefan
On Thu, Mar 5, 2020 at 5:40 AM Stefan Roese <sr at denx.de> wrote: > > Hi Simon, > > On 04.03.20 21:12, Simon Goldschmidt wrote: > > Recently, genphy_update_link() has been changed to use a 50ms polling > > interval instead of the previous 1ms. However, the timeout to give up > > waiting for a link remained unchanged, calculating the iterations. > > > > As a result, PHY_ANEG_TIMEOUT now specifies "multiples of 50ms" instead > > of just to be a number of milliseconds. > > > > Fix this by dividing PHY_ANEG_TIMEOUT by 50 in this loop. This gets us > > back to a 4 seconds timeout for the default value (instead of 200s). > > > > Fixes: net: phy: Increase link up delay in genphy_update_link() ("27c3f70f3b50") > > Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com> > > --- > > > > This should be applied before the next release as it fixes a regression > > of v2020.01! > > > > 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 80a7664e49..5cf9c165b6 100644 > > --- a/drivers/net/phy/phy.c > > +++ b/drivers/net/phy/phy.c > > @@ -244,7 +244,7 @@ int genphy_update_link(struct phy_device *phydev) > > /* > > * Timeout reached ? > > */ > > - if (i > PHY_ANEG_TIMEOUT) { > > + if (i > (PHY_ANEG_TIMEOUT / 50)) { > > printf(" TIMEOUT !\n"); > > phydev->link = 0; > > return -ETIMEDOUT; > > > > A similar fix from Andre for this is queued for this for quite some > time now: > > https://patchwork.ozlabs.org/patch/1217524/ Right. I thought I remembered a patch but hadn't found it... I'll drop this one then. Regards, Simon > > Joe or Tom, could you please take this one? > > Thanks, > Stefan
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 80a7664e49..5cf9c165b6 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -244,7 +244,7 @@ int genphy_update_link(struct phy_device *phydev) /* * Timeout reached ? */ - if (i > PHY_ANEG_TIMEOUT) { + if (i > (PHY_ANEG_TIMEOUT / 50)) { printf(" TIMEOUT !\n"); phydev->link = 0; return -ETIMEDOUT;
Recently, genphy_update_link() has been changed to use a 50ms polling interval instead of the previous 1ms. However, the timeout to give up waiting for a link remained unchanged, calculating the iterations. As a result, PHY_ANEG_TIMEOUT now specifies "multiples of 50ms" instead of just to be a number of milliseconds. Fix this by dividing PHY_ANEG_TIMEOUT by 50 in this loop. This gets us back to a 4 seconds timeout for the default value (instead of 200s). Fixes: net: phy: Increase link up delay in genphy_update_link() ("27c3f70f3b50") Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com> --- This should be applied before the next release as it fixes a regression of v2020.01! drivers/net/phy/phy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)