Skip to content

e1000e Hardware Unit Hang – Intel I219-LM auf Dell Minikomputer

Problem

Sporadischer, vollständiger Netzwerkausfall auf einem Proxmox-Host (Dell Minikomputer) ohne externe Ursache. Recovery nur durch physisches Aus- und Einstecken des Netzwerkkabels möglich.

Im Systemlog (journalctl -k) erscheinen folgende Meldungen unmittelbar vor dem Ausfall:

kernel: e1000e 0000:00:1f.6 eth0: Detected Hardware Unit Hang:
  TDH                  <8d>
  TDT                  <dd>
  next_to_use          <dd>
  next_to_clean        <8c>
  ...
  next_to_watch.status <0>
  MAC Status             <80083>
  PHY Status             <796d>
kernel: e1000e 0000:00:1f.6 eth0: NIC Link is Down
kernel: vmbr0: port 1(eth0) entered disabled state

Nach dem Replug erholt sich der Link wieder:

kernel: e1000e 0000:00:1f.6 eth0: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
kernel: vmbr0: port 1(eth0) entered forwarding state

Ursache

Energy Efficient Ethernet (EEE) ist auf dem NIC aktiv, obwohl der angeschlossene Switch keine EEE-Unterstützung zurückmeldet (Link partner advertised EEE link modes: Not reported).

Dieser Mismatch verursacht beim Intel I219-LM (e1000e-Treiber) einen TX-Queue-Freeze: Der Hardware-Deskriptorring (TDH) kommt nicht mehr voran, next_to_watch.status bleibt auf 0, der Treiber erkennt den Hang und gibt die Verbindung auf. Ein Software-Reset findet nicht statt – nur ein physischer Link-Down/Up (Replug) löst den Reset aus.

Betroffene Hardware

  • NIC: Intel Ethernet Connection (7) I219-LM [8086:15bb] rev 10 (Coffeelake)
  • Treiber: e1000e
  • Gerät: Dell Minikomputer (OptiPlex Micro o.ä.)

Diagnose

# NIC identifizieren
lspci -nn | grep -i ethernet

# EEE-Status prüfen
ethtool --show-eee eth0

Hinweis auf das Problem:

EEE status: enabled - inactive
Link partner advertised EEE link modes: Not reported

EEE ist aktiv, aber der Switch kommuniziert keine EEE-Fähigkeit → Mismatch.

Lösung

1. EEE sofort deaktivieren

ethtool --set-eee eth0 eee off

Verifizieren:

ethtool --show-eee eth0 | grep "EEE status"
# Erwartete Ausgabe: EEE status: disabled

2. Persistent machen (Proxmox /etc/network/interfaces)

Da Proxmox die Datei verwaltet, wird der post-up-Hook direkt unter die iface eth0-Zeile eingefügt:

sed -i '/iface eth0 inet manual/a\\tpost-up ethtool --set-eee eth0 eee off' /etc/network/interfaces

Resultat in /etc/network/interfaces:

iface eth0 inet manual
        post-up ethtool --set-eee eth0 eee off

Der Hook wird bei jedem Interface-Up automatisch ausgeführt, also auch nach einem Neustart.

Weitere Massnahmen (falls Problem weiterhin auftritt)

Sollte der Hang nach dem EEE-Fix erneut auftreten, sind folgende Schritte zu prüfen:

Flow Control deaktivieren (Mismatch mit Switch möglich):

ethtool -A eth0 rx off tx off

TX-Offloading reduzieren:

ethtool -K eth0 tso off gso off

Kernel-Moduloption setzen (/etc/modprobe.d/e1000e.conf):

options e1000e SmartPowerDownEnable=0

Referenzen