Skip to content

Instantly share code, notes, and snippets.

@crypt0rr
Last active November 11, 2025 01:11
Show Gist options
  • Select an option

  • Save crypt0rr/60aaabd4a5c29a256b4f276122765237 to your computer and use it in GitHub Desktop.

Select an option

Save crypt0rr/60aaabd4a5c29a256b4f276122765237 to your computer and use it in GitHub Desktop.
Intel e1000e fix - Proxmox

Fix Intel e1000e error

Please note - you may want to validate whether the options used affect your setup.

Create a new service file.

nano /etc/systemd/system/disable-offloading.service

Paste the required information/command in the newly created service file - please change eth0 to your desired adapter.

[Unit]
Description=Disable NIC offloading
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -K eth0 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

Load the new service file and enable on reboot.

systemctl daemon-reexec && systemctl daemon-reload && systemctl enable disable-offloading.service
@wrobelda
Copy link

wrobelda commented Aug 29, 2025

FYI, you're better off handling this in /etc/systemd/network/10-eth0.link, not as a Service Unit. This will work for systemd version > 256.

[Match]
MACAddress=00:12:34:56:78:90

[Link]
ReceiveChecksumOffload=no
TransmitChecksumOffload=no
TCPSegmentationOffload=no
TCP6SegmentationOffload=no
GenericSegmentationOffload=no
GenericReceiveOffload=no
GenericReceiveOffloadHardware=no
ReceiveVLANCTAGHardwareAcceleration=no
TransmitVLANCTAGHardwareAcceleration=no
ReceiveVLANCTAGFilter=no
TransmitVLANSTAGHardwareAcceleration=no

Or, alternatively, on Debian-based systems, using /etc/network/interfaces:

iface eth0 inet manual
        post-up /sbin/ethtool -K $IFACE gso off gro off tso off tx off rx off rxvlan off txvlan off sg off

@Apachez-
Copy link

Apachez- commented Nov 9, 2025

It seems like people are blindly firing these "disable offload".

Have anyone actually confirmed and traced WHICH offload setting(s) actually do affect this bug of hardware unit hang?

Because disabling offloading unnecessary is a VERY bad thing for performance.

You want to disable as few offloading options as possible.

What I have collected so far is that it seems that its one of these offloading options that needs to be disabled as workaround (the root cause is some malfunction in the Intel driver vs Linux kernel):

  1. Disable just TSO.
  2. Disable both TSO and GSO.
  3. Disable TSO, GSO and GRO.
  4. Disable everything you can find (but if not really needed this means that performance will be affected).

There also exists various ways to implement the "disable offloading".

I personally prefer to add it in the /etc/network/interfaces for every physical interface like so:

iface ETH1 inet manual
        post-up /usr/bin/logger -p debug -t ifup "Disabling segmentation offload for ${IFACE}" && /sbin/ethtool -K ${IFACE} tso off gso off && /usr/bin/logger -p debug -t ifup "Disabled offload for ${IFACE}"
#FRONTEND

@Apachez-
Copy link

Apachez- commented Nov 9, 2025

Another suspect:

  1. Disable EEE.

What makes me add EEE to the list of suspects is this from an driverupdate by Intel in 2019 (might have existed sooner):

https://web.archive.org/web/20210802085934/https://downloadmirror.intel.com/15817/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 e1000edriver. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment