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 | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 2b3c5e2..25c999c 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -502,13 +502,16 @@ 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; - return 0; - } + if (phy_aneg_done(phydev) > 0) + break; } - phydev->link = 0; + do { + genphy_update_link(phydev); + if (phydev->link == 1) + return 0; + } while (!is_timeout(start, PHY_AN_TIMEOUT * SECOND)); + return -ETIMEDOUT; } -- 2.6.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox