Month: August 2018

Proxmox: enp0s31f6: Detected Hardware Unit Hang

Since a few weeks, my Proxmox lab has started having issues with on-board network. The adapter enters in “hang” state, the logs are full of recurring errors like below:

[89276.274556] e1000e 0000:00:1f.6 enp0s31f6: Reset adapter unexpectedly
[89276.306147] vmbr0: port 1(enp0s31f6) entered disabled state
[89280.269563] e1000e: enp0s31f6 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
[89280.269626] vmbr0: port 1(enp0s31f6) entered blocking state
[89280.269631] vmbr0: port 1(enp0s31f6) entered forwarding state
[89282.226613] e1000e 0000:00:1f.6 enp0s31f6: Detected Hardware Unit Hang:
                 TDH                  <0>
                 TDT                  <1>
                 next_to_use          <1>
                 next_to_clean        <0>
               buffer_info[next_to_clean]:
                 time_stamp           <10153702e>
                 next_to_watch        <0>
                 jiffies              <101537150>
                 next_to_watch.status <0>
               MAC Status             <80083>
               PHY Status             <c8db>
               PHY 1000BASE-T Status  <a39b>
               PHY Extended Status    <ffff>
               PCI Status             <10>

Initially I was suspecting a hardware issue but after replacing the motherboard, the problem still persisted.

Next, I’ve found this thread in Proxmox forum. Workaround which is suggested there seems to be working, below how I’ve implemented it:

One time fix

root@wieloryb-pve:/etc/rc.d/init.d# /sbin/ethtool -K enp0s31f6 tx off rx off
Cannot get device udp-fragmentation-offload settings: Operation not supported
Cannot get device udp-fragmentation-offload settings: Operation not supported
Actual changes:
rx-checksumming: off
tx-checksumming: off
    tx-checksum-ip-generic: off
tcp-segmentation-offload: off
    tx-tcp-segmentation: off [requested on]
    tx-tcp6-segmentation: off [requested on]

Preserve the change across reboots

root@wieloryb-pve:~# cat /etc/network/if-up.d/ethtool2
#!/bin/sh

/sbin/ethtool -K enp0s31f6 tx off rx off

root@wieloryb-pve:~# chmod 755 /etc/network/if-up.d/ethtool2

Reboot and verify

root@wieloryb-pve:/etc#  shutdown -r now

root@wieloryb-pve:/etc/rc.d/init.d# /sbin/ethtool -k enp0s31f6
Features for enp0s31f6:
Cannot get device udp-fragmentation-offload settings: Operation not supported
rx-checksumming: off                   <--------- SHOULD BE OFF, HERE AND A FEW OTHER PLACES
tx-checksumming: off