diff options
| author | Russell King (Oracle) <rmk+kernel@armlinux.org.uk> | 2025-03-16 11:51:11 +0000 |
|---|---|---|
| committer | Paolo Abeni <pabeni@redhat.com> | 2025-03-21 21:38:36 +0100 |
| commit | 4b9235a880f13ae3443465192603b298a603b2c5 (patch) | |
| tree | abf94b9d92a8292cc1575370b6fd8272caad320f /drivers | |
| parent | 84011712209c968af1e4883fff140c84676b4e03 (diff) | |
net: phy: fix genphy_c45_eee_is_active() for disabled EEE
Commit 809265fe96fe ("net: phy: c45: remove local advertisement
parameter from genphy_c45_eee_is_active") stopped reading the local
advertisement from the PHY earlier in this development cycle, which
broke "ethtool --set-eee ethX eee off".
When ethtool is used to set EEE off, genphy_c45_eee_is_active()
indicates that EEE was active if the link partner reported an
advertisement, which causes phylib to set phydev->enable_tx_lpi on
link up, despite our local advertisement in hardware being empty.
However, phydev->advertising_eee is preserved while EEE is turned off,
which leads to genphy_c45_eee_is_active() incorrectly reporting that
EEE is active.
Fix it by checking phydev->eee_cfg.eee_enabled, and if clear,
immediately indicate that EEE is not active.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/E1ttmWN-0077Mb-Q6@rmk-PC.armlinux.org.uk
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/phy/phy-c45.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index 8a0ffc3174ec..bdd70d424491 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -1479,6 +1479,9 @@ int genphy_c45_eee_is_active(struct phy_device *phydev, unsigned long *lp) __ETHTOOL_DECLARE_LINK_MODE_MASK(common); int ret; + if (!phydev->eee_cfg.eee_enabled) + return 0; + ret = genphy_c45_read_eee_lpa(phydev, tmp_lp); if (ret) return ret; |
