Skip to content

Commit fde5cc8

Browse files
nbuchwitzpelwell
authored andcommitted
net: phy: honor eee_disabled_modes in phy_support_eee()
phy_support_eee() copies supported_eee into advertising_eee unconditionally, overwriting any filtering that was applied during phy_probe() based on DT eee-broken-* properties or driver-populated eee_disabled_modes. As a result, MAC drivers that call phy_support_eee() after probe (e.g. bcmgenet, fec, lan743x, lan78xx, r8169) cause the PHY to advertise EEE for modes the user marked as broken. The symptom is that ethtool --show-eee on the local interface reports "not supported" (supported & ~eee_disabled_modes is empty) while the link partner sees EEE negotiated and active. phy_probe() already filters advertising_eee via eee_disabled_modes after calling of_set_phy_eee_broken(). Apply the same mask in phy_support_eee() so the filtering survives the copy. Fixes: 49168d1 ("net: phy: Add phy_support_eee() indicating MAC support EEE") Signed-off-by: Nicolai Buchwitz <nb@tipi-net.de>
1 parent a72a008 commit fde5cc8

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

drivers/net/phy/phy_device.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2818,7 +2818,8 @@ EXPORT_SYMBOL_GPL(phy_advertise_eee_all);
28182818
*/
28192819
void phy_support_eee(struct phy_device *phydev)
28202820
{
2821-
linkmode_copy(phydev->advertising_eee, phydev->supported_eee);
2821+
linkmode_andnot(phydev->advertising_eee, phydev->supported_eee,
2822+
phydev->eee_disabled_modes);
28222823
phydev->eee_cfg.tx_lpi_enabled = true;
28232824
phydev->eee_cfg.eee_enabled = true;
28242825
}

0 commit comments

Comments
 (0)