Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e46e08b8 authored by Balakumaran Kannan's avatar Balakumaran Kannan Committed by David S. Miller
Browse files

net phy: Check for aneg completion before setting state to PHY_RUNNING



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: default avatarBalakumaran Kannan <kumaran.4353@gmail.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 22041fb0
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -765,6 +765,17 @@ void phy_state_machine(struct work_struct *work)
			break;
			break;


		if (phydev->link) {
		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;
			phydev->state = PHY_RUNNING;
			netif_carrier_on(phydev->attached_dev);
			netif_carrier_on(phydev->attached_dev);
			phydev->adjust_link(phydev->attached_dev);
			phydev->adjust_link(phydev->attached_dev);