linux/drivers/net/ethernet/intel/e1000e
Tony Nguyen 1d6500523b e1000e: add system to disable K1 list
Javier reports seeing packet loss issues related to the re-enablement
of K1; disabling it makes the issues go away. Add the reported system
to have K1 disabled by default.

Reproduction steps (from the Link):
Plug the cable and ping the default gateway on the LAN. No suspend/resume
involved, machine freshly booted and on AC power. Nothing e1000e-related in
dmesg apart from the link up/down messages; no "Hardware Unit Hang".

Default (K1 enabled):

  $ ping -c 30 192.168.10.1
  --- 192.168.10.1 ping statistics ---
  30 packets transmitted, 18 received, 40% packet loss, time 29734ms
  rtt min/avg/max/mdev = 0.211/0.315/0.384/0.046 ms

The lost packets are spread over the run (seq 6, 8, 9, 11, 13, 14, 16, 19,
20, 24, 25, 30), not a single burst. DHCP on this link also takes 1-2
minutes to get a lease, consistent with incoming packets being dropped.

With K1 disabled at runtime:

  # ethtool --set-priv-flags enp0s31f6 disable-k1 on
  $ ethtool --show-priv-flags enp0s31f6
  Private flags for enp0s31f6:
  s0ix-enabled: on
  disable-k1  : on

  $ ping -c 30 192.168.10.1
  --- 192.168.10.1 ping statistics ---
  30 packets transmitted, 30 received, 0% packet loss, time 29713ms
  rtt min/avg/max/mdev = 0.169/0.251/0.468/0.054 ms

  $ ping -c 30 192.168.10.1
  --- 192.168.10.1 ping statistics ---
  30 packets transmitted, 30 received, 0% packet loss, time 29677ms
  rtt min/avg/max/mdev = 0.101/0.222/0.360/0.064 ms

I have only compile tested this, but Javier has tested that disabling K1
on his system (Lenovo ThinkPad P14s Gen 5 (Intel), I219-LM [8086:550a])
resolves his issues.

Cc: stable@vger.kernel.org
Fixes: 578294b8b6 ("e1000e: Reconfigure PLL clock gate timeout and re-enable K1 on Meteor Lake")
Reported-by: Javier Herrera <javier.herrera@afronta.com>
Link: https://lore.kernel.org/intel-wired-lan/CAKRuCQLWEcci9hPgNUmvq44Bd2H30T5_vP=exMjsknXMN5Yh9A@mail.gmail.com/
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://patch.msgid.link/20261001222443.3500206-7-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-10-07 19:00:32 -07:00
..
80003es2lan.c intel: legacy: field get conversion 2023-12-18 11:20:43 -08:00
80003es2lan.h
82571.c intel: legacy: field get conversion 2023-12-18 11:20:43 -08:00
82571.h
defines.h e1000e: clear DPG_EN after reset to avoid autonomous power-gating 2026-02-25 11:43:57 -08:00
e1000.h e1000e: introduce new board type for Panther Lake PCH 2026-02-25 11:43:57 -08:00
e1000e_trace.h e1000e: Add e1000e trace module 2022-11-02 11:08:38 -07:00
ethtool.c e1000e: limit endianness conversion to boundary words 2026-06-13 16:44:06 -07:00
hw.h e1000e: introduce new board type for Panther Lake PCH 2026-02-25 11:43:57 -08:00
ich8lan.c e1000e: Reconfigure PLL clock gate timeout and re-enable K1 on Meteor Lake 2026-06-22 14:44:50 -07:00
ich8lan.h e1000e: change k1 configuration on MTP and later platforms 2025-04-02 08:51:41 -07:00
mac.c e1000e: Fix real-time violations on link up 2025-02-10 10:43:48 -08:00
mac.h net: e1000e: Remove unused declarations 2023-08-15 19:05:17 -07:00
Makefile net: intel: Use *-y instead of *-objs in Makefile 2024-06-10 19:52:44 -07:00
manage.c
manage.h
netdev.c e1000e: add system to disable K1 list 2026-10-07 19:00:32 -07:00
nvm.c e1000e: drop unnecessary constant casts to u16 2025-09-03 10:07:27 -07:00
nvm.h
param.c intel: remove unused macros 2022-06-30 09:40:55 -07:00
phy.c e1000e: change usleep_range to udelay in PHY mdic access 2024-04-30 18:40:59 -07:00
phy.h e1000e: Workaround for sporadic MDI error on Meteor Lake systems 2024-03-27 11:44:20 -07:00
ptp.c e1000e: Switch to use %ptSp 2025-11-19 12:26:06 +01:00
regs.h e1000e: Add polling mechanism to indicate CSME DPG exit 2021-07-20 16:11:36 -07:00