On Sat, Oct 31, 2015 at 02:07:52PM +0100, Anton Bondarenko wrote: > It may take some time for PHY to indicate link OK status after > autonegotiation completed. This change addresses this case > and prevent network commands fails due to the delay. > > Signed-off-by: Anton Bondarenko <anton.bondarenko.sama@xxxxxxxxx> > --- > drivers/net/phy/phy.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c > index 2b3c5e2..73569f3 100644 > --- a/drivers/net/phy/phy.c > +++ b/drivers/net/phy/phy.c > @@ -502,13 +502,17 @@ int phy_wait_aneg_done(struct phy_device *phydev) > return 0; > > while (!is_timeout(start, PHY_AN_TIMEOUT * SECOND)) { > - if (phy_aneg_done(phydev) > 0) { > - phydev->link = 1; > + if (phy_aneg_done(phydev) > 0) > + break; > + } > + > + genphy_update_link(phydev); > + while (!is_timeout(start, PHY_AN_TIMEOUT * SECOND)) { > + if (phydev->link == 1) > return 0; > - } > + genphy_update_link(phydev); > } The additional call to genphy_update_link() before the loop shouldn't be necessary, right? Or to be 100% correct you could use a do {} while loop to make sure to always call genphy_update_link() at least once. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox