net: phy: Allow drivers to always call into ->suspend()
authorFlorian Fainelli <f.fainelli@gmail.com>
Thu, 11 May 2023 17:21:08 +0000 (10:21 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 May 2023 15:56:29 +0000 (16:56 +0100)
commita7e3448086d580abadccff399316c6eb5ecdedbf
tree77cd87eb14fa3dcf8a9c251226cc9dcf9fbab304
parentba79e9a73284f576f336814125571432a2b3940f
net: phy: Allow drivers to always call into ->suspend()

A few PHY drivers are currently attempting to not suspend the PHY when
Wake-on-LAN is enabled, however that code is not currently executing at
all due to an early check in phy_suspend().

This prevents PHY drivers from making an appropriate decisions and put
the hardware into a low power state if desired.

In order to allow the PHY drivers to opt into getting their ->suspend
routine to be called, add a PHY_ALWAYS_CALL_SUSPEND bit which can be
set. A boolean that tracks whether the PHY or the attached MAC has
Wake-on-LAN enabled is also provided for convenience.

If phydev::wol_enabled then the PHY shall not prevent its own
Wake-on-LAN detection logic from working and shall not prevent the
Ethernet MAC from receiving packets for matching.

Reviewed-by: Simon Horman <simon.horman@corigine.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phy_device.c
include/linux/phy.h