Re: [PATCH 2/2] net: dsa: microchip: Provide Module 4 KSZ9477 errata (DS80000754C)
From: Oleksij Rempel <o.rempel@pengutronix.de>
Date: 2023-08-29 17:13:12
Also in:
lkml
On Tue, Aug 29, 2023 at 05:29:13PM +0200, Lukasz Majewski wrote:
Hi Oleksij,quoted
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/ (local) -------->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<-------------quoted
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 |