Message ID | 77df52d5-a7b9-4a5c-b004-a785750a1291@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | microchip/micrel switch: replace MICREL_NO_EEE workaround | expand |
On Fri, Dec 20, 2024 at 02:51:32PM +0100, Heiner Kallweit wrote: > On several supported switches the integrated PHY's have buggy EEE. > On the GBit-capable ones it's always the same type of PHY with PHY ID > 0x00221631. So we can simplify the erratum handling by simply clearing > phydev->supported_eee for this PHY type. > > Note: The KSZ9477 PHY driver also covers e.g. the internal PHY of > KSZ9563 (ID: 0x00221637), which is unaffected by the EEE issue. > Therefore check for the exact PHY ID. > > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> > --- > drivers/net/phy/micrel.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c > index 3ef508840..ece6d026e 100644 > --- a/drivers/net/phy/micrel.c > +++ b/drivers/net/phy/micrel.c > @@ -1522,6 +1522,12 @@ static int ksz9477_get_features(struct phy_device *phydev) > if (ret) > return ret; > > + /* See KSZ9477 Errata DS80000754C Module 4 */ > + if (phydev->phy_id == PHY_ID_KSZ9477) { > + linkmode_zero(phydev->supported_eee); > + return 0; > + } Hm.. with this change, we won't be able to disable EEE. Zeroed supported_eee will avoid writing to the EEE advertisement register.
On 20.12.2024 15:40, Oleksij Rempel wrote: > On Fri, Dec 20, 2024 at 02:51:32PM +0100, Heiner Kallweit wrote: >> On several supported switches the integrated PHY's have buggy EEE. >> On the GBit-capable ones it's always the same type of PHY with PHY ID >> 0x00221631. So we can simplify the erratum handling by simply clearing >> phydev->supported_eee for this PHY type. >> >> Note: The KSZ9477 PHY driver also covers e.g. the internal PHY of >> KSZ9563 (ID: 0x00221637), which is unaffected by the EEE issue. >> Therefore check for the exact PHY ID. >> >> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> >> --- >> drivers/net/phy/micrel.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c >> index 3ef508840..ece6d026e 100644 >> --- a/drivers/net/phy/micrel.c >> +++ b/drivers/net/phy/micrel.c >> @@ -1522,6 +1522,12 @@ static int ksz9477_get_features(struct phy_device *phydev) >> if (ret) >> return ret; >> >> + /* See KSZ9477 Errata DS80000754C Module 4 */ >> + if (phydev->phy_id == PHY_ID_KSZ9477) { >> + linkmode_zero(phydev->supported_eee); >> + return 0; >> + } > > Hm.. with this change, we won't be able to disable EEE. Zeroed > supported_eee will avoid writing to the EEE advertisement register. > Indeed, genphy_c45_write_eee_adv() would become a no-op. We have to do it differently.
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index 3ef508840..ece6d026e 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1522,6 +1522,12 @@ static int ksz9477_get_features(struct phy_device *phydev) if (ret) return ret; + /* See KSZ9477 Errata DS80000754C Module 4 */ + if (phydev->phy_id == PHY_ID_KSZ9477) { + linkmode_zero(phydev->supported_eee); + return 0; + } + /* The "EEE control and capability 1" (Register 3.20) seems to be * influenced by the "EEE advertisement 1" (Register 7.60). Changes * on the 7.60 will affect 3.20. So, we need to construct our own list @@ -2000,12 +2006,6 @@ static int ksz9477_config_init(struct phy_device *phydev) return err; } - /* According to KSZ9477 Errata DS80000754C (Module 4) all EEE modes - * in this switch shall be regarded as broken. - */ - if (phydev->dev_flags & MICREL_NO_EEE) - linkmode_fill(phydev->eee_broken_modes); - return kszphy_config_init(phydev); }
On several supported switches the integrated PHY's have buggy EEE. On the GBit-capable ones it's always the same type of PHY with PHY ID 0x00221631. So we can simplify the erratum handling by simply clearing phydev->supported_eee for this PHY type. Note: The KSZ9477 PHY driver also covers e.g. the internal PHY of KSZ9563 (ID: 0x00221637), which is unaffected by the EEE issue. Therefore check for the exact PHY ID. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> --- drivers/net/phy/micrel.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)