Commit 7f33fea6 authored by Heiner Kallweit's avatar Heiner Kallweit Committed by Jakub Kicinski
Browse files

net: phy: remove disabled EEE modes from advertising_eee in phy_probe



A PHY driver may populate eee_disabled_modes in its probe or get_features
callback, therefore filter the EEE advertisement read from the PHY.

Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/493f3e2e-9cfc-445d-adbe-58d9c117a489@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent a9b6a860
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -3580,22 +3580,21 @@ static int phy_probe(struct device *dev)
	if (err)
		goto out;

	/* There is no "enabled" flag. If PHY is advertising, assume it is
	 * kind of enabled.
	 */
	phydev->eee_cfg.eee_enabled = !linkmode_empty(phydev->advertising_eee);
	/* Get the EEE modes we want to prohibit. */
	of_set_phy_eee_broken(phydev);

	/* Some PHYs may advertise, by default, not support EEE modes. So,
	 * we need to clean them.
	 * we need to clean them. In addition remove all disabled EEE modes.
	 */
	if (phydev->eee_cfg.eee_enabled)
	linkmode_and(phydev->advertising_eee, phydev->supported_eee,
		     phydev->advertising_eee);
	linkmode_andnot(phydev->advertising_eee, phydev->advertising_eee,
			phydev->eee_disabled_modes);

	/* Get the EEE modes we want to prohibit. We will ask
	 * the PHY stop advertising these mode later on
	/* There is no "enabled" flag. If PHY is advertising, assume it is
	 * kind of enabled.
	 */
	of_set_phy_eee_broken(phydev);
	phydev->eee_cfg.eee_enabled = !linkmode_empty(phydev->advertising_eee);

	/* Get master/slave strap overrides */
	of_set_phy_timing_role(phydev);