mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH net v1 1/1] r8169: disable EEE on RTL8168h/8111h
@ 2026-09-25  7:10 Oleksij Rempel
  2026-10-01  0:30 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 4+ messages in thread
From: Oleksij Rempel @ 2026-09-25  7:10 UTC (permalink / raw)
  To: Andrew Lunn, nic_swsd, Heiner Kallweit, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: Oleksij Rempel, Dennis Piecha, stable, kernel, linux-kernel, netdev

Force EEE off on the RTL8168h/8111h (RTL_GIGA_MAC_VER_46) at PHY connect
with phy_disable_eee().

Commit 202fef9bbbf5 ("net: phy: realtek: fix EEE advertisement write on
the internal PHY MMD path") made EEE actually advertise on the generic
Realtek PHY; the write had been a no-op before. On the RTL8168h that
un-masks a latent defect: once EEE negotiates, RX silently stalls after
~7-20 minutes. The carrier stays up, no counter or dmesg moves, and only
"ip link set down/up" recovers it; disabling EEE keeps the link stable.

Root-causing the RTL8168h LPI/RX path needs hardware not available now, so
disable EEE for this version. Use phy_disable_eee() rather than dropping
the version from rtl_supports_eee(): the latter also skips
rtl_enable_tx_lpi(), whose disable branch clears the MAC TX-LPI bits (ERI
0x1b0[1:0]) on link up. rtl_hw_start_8168h_1() does not clear them (the
RTL8402/RTL8106e init does), so a warm reboot from an EEE-active state
could otherwise leave TX-LPI asserted while the PHY no longer negotiates
EEE. Keeping the version EEE-capable preserves that clear path. This also
covers the RTL8168M, which shares RTL_GIGA_MAC_VER_46.

Reported-by: Dennis Piecha <d.piecha@ymail.com>
Closes: https://lore.kernel.org/all/353419280.954808.1790290283530@mail.yahoo.com/
Fixes: 202fef9bbbf5 ("net: phy: realtek: fix EEE advertisement write on the internal PHY MMD path")
Cc: stable@vger.kernel.org
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
 drivers/net/ethernet/realtek/r8169_main.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index ec4fc21fa21f..ee1bc9bd0447 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -5484,6 +5484,12 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
 		phy_disable_eee_mode(tp->phydev,
 				     ETHTOOL_LINK_MODE_2500baseT_Full_BIT);
 
+	/* Keep EEE off but the version stays EEE-capable so that link-up
+	 * still clears the MAC TX-LPI bits.
+	 */
+	if (tp->mac_version == RTL_GIGA_MAC_VER_46)
+		phy_disable_eee(tp->phydev);
+
 	/* PHY will be woken up in rtl_open() */
 	phy_suspend(tp->phydev);
 
-- 
2.47.3


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net v1 1/1] r8169: disable EEE on RTL8168h/8111h
  2026-09-25  7:10 [PATCH net v1 1/1] r8169: disable EEE on RTL8168h/8111h Oleksij Rempel
@ 2026-10-01  0:30 ` patchwork-bot+netdevbpf
  2026-10-06 11:19   ` Dennis Piecha
  0 siblings, 1 reply; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-10-01  0:30 UTC (permalink / raw)
  To: Oleksij Rempel
  Cc: andrew, nic_swsd, hkallweit1, davem, edumazet, kuba, pabeni,
	d.piecha, stable, kernel, linux-kernel, netdev

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Fri, 25 Sep 2026 09:10:40 +0200 you wrote:
> Force EEE off on the RTL8168h/8111h (RTL_GIGA_MAC_VER_46) at PHY connect
> with phy_disable_eee().
> 
> Commit 202fef9bbbf5 ("net: phy: realtek: fix EEE advertisement write on
> the internal PHY MMD path") made EEE actually advertise on the generic
> Realtek PHY; the write had been a no-op before. On the RTL8168h that
> un-masks a latent defect: once EEE negotiates, RX silently stalls after
> ~7-20 minutes. The carrier stays up, no counter or dmesg moves, and only
> "ip link set down/up" recovers it; disabling EEE keeps the link stable.
> 
> [...]

Here is the summary with links:
  - [net,v1,1/1] r8169: disable EEE on RTL8168h/8111h
    https://git.kernel.org/netdev/net/c/3cdeaef1754a

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net v1 1/1] r8169: disable EEE on RTL8168h/8111h
  2026-10-01  0:30 ` patchwork-bot+netdevbpf
@ 2026-10-06 11:19   ` Dennis Piecha
  2026-10-07  6:01     ` Heiner Kallweit
  0 siblings, 1 reply; 4+ messages in thread
From: Dennis Piecha @ 2026-10-06 11:19 UTC (permalink / raw)
  To: Oleksij Rempel, patchwork-bot+netdevbpf
  Cc: andrew, nic_swsd, hkallweit1, davem, edumazet, kuba, pabeni,
	stable, kernel, linux-kernel, netdev

Hi Oleksij,

I tested this on the affected machine with a Home Assistant OS test
build that includes the patch (kernel 6.18.54-haos).

Hardware: Intel NUC11ATKPE, RTL8168h/8111h (XID 541), FRITZ!Box 6690
as link partner, no VLANs.

With the patch the NIC reports EEE as not supported and the RX stall
is gone: more than 4 hours without a single drop, everything on
defaults, no workaround. Before, on 6.18.52 without the patch, it
stalled every 7-20 minutes.

Since 6.18.y stable is affected (that's where the PHY EEE fix was
backported), it would be great to see this there too.

Tested-by: Dennis Piecha <d.piecha@ymail.com>

Thanks for the fix!
Dennis






Am Donnerstag, 1. Oktober 2026 um 02:30:16 MESZ hat <patchwork-bot+netdevbpf@kernel.org> Folgendes geschrieben: 





Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Fri, 25 Sep 2026 09:10:40 +0200 you wrote:
> Force EEE off on the RTL8168h/8111h (RTL_GIGA_MAC_VER_46) at PHY connect
> with phy_disable_eee().
> 
> Commit 202fef9bbbf5 ("net: phy: realtek: fix EEE advertisement write on
> the internal PHY MMD path") made EEE actually advertise on the generic
> Realtek PHY; the write had been a no-op before. On the RTL8168h that
> un-masks a latent defect: once EEE negotiates, RX silently stalls after
> ~7-20 minutes. The carrier stays up, no counter or dmesg moves, and only
> "ip link set down/up" recovers it; disabling EEE keeps the link stable.
> 
> [...]

Here is the summary with links:
- [net,v1,1/1] r8169: disable EEE on RTL8168h/8111h
https://git.kernel.org/netdev/net/c/3cdeaef1754a

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net v1 1/1] r8169: disable EEE on RTL8168h/8111h
  2026-10-06 11:19   ` Dennis Piecha
