Linux e1000e (Intel networking driver) problems galore, where do I start?

Solution 1:

Please try booting the kernel with the pcie_aspm=off kernel parameter.

Solution 2:

From Intel's driver readme: downloadmirror.intel.com/9180/eng/README.txt

82573(V/L/E) TX Unit Hang Messages

Several adapters with the 82573 chipset display "TX unit hang" messages during normal operation with the e1000 driver. The issue appears both with TSO enabled and disabled, and is caused by a power management function that is enabled in the EEPROM. Early releases of the chipsets to vendors had the EEPROM bit that enabled the feature. After the issue was discovered newer adapters were released with the feature disabled in the EEPROM.

If you encounter the problem in an adapter, and the chipset is an 82573-based one, you can verify that your adapter needs the fix by using 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
                                                           ^^

The value at offset 0x001e (de) has bit 0 unset. This enables the problematic power saving feature. In this case, the EEPROM needs to read "df" at offset 0x001e.

A one-time EEPROM fix is available as a shell script. This script will verify that the adapter is applicable to the fix and if the fix is needed or not. If the fix is required, it applies the change to the EEPROM and updates the checksum. The user must reboot the system after applying the fix if changes were made to the EEPROM.

Example output of the 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!

The script can be downloaded at http://e1000.sourceforge.net/files/fixeep-82573-dspd.sh


Solution 3:

As a gravedigger, I'd like to dig up this old ass thread to share my solution for Ubuntu. Download the latest Intel network driver (3.4.0.2 at time of writing). Decompress it, append a thing to a line in the Makefile, get the patch, apply the patch, install, readd the module, and finally, reboot. Good luck.

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

This wad completed on Ubuntu 18.04, kernel 4.15.


Solution 4:

I had the same issue with a e1000e on Ubuntu 18.04.1, 4.15.0-36 kernel and nothing helped. I've updated the driver directly from intel to 3.4.2.1-NAPI, without any improvements. All things listed in this and the other thread did not help. Guessing from reading through this Ubuntu bug report I have figured as a workaround to significantly reduce the ringbuffer size:

sudo ethtool -G eth0 rx 256 tx 256

This solves the problem completely for me and appears to not impact performance at all (Desktop use, only did basic benchmarks).