net: phy: broadcom: Only advertise EEE for supported modes
commit c056d480b40a68f2520ccc156c7fae672d69d57d upstream We should not be advertising EEE for modes that we do not support, correct that oversight by looking at the PHY device supported linkmodes. Fixes: 99cec8a4dda2 ("net: phy: broadcom: Allow enabling or disabling of EEE") Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
4f17a45f8e
commit
8872a0d949
@ -198,7 +198,7 @@ EXPORT_SYMBOL_GPL(bcm_phy_enable_apd);
|
||||
|
||||
int bcm_phy_set_eee(struct phy_device *phydev, bool enable)
|
||||
{
|
||||
int val;
|
||||
int val, mask = 0;
|
||||
|
||||
/* Enable EEE at PHY level */
|
||||
val = phy_read_mmd(phydev, MDIO_MMD_AN, BRCM_CL45VEN_EEE_CONTROL);
|
||||
@ -217,10 +217,15 @@ int bcm_phy_set_eee(struct phy_device *phydev, bool enable)
|
||||
if (val < 0)
|
||||
return val;
|
||||
|
||||
if (phydev->supported & SUPPORTED_1000baseT_Full)
|
||||
mask |= MDIO_EEE_1000T;
|
||||
if (phydev->supported & SUPPORTED_100baseT_Full)
|
||||
mask |= MDIO_EEE_100TX;
|
||||
|
||||
if (enable)
|
||||
val |= (MDIO_EEE_100TX | MDIO_EEE_1000T);
|
||||
val |= mask;
|
||||
else
|
||||
val &= ~(MDIO_EEE_100TX | MDIO_EEE_1000T);
|
||||
val &= ~mask;
|
||||
|
||||
phy_write_mmd(phydev, MDIO_MMD_AN, BCM_CL45VEN_EEE_ADV, (u32)val);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user