mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
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>
This commit is contained in:
committed by
David S. Miller
parent
ba79e9a732
commit
a7e3448086
@@ -86,6 +86,7 @@ extern const int phy_10gbit_features_array[1];
|
||||
#define PHY_IS_INTERNAL 0x00000001
|
||||
#define PHY_RST_AFTER_CLK_EN 0x00000002
|
||||
#define PHY_POLL_CABLE_TEST 0x00000004
|
||||
#define PHY_ALWAYS_CALL_SUSPEND 0x00000008
|
||||
#define MDIO_DEVICE_IS_PHY 0x80000000
|
||||
|
||||
/**
|
||||
@@ -548,6 +549,8 @@ struct macsec_ops;
|
||||
* @downshifted_rate: Set true if link speed has been downshifted.
|
||||
* @is_on_sfp_module: Set true if PHY is located on an SFP module.
|
||||
* @mac_managed_pm: Set true if MAC driver takes of suspending/resuming PHY
|
||||
* @wol_enabled: Set to true if the PHY or the attached MAC have Wake-on-LAN
|
||||
* enabled.
|
||||
* @state: State of the PHY for management purposes
|
||||
* @dev_flags: Device-specific flags used by the PHY driver.
|
||||
*
|
||||
@@ -644,6 +647,7 @@ struct phy_device {
|
||||
unsigned downshifted_rate:1;
|
||||
unsigned is_on_sfp_module:1;
|
||||
unsigned mac_managed_pm:1;
|
||||
unsigned wol_enabled:1;
|
||||
|
||||
unsigned autoneg:1;
|
||||
/* The most recently read link state */
|
||||
|
||||
Reference in New Issue
Block a user