Messages in this thread Patch in this message | | | Date | Tue, 29 Aug 2023 19:12:05 +0200 | From | Oleksij Rempel <> | Subject | Re: [PATCH 2/2] net: dsa: microchip: Provide Module 4 KSZ9477 errata (DS80000754C) |
| |
On Tue, Aug 29, 2023 at 05:29:13PM +0200, Lukasz Majewski wrote: > Hi Oleksij, > > On other hand, since this functionality is not listed as supported by > > the KSZ9477 datasheet (No word about IEEE 802.3az Energy Efficient > > Ethernet (EEE)) compared to KSZ8565R datasheet (where EEE support is > > listed) and it is confirmed to work not stable enough, then it should > > be disabled properly. > > I've described this problem in more details here: > https://lore.kernel.org/lkml/20230829132429.529283be@wsk/ > > -------->8--------- > The issue is that ksz9477_config_init() (drivers/net/phy/micrel.c) is > executed AFTER generic phy_probe(): > https://elixir.bootlin.com/linux/latest/source/drivers/net/phy/phy_device.c#L3256 > in which the EEE advertisement registers are read. > > Hence, those registers needs to be cleared earlier - as I do in > ksz9477_setup() in drivers/net/dsa/microchip/ksz9477. > > Here the precedence matters ... > ----------8<------------- > > > The phydev->supported_eee should be cleared. > > See ksz9477_get_features(). > > > > Removing the linkmod_and() from ksz9477_get_features(): > https://elixir.bootlin.com/linux/latest/source/drivers/net/phy/micrel.c#L1408 > > doesn't help.
Yes, removing linkmod_and() will not should not help. I said, "The phydev->supported_eee should be cleared."
For example like this: --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1400,6 +1400,7 @@ static int ksz9131_config_aneg(struct phy_device *phydev) static int ksz9477_get_features(struct phy_device *phydev) { + __ETHTOOL_DECLARE_LINK_MODE_MASK(zero) = { 0, }; int ret; ret = genphy_read_abilities(phydev); @@ -1413,7 +1414,7 @@ static int ksz9477_get_features(struct phy_device *phydev) * KSZ8563R should have 100BaseTX/Full only. */ linkmode_and(phydev->supported_eee, phydev->supported, - PHY_EEE_CAP1_FEATURES); + zero); return 0; } You will need to clear it only on KSZ9477 variants with this bug. This change is tested and it works on my KSZ9477-EVB.
Regards, Oleksij -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
| |