summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSasha Levin <sashal@kernel.org>2026-10-20 12:15:42 -0400
committerJakub Kicinski <kuba@kernel.org>2026-10-21 18:07:08 -0700
commitf71ff7d406523748bfb8236830c7eaa6a308aaa1 (patch)
treeb44ca64862c2b2dea4e9fe2c572bbc40f3d046c4 /drivers
parent82858f249d65126539aa4297677b468fd6619041 (diff)
downloadlinux-f71ff7d406523748bfb8236830c7eaa6a308aaa1.tar.gz
linux-f71ff7d406523748bfb8236830c7eaa6a308aaa1.zip
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 <sashal@kernel.org> Link: https://patch.msgid.link/20261020161543.3712208-1-sashal@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/realtek/r8169_main.c2
1 files changed, 2 insertions, 0 deletions
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.