diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2021-04-07 17:51:56 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-04-09 16:37:04 -0700 |
commit | fba863b816049b03f3fbb07b10ebdcfe5c4141f7 (patch) | |
tree | 9c8f673bdee583c27982a773af884d7af1b1c470 /include/linux/phy.h | |
parent | a7150e382267d5d2bb3e1a2a07776e97646b0952 (diff) | |
download | linux-stable-fba863b816049b03f3fbb07b10ebdcfe5c4141f7.tar.gz linux-stable-fba863b816049b03f3fbb07b10ebdcfe5c4141f7.tar.bz2 linux-stable-fba863b816049b03f3fbb07b10ebdcfe5c4141f7.zip |
net: phy: make PHY PM ops a no-op if MAC driver manages PHY PM
Resume callback of the PHY driver is called after the one for the MAC
driver. The PHY driver resume callback calls phy_init_hw(), and this is
potentially problematic if the MAC driver calls phy_start() in its resume
callback. One issue was reported with the fec driver and a KSZ8081 PHY
which seems to become unstable if a soft reset is triggered during aneg.
The new flag allows MAC drivers to indicate that they take care of
suspending/resuming the PHY. Then the MAC PM callbacks can handle
any dependency between MAC and PHY PM.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/linux/phy.h')
-rw-r--r-- | include/linux/phy.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/phy.h b/include/linux/phy.h index 8e2cf84b2318..98fb441dd72e 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -493,6 +493,7 @@ struct macsec_ops; * @loopback_enabled: Set true if this PHY has been loopbacked successfully. * @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 * @state: State of the PHY for management purposes * @dev_flags: Device-specific flags used by the PHY driver. * @irq: IRQ number of the PHY's interrupt (-1 if none) @@ -567,6 +568,7 @@ struct phy_device { unsigned loopback_enabled:1; unsigned downshifted_rate:1; unsigned is_on_sfp_module:1; + unsigned mac_managed_pm:1; unsigned autoneg:1; /* The most recently read link state */ |