Commit 3ebbd9f6 authored by Edward Cree's avatar Edward Cree Committed by Jakub Kicinski
Browse files

net: move ethtool-related netdev state into its own struct



net_dev->ethtool is a pointer to new struct ethtool_netdev_state, which
 currently contains only the wol_enabled field.

Suggested-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarEdward Cree <ecree.xilinx@gmail.com>
Reviewed-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
Link: https://patch.msgid.link/293a562278371de7534ed1eb17531838ca090633.1719502239.git.ecree.xilinx@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c2dd2139
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1608,7 +1608,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)

	if (!tp->dash_enabled) {
		rtl_set_d3_pll_down(tp, !wolopts);
		tp->dev->wol_enabled = wolopts ? 1 : 0;
		tp->dev->ethtool->wol_enabled = wolopts ? 1 : 0;
	}
}

@@ -5478,7 +5478,7 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
		rtl_set_d3_pll_down(tp, true);
	} else {
		rtl_set_d3_pll_down(tp, false);
		dev->wol_enabled = 1;
		dev->ethtool->wol_enabled = 1;
	}

	jumbo_max = rtl_jumbo_max(tp);
+2 −2
Original line number Diff line number Diff line
@@ -37,9 +37,9 @@ static int ngbe_set_wol(struct net_device *netdev,
	wx->wol = 0;
	if (wol->wolopts & WAKE_MAGIC)
		wx->wol = WX_PSR_WKUP_CTL_MAG;
	netdev->wol_enabled = !!(wx->wol);
	netdev->ethtool->wol_enabled = !!(wx->wol);
	wr32(wx, WX_PSR_WKUP_CTL, wx->wol);
	device_set_wakeup_enable(&pdev->dev, netdev->wol_enabled);
	device_set_wakeup_enable(&pdev->dev, netdev->ethtool->wol_enabled);

	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -650,7 +650,7 @@ static int ngbe_probe(struct pci_dev *pdev,
	if (wx->wol_hw_supported)
		wx->wol = NGBE_PSR_WKUP_CTL_MAG;

	netdev->wol_enabled = !!(wx->wol);
	netdev->ethtool->wol_enabled = !!(wx->wol);
	wr32(wx, NGBE_PSR_WKUP_CTL, wx->wol);
	device_set_wakeup_enable(&pdev->dev, wx->wol);

+1 −1
Original line number Diff line number Diff line
@@ -1309,7 +1309,7 @@ static irqreturn_t phy_interrupt(int irq, void *phy_dat)
		if (netdev) {
			struct device *parent = netdev->dev.parent;

			if (netdev->wol_enabled)
			if (netdev->ethtool->wol_enabled)
				pm_system_wakeup();
			else if (device_may_wakeup(&netdev->dev))
				pm_wakeup_dev_event(&netdev->dev, 0, true);
+3 −2
Original line number Diff line number Diff line
@@ -296,7 +296,7 @@ static bool mdio_bus_phy_may_suspend(struct phy_device *phydev)
	if (!netdev)
		goto out;

	if (netdev->wol_enabled)
	if (netdev->ethtool->wol_enabled)
		return false;

	/* As long as not all affected network drivers support the
@@ -1984,7 +1984,8 @@ int phy_suspend(struct phy_device *phydev)
		return 0;

	phy_ethtool_get_wol(phydev, &wol);
	phydev->wol_enabled = wol.wolopts || (netdev && netdev->wol_enabled);
	phydev->wol_enabled = wol.wolopts ||
			      (netdev && netdev->ethtool->wol_enabled);
	/* If the device has WOL enabled, we cannot suspend the PHY */
	if (phydev->wol_enabled && !(phydrv->flags & PHY_ALWAYS_CALL_SUSPEND))
		return -EBUSY;
Loading