diff options
| author | Sasha Levin <sashal@kernel.org> | 2026-10-20 12:15:42 -0400 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-10-21 18:07:08 -0700 |
| commit | f71ff7d406523748bfb8236830c7eaa6a308aaa1 (patch) | |
| tree | b44ca64862c2b2dea4e9fe2c572bbc40f3d046c4 /drivers | |
| parent | 82858f249d65126539aa4297677b468fd6619041 (diff) | |
| download | linux-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.c | 2 |
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. |
