Message ID | 64f2055e-98b8-45ec-8568-665e3d54d4e6@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 5d872c9f46bd2ea3524af3c2420a364a13667135 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d | expand |
On Sat, Mar 30, 2024 at 12:49:02PM +0100, Heiner Kallweit wrote: > On some boards with this chip version the BIOS is buggy and misses > to reset the PHY page selector. This results in the PHY ID read > accessing registers on a different page, returning a more or > less random value. Fix this by resetting the page selector first. > > Fixes: f1e911d5d0df ("r8169: add basic phylib support") > Cc: stable@vger.kernel.org > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Simon Horman <horms@kernel.org>
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Sat, 30 Mar 2024 12:49:02 +0100 you wrote: > On some boards with this chip version the BIOS is buggy and misses > to reset the PHY page selector. This results in the PHY ID read > accessing registers on a different page, returning a more or > less random value. Fix this by resetting the page selector first. > > Fixes: f1e911d5d0df ("r8169: add basic phylib support") > Cc: stable@vger.kernel.org > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> > > [...] Here is the summary with links: - [net] r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d https://git.kernel.org/netdev/net/c/5d872c9f46bd You are awesome, thank you!
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index 5c879a5c8..3936db3d4 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -5141,6 +5141,15 @@ static int r8169_mdio_register(struct rtl8169_private *tp) struct mii_bus *new_bus; int ret; + /* On some boards with this chip version the BIOS is buggy and misses + * to reset the PHY page selector. This results in the PHY ID read + * accessing registers on a different page, returning a more or + * less random value. Fix this by resetting the page selector first. + */ + if (tp->mac_version == RTL_GIGA_MAC_VER_25 || + tp->mac_version == RTL_GIGA_MAC_VER_26) + r8169_mdio_write(tp, 0x1f, 0); + new_bus = devm_mdiobus_alloc(&pdev->dev); if (!new_bus) return -ENOMEM;
On some boards with this chip version the BIOS is buggy and misses to reset the PHY page selector. This results in the PHY ID read accessing registers on a different page, returning a more or less random value. Fix this by resetting the page selector first. Fixes: f1e911d5d0df ("r8169: add basic phylib support") Cc: stable@vger.kernel.org Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> --- drivers/net/ethernet/realtek/r8169_main.c | 9 +++++++++ 1 file changed, 9 insertions(+)