diff options
author | Russell King (Oracle) <rmk+kernel@armlinux.org.uk> | 2023-06-01 09:48:20 +0100 |
---|---|---|
committer | Russell King (Oracle) <rmk+kernel@armlinux.org.uk> | 2024-05-02 12:16:37 +0100 |
commit | 97382104d4bdef38bea9b6fc1469ae478cc66afd (patch) | |
tree | 1ba7e1bef1f1142321c5abeda69f695b91da5734 /drivers/net | |
parent | 9d106acf519d74d5413ecd2fc13d3fdbd5f657b8 (diff) |
net: phylink: allow EEE management for SFPs without PHYs
Allow EEE management for SFPs without accessible PHYs.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/phy/phylink.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index 10df48be457f..d60be55734a9 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -2848,6 +2848,8 @@ int phylink_init_eee(struct phylink *pl, bool clk_stop_enable) if (pl->phydev) ret = phy_init_eee(pl->phydev, clk_stop_enable); + else if (pl->sfp_bus && phylink_mac_supports_eee(pl)) + ret = 0; return ret; } @@ -2864,8 +2866,13 @@ int phylink_ethtool_get_eee(struct phylink *pl, struct ethtool_eee *eee) ASSERT_RTNL(); - if (pl->phydev) + if (pl->phydev) { ret = phy_ethtool_get_eee(pl->phydev, eee); + } else if (pl->sfp_bus && phylink_mac_supports_eee(pl)) { + /* For optical SFPs, ensure that eee->supported is nonzero. */ + eee->supported = SUPPORTED_FIBRE; + ret = 0; + } if (!ret && phylink_mac_supports_eee(pl)) { /* Overwrite phylib's interpretation of configuration */ @@ -2905,6 +2912,8 @@ int phylink_ethtool_set_eee(struct phylink *pl, struct ethtool_eee *eee) if (pl->phydev) ret = phy_ethtool_set_eee(pl->phydev, eee); + else if (pl->sfp_bus && phylink_mac_supports_eee(pl)) + ret = 0; if (!ret && mac_eee) { bool can_lpi, old_can_lpi; |