|
Takashi Iwai |
4aa027 |
From c056d480b40a68f2520ccc156c7fae672d69d57d Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
4aa027 |
From: Florian Fainelli <f.fainelli@gmail.com>
|
|
Takashi Iwai |
4aa027 |
Date: Tue, 30 Mar 2021 15:00:24 -0700
|
|
Takashi Iwai |
4aa027 |
Subject: [PATCH] net: phy: broadcom: Only advertise EEE for supported modes
|
|
Takashi Iwai |
4aa027 |
Git-commit: c056d480b40a68f2520ccc156c7fae672d69d57d
|
|
Takashi Iwai |
4aa027 |
Patch-mainline: v5.12-rc7
|
|
Takashi Iwai |
4aa027 |
References: git-fixes
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
We should not be advertising EEE for modes that we do not support,
|
|
Takashi Iwai |
4aa027 |
correct that oversight by looking at the PHY device supported linkmodes.
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
Fixes: 99cec8a4dda2 ("net: phy: broadcom: Allow enabling or disabling of EEE")
|
|
Takashi Iwai |
4aa027 |
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|
Takashi Iwai |
4aa027 |
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Takashi Iwai |
4aa027 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
---
|
|
Takashi Iwai |
4aa027 |
drivers/net/phy/bcm-phy-lib.c | 13 ++++++++++---
|
|
Takashi Iwai |
4aa027 |
1 file changed, 10 insertions(+), 3 deletions(-)
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
diff --git a/drivers/net/phy/bcm-phy-lib.c b/drivers/net/phy/bcm-phy-lib.c
|
|
Takashi Iwai |
4aa027 |
index 53282a6d5928..287cccf8f7f4 100644
|
|
Takashi Iwai |
4aa027 |
--- a/drivers/net/phy/bcm-phy-lib.c
|
|
Takashi Iwai |
4aa027 |
+++ b/drivers/net/phy/bcm-phy-lib.c
|
|
Takashi Iwai |
4aa027 |
@@ -369,7 +369,7 @@ EXPORT_SYMBOL_GPL(bcm_phy_enable_apd);
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
int bcm_phy_set_eee(struct phy_device *phydev, bool enable)
|
|
Takashi Iwai |
4aa027 |
{
|
|
Takashi Iwai |
4aa027 |
- int val;
|
|
Takashi Iwai |
4aa027 |
+ int val, mask = 0;
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
/* Enable EEE at PHY level */
|
|
Takashi Iwai |
4aa027 |
val = phy_read_mmd(phydev, MDIO_MMD_AN, BRCM_CL45VEN_EEE_CONTROL);
|
|
Takashi Iwai |
4aa027 |
@@ -388,10 +388,17 @@ int bcm_phy_set_eee(struct phy_device *phydev, bool enable)
|
|
Takashi Iwai |
4aa027 |
if (val < 0)
|
|
Takashi Iwai |
4aa027 |
return val;
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
+ if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
|
|
Takashi Iwai |
4aa027 |
+ phydev->supported))
|
|
Takashi Iwai |
4aa027 |
+ mask |= MDIO_EEE_1000T;
|
|
Takashi Iwai |
4aa027 |
+ if (linkmode_test_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
|
|
Takashi Iwai |
4aa027 |
+ phydev->supported))
|
|
Takashi Iwai |
4aa027 |
+ mask |= MDIO_EEE_100TX;
|
|
Takashi Iwai |
4aa027 |
+
|
|
Takashi Iwai |
4aa027 |
if (enable)
|
|
Takashi Iwai |
4aa027 |
- val |= (MDIO_EEE_100TX | MDIO_EEE_1000T);
|
|
Takashi Iwai |
4aa027 |
+ val |= mask;
|
|
Takashi Iwai |
4aa027 |
else
|
|
Takashi Iwai |
4aa027 |
- val &= ~(MDIO_EEE_100TX | MDIO_EEE_1000T);
|
|
Takashi Iwai |
4aa027 |
+ val &= ~mask;
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
phy_write_mmd(phydev, MDIO_MMD_AN, BCM_CL45VEN_EEE_ADV, (u32)val);
|
|
Takashi Iwai |
4aa027 |
|
|
Takashi Iwai |
4aa027 |
--
|
|
Takashi Iwai |
4aa027 |
2.26.2
|
|
Takashi Iwai |
4aa027 |
|