From f71ff7d406523748bfb8236830c7eaa6a308aaa1 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Tue, 20 Oct 2026 12:15:42 -0400 Subject: r8169: clear TX LPI on RTL8168h at link up after phylink conversion Commit 3cdeaef1754a ("r8169: disable EEE on RTL8168h/8111h") disables EEE on RTL_GIGA_MAC_VER_46 with phy_disable_eee() but keeps the version EEE-capable, so that link up still calls rtl_enable_tx_lpi(tp, false) and clears the MAC TX-LPI bits (ERI 0x1b0[1:0]). rtl_hw_start_8168h_1() does not clear them, so a warm reboot from an EEE-active state could otherwise leave TX-LPI asserted while the PHY no longer negotiates EEE. In net-next, commit 8a3c76523e44 ("r8169: add support for phylink") moved link handling to phylink, and rtl_mac_link_up() does not touch the TX-LPI bits. The merge of net into net-next kept the phy_disable_eee() quirk and its comment, but not the link-up clear it depends on. The only remaining clear is rtl_mac_disable_tx_lpi(), which phylink calls from phylink_deactivate_lpi() only after phylink_activate_lpi() has enabled LPI. With EEE disabled on this chip that never happens, so the bits are never cleared and the comment in r8169_mdio_register() no longer holds. Clear TX-LPI explicitly in rtl_mac_link_up() for RTL_GIGA_MAC_VER_46. Fixes: f49defea7668 ("Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net") Link: https://lore.kernel.org/all/0e0b727e94d046b19ad463e7a1a9fe68@realsil.com.cn/ Signed-off-by: Sasha Levin Link: https://patch.msgid.link/20261020161543.3712208-1-sashal@kernel.org Signed-off-by: Jakub Kicinski --- drivers/net/ethernet/realtek/r8169_main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index 88354e7570f0..cd4ebc654dd0 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -6428,6 +6428,8 @@ static void rtl_mac_link_up(struct phylink_config *config, tp->speed = speed; rtl_link_chg_patch(tp, speed); + if (tp->mac_version == RTL_GIGA_MAC_VER_46) + rtl_enable_tx_lpi(tp, false); /* * Note: This hardware does not support forcing flow control. -- cgit v1.2.3