there is no place like ~

Corrupted MAC on input during ssh file transfer in Debian Linux

Recently a lot of backups with obnam to my Qnap NAS terminated with the error message Corrupted MAC on input. Some web search revealed that this is caused by bug with hardware TCP offloading in the network interface controller driver in the Linux kernel. The web also shows how to suppress this error by disabling TCP offloading with the ethtool tool, but this setting is active only until the next reboot. The text describes how to permanently disable TCP offloading in Debian Linux.

Disabling TCP offloading with ethtool

The TCP offloading can be disabled (temporarily) with the ethtool tool:

ethtool -K eth0 tx off rx off

This command is effective until the next reboot.

Disabling TCP offloading permanently

For a permanent solution (other than to wait for a fix in the kernel) you can add the settings in the /etc/network/interfaces file.

auto eth0
iface eth0 inet dhcp
       offload-rx off           # disables TCP RX offloading
       offload-tx off           # disables TCP TX offloading

The settings for the MV-643xx ethernet port on the Qnap TS-420 now look like:

root@nas:~# ethtool -k eth0
Features for eth0:
rx-checksumming: off
tx-checksumming: off
        tx-checksum-ipv4: off
        tx-checksum-ip-generic: off [fixed]
        tx-checksum-ipv6: off [fixed]
        tx-checksum-fcoe-crc: off [fixed]
        tx-checksum-sctp: off [fixed]
scatter-gather: on
        tx-scatter-gather: on
        tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: off
        tx-tcp-segmentation: off [requested on]
        tx-tcp-ecn-segmentation: off [fixed]
        tx-tcp6-segmentation: off [fixed]
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-ipip-segmentation: off [fixed]
tx-sit-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-mpls-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
busy-poll: off [fixed]