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

Commit 61a17965 authored by Zach Brown's avatar Zach Brown Committed by David S. Miller
Browse files

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: default avatarZach Brown <zach.brown@ni.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0e0f27dd
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -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;
	}