diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/phy/phy.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 58546f8546..d7e6b3d5b9 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -400,11 +400,14 @@ int genphy_setup_forced(struct phy_device *phydev) return err; } -static int phy_aneg_done(struct phy_device *phydev) +int phy_wait_aneg_done(struct phy_device *phydev) { uint64_t start = get_time_ns(); int ctl; + if (phydev->autoneg == AUTONEG_DISABLE) + return 0; + while (!is_timeout(start, PHY_AN_TIMEOUT * SECOND)) { ctl = phy_read(phydev, MII_BMSR); if (ctl & BMSR_ANEGCOMPLETE) { @@ -451,7 +454,7 @@ int genphy_restart_aneg(struct phy_device *phydev) if (ctl < 0) return ctl; - return phy_aneg_done(phydev); + return 0; } /** |