Commit 9ee09edc authored by Florian Fainelli's avatar Florian Fainelli Committed by Jakub Kicinski
Browse files

net: bcmgenet: Properly overlay PHY and MAC Wake-on-LAN capabilities



Some Wake-on-LAN modes such as WAKE_FILTER may only be supported by the MAC,
while others might be only supported by the PHY. Make sure that the .get_wol()
returns the union of both rather than only that of the PHY if the PHY supports
Wake-on-LAN.

Fixes: 7e400ff3 ("net: bcmgenet: Add support for PHY-based Wake-on-LAN")
Signed-off-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20240806175659.3232204-1-florian.fainelli@broadcom.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 86a41ea9
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -42,19 +42,15 @@ void bcmgenet_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
	struct bcmgenet_priv *priv = netdev_priv(dev);
	struct device *kdev = &priv->pdev->dev;

	if (dev->phydev) {
	if (dev->phydev)
		phy_ethtool_get_wol(dev->phydev, wol);
		if (wol->supported)
			return;
	}

	if (!device_can_wakeup(kdev)) {
		wol->supported = 0;
		wol->wolopts = 0;
	/* MAC is not wake-up capable, return what the PHY does */
	if (!device_can_wakeup(kdev))
		return;
	}

	wol->supported = WAKE_MAGIC | WAKE_MAGICSECURE | WAKE_FILTER;
	/* Overlay MAC capabilities with that of the PHY queried before */
	wol->supported |= WAKE_MAGIC | WAKE_MAGICSECURE | WAKE_FILTER;
	wol->wolopts = priv->wolopts;
	memset(wol->sopass, 0, sizeof(wol->sopass));