Soluzione 1:
Prova ad avviare il kernel con pcie_aspm=off
parametro del kernel.
Soluzione 2:
Dal file readme del driver di Intel:downloadmirror.intel.com/9180/eng/README.txt
Messaggi di blocco unità TX 82573(V/L/E)
Diversi adattatori con il chipset 82573 visualizzano messaggi "TX unit hang" durante il normale funzionamento con il driver e1000. Il problema si verifica sia con TSO abilitato che disabilitato ed è causato da una funzione di gestione dell'alimentazione abilitata nella EEPROM. Le prime versioni dei chipset ai fornitori avevano il bit EEPROM che abilitava la funzione. Dopo che il problema è stato scoperto, i nuovi adattatori sono stati rilasciati con la funzione disabilitata nella EEPROM.
Se riscontri il problema in un adattatore e il chipset è basato su 82573, puoi verificare che l'adattatore richieda la correzione utilizzando ethtool:
# ethtool -e eth0
Offset Values
------ ------
0x0000 00 12 34 56 fe dc 30 0d 46 f7 f4 00 ff ff ff ff
0x0010 ff ff ff ff 6b 02 8c 10 d9 15 8c 10 86 80 de 83
^^
Il valore all'offset 0x001e (de) ha il bit 0 non impostato. Ciò abilita la problematica funzione di risparmio energetico. In questo caso, la EEPROM deve leggere "df" in offset0x001e.
Una correzione EEPROM una tantum è disponibile come script di shell. Questo script verificherà che l'adattatore sia applicabile alla correzione e se la correzione è necessaria o meno. Se la correzione è necessaria, applica la modifica alla EEPROM e aggiorna il checksum. L'utente deve riavviare il sistema dopo aver applicato la correzione se sono state apportate modifiche alla EEPROM.
Esempio di output dello script:
# bash fixeep-82573-dspd.sh eth0
eth0: is a "82573E Gigabit Ethernet Controller"
This fixup is applicable to your hardware
executing command: ethtool -E eth0 magic 0x109a8086 offset 0x1e value 0xdf
Change made. You *MUST* reboot your machine before changes take effect!
Lo script può essere scaricato all'indirizzo http://e1000.sourceforge.net/files/fixeep-82573-dspd.sh
Soluzione 3:
Come becchino, mi piacerebbe riesumare questo vecchio thread per condividere la mia soluzione per Ubuntu. Scarica l'ultimo driver di rete Intel (3.4.0.2 al momento della scrittura). Decomprimilo, aggiungi qualcosa a una riga nel Makefile, ottieni la patch, applica la patch, installa, leggi il modulo e, infine, riavvia. Buona fortuna.
wget https://downloadcenter.intel.com/download/15817/Intel-Network-Adapter-Driver-for-PCIe-Intel-Gigabit-Ethernet-Network-Connections-Under-Linux-?product=60019
tar -zxvf e1000e-3.4.0.2.tar.gz
vi e1000e-3.4.0.2/src/Makefile
## Locate line 152: EXTRA_CFLAGS += $(CFLAGS_EXTRA)
## Append -fno-pie
## Download the patch from https://sourceforge.net/p/e1000/bugs/_discuss/thread/9048ab8e
## wget/curl won't work here. THANKS SOURCE FORGE.
patch -p0 < e1000e-3.4.0.2-timer-updates.patch
cd e1000e-3.4.0.2/src/
sudo make install
sudo rmmod e1000e && sudo modprobe e1000e
sudo reboot
Questo batuffolo è stato completato su Ubuntu 18.04, kernel 4.15.
Soluzione 4:
Ho avuto lo stesso problema con un e1000e su Ubuntu 18.04.1, kernel 4.15.0-36 e niente ha aiutato. Ho aggiornato il driver direttamente da Intel a 3.4.2.1-NAPI, senza alcun miglioramento. Tutte le cose elencate in questo e nell'altro thread non hanno aiutato. Indovinando dalla lettura di questa segnalazione di bug di Ubuntu ho pensato come soluzione alternativa per ridurre significativamente la dimensione del ringbuffer:
sudo ethtool -G eth0 rx 256 tx 256
Questo risolve completamente il problema per me e sembra non avere alcun impatto sulle prestazioni (uso desktop, solo benchmark di base).