@ 2026-10-07  6:01     ` Heiner Kallweit
  0 siblings, 0 replies; 4+ messages in thread
From: Heiner Kallweit @ 2026-10-07  6:01 UTC (permalink / raw)
  To: Dennis Piecha, Oleksij Rempel, patchwork-bot+netdevbpf
  Cc: andrew, nic_swsd, davem, edumazet, kuba, pabeni, stable, kernel,
	linux-kernel, netdev

On 06.10.2026 13:19, Dennis Piecha wrote:
> Hi Oleksij,
> 
> I tested this on the affected machine with a Home Assistant OS test
> build that includes the patch (kernel 6.18.54-haos).
> 
> Hardware: Intel NUC11ATKPE, RTL8168h/8111h (XID 541), FRITZ!Box 6690
> as link partner, no VLANs.
> 
> With the patch the NIC reports EEE as not supported and the RX stall
> is gone: more than 4 hours without a single drop, everything on
> defaults, no workaround. Before, on 6.18.52 without the patch, it
> stalled every 7-20 minutes.
> 

I'm pretty sure that EEE was active for this chip version in earlier times.
Are you sure it's not an issue on the link partner side? Did you test with a
switch between your system and the FRITZ!Box?

> Since 6.18.y stable is affected (that's where the PHY EEE fix was
> backported), it would be great to see this there too.
> 
> Tested-by: Dennis Piecha <d.piecha@ymail.com>
> 
> Thanks for the fix!
> Dennis
> 
> 
> 
> 
> 
> 
> Am Donnerstag, 1. Oktober 2026 um 02:30:16 MESZ hat <patchwork-bot+netdevbpf@kernel.org> Folgendes geschrieben: 
> 
> 
> 
> 
> 
> Hello:
> 
> This patch was applied to netdev/net.git (main)
> by Jakub Kicinski <kuba@kernel.org>:
> 
> On Fri, 25 Sep 2026 09:10:40 +0200 you wrote:
>> Force EEE off on the RTL8168h/8111h (RTL_GIGA_MAC_VER_46) at PHY connect
>> with phy_disable_eee().
>>
>> Commit 202fef9bbbf5 ("net: phy: realtek: fix EEE advertisement write on
>> the internal PHY MMD path") made EEE actually advertise on the generic
>> Realtek PHY; the write had been a no-op before. On the RTL8168h that
>> un-masks a latent defect: once EEE negotiates, RX silently stalls after
>> ~7-20 minutes. The carrier stays up, no counter or dmesg moves, and only
>> "ip link set down/up" recovers it; disabling EEE keeps the link stable.
>>
>> [...]
> 
> Here is the summary with links:
> - [net,v1,1/1] r8169: disable EEE on RTL8168h/8111h
> https://git.kernel.org/netdev/net/c/3cdeaef1754a
> 
> You are awesome, thank you!


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-10-07  6:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-25  7:10 [PATCH net v1 1/1] r8169: disable EEE on RTL8168h/8111h Oleksij Rempel
2026-10-01  0:30 ` patchwork-bot+netdevbpf
2026-10-06 11:19   ` Dennis Piecha
2026-10-07  6:01     ` Heiner Kallweit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®