Re: [PATCH] net phy: Check for aneg completion before setting state to PHY_RUNNING
From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2014-05-01 02:12:14
2014-04-23 19:52 GMT-07:00 Balakumaran Kannan [off-list ref]:
phy_state_machine should check whether auto-negotiatin is completed before changing phydev->state from PHY_NOLINK to PHY_RUNNING. If auto-negotiation is not completed phydev->state should be set to PHY_AN. Signed-off-by: Balakumaran Kannan <redacted>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
quoted hunk ↗ jump to hunk
--- drivers/net/phy/phy.c | 11 +++++++++++ 1 file changed, 11 insertions(+)diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 1b6d09a..a972056 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c@@ -765,6 +765,17 @@ void phy_state_machine(struct work_struct *work) break; if (phydev->link) { + if (AUTONEG_ENABLE == phydev->autoneg) { + err = phy_aneg_done(phydev); + if (err < 0) + break; + + if (!err) { + phydev->state = PHY_AN; + phydev->link_timeout = PHY_AN_TIMEOUT; + break; + } + } phydev->state = PHY_RUNNING; netif_carrier_on(phydev->attached_dev); phydev->adjust_link(phydev->attached_dev); --1.8.2.1
-- Florian