Fix e1000e: Detected Hardware Unit Hang

Having periodic connectivity issues and seeing this in your dmesg?

e1000e 0000:02:00.0: eth0: Detected Hardware Unit Hang:
  TDH                  <a2>
  TDT                  <8e>
  next_to_use          <8e>
  next_to_clean        <a2>
  time_stamp           <214ed55a5>
  next_to_watch        <a2>
  jiffies              <214ed6d98>
  next_to_watch.status <0>
MAC Status             <80080783>
PHY Status             <796d>
PHY 1000BASE-T Status  <7800>
PHY Extended Status    <3000>
PCI Status             <10>
e1000e 0000:02:00.0: eth0: Reset adapter
e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

This occurs during normal operation of some 82573-based NICs due to a problematic power saving feature. Fortunately, this can be fixed permanently by altering the NIC's EEPROM. If your card is affected you will see the value 0xDE in the second-last position of the second line when you run:

# ethtool -e eth0
Offset          Values
------          ------
0x0000          00 00 00 00 00 00 30 0b 46 f7 07 10 ff ff 00 24 
0x0010          ff ff ff ff 6b 22 f9 02 14 10 8c 10 86 80 de ac

This value must be changed to 0xDF to disable the feature, which can be accomplished using this bash script: http://e1000.sourceforge.net/files/fixeep-82573-dspd.sh.

# ./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 0x108c8086 offset 0x1e value 0xdf
Change made. You *MUST* reboot your machine before changes take effect!


There are no comments for this item.