net: phy: Encapsulate actions performed during link state changes into function phy_adjust_link
During phy state machine state transitions some set of actions should occur whenever the link state changes. These actions should be encapsulated into a single function This patch adds the phy_adjust_link function, which is called whenever phydev->adjust_link would have been called before. Actions that should occur whenever the phy link is adjusted can now be added to the phy_adjust_link function. Signed-off-by: Zach Brown <zach.brown@ni.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0e0f27dd65
commit
61a179657f
|
@ -908,6 +908,11 @@ void phy_start(struct phy_device *phydev)
|
|||
}
|
||||
EXPORT_SYMBOL(phy_start);
|
||||
|
||||
static void phy_adjust_link(struct phy_device *phydev)
|
||||
{
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_state_machine - Handle the state machine
|
||||
* @work: work_struct that describes the work to be done
|
||||
|
@ -950,7 +955,7 @@ void phy_state_machine(struct work_struct *work)
|
|||
if (!phydev->link) {
|
||||
phydev->state = PHY_NOLINK;
|
||||
netif_carrier_off(phydev->attached_dev);
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
phy_adjust_link(phydev);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -963,7 +968,7 @@ void phy_state_machine(struct work_struct *work)
|
|||
if (err > 0) {
|
||||
phydev->state = PHY_RUNNING;
|
||||
netif_carrier_on(phydev->attached_dev);
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
phy_adjust_link(phydev);
|
||||
|
||||
} else if (0 == phydev->link_timeout--)
|
||||
needs_aneg = true;
|
||||
|
@ -990,7 +995,7 @@ void phy_state_machine(struct work_struct *work)
|
|||
}
|
||||
phydev->state = PHY_RUNNING;
|
||||
netif_carrier_on(phydev->attached_dev);
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
phy_adjust_link(phydev);
|
||||
}
|
||||
break;
|
||||
case PHY_FORCING:
|
||||
|
@ -1006,7 +1011,7 @@ void phy_state_machine(struct work_struct *work)
|
|||
needs_aneg = true;
|
||||
}
|
||||
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
phy_adjust_link(phydev);
|
||||
break;
|
||||
case PHY_RUNNING:
|
||||
/* Only register a CHANGE if we are polling and link changed
|
||||
|
@ -1035,7 +1040,7 @@ void phy_state_machine(struct work_struct *work)
|
|||
netif_carrier_off(phydev->attached_dev);
|
||||
}
|
||||
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
phy_adjust_link(phydev);
|
||||
|
||||
if (phy_interrupt_is_valid(phydev))
|
||||
err = phy_config_interrupt(phydev,
|
||||
|
@ -1045,7 +1050,7 @@ void phy_state_machine(struct work_struct *work)
|
|||
if (phydev->link) {
|
||||
phydev->link = 0;
|
||||
netif_carrier_off(phydev->attached_dev);
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
phy_adjust_link(phydev);
|
||||
do_suspend = true;
|
||||
}
|
||||
break;
|
||||
|
@ -1069,7 +1074,7 @@ void phy_state_machine(struct work_struct *work)
|
|||
} else {
|
||||
phydev->state = PHY_NOLINK;
|
||||
}
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
phy_adjust_link(phydev);
|
||||
} else {
|
||||
phydev->state = PHY_AN;
|
||||
phydev->link_timeout = PHY_AN_TIMEOUT;
|
||||
|
@ -1085,7 +1090,7 @@ void phy_state_machine(struct work_struct *work)
|
|||
} else {
|
||||
phydev->state = PHY_NOLINK;
|
||||
}
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
phy_adjust_link(phydev);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue