Last Friday I updated the Debian 7 installation on my homelab NAS box. Prior to that I had updated the firmware of its (IBM OEM) i340-T4 NIC with version 19.0 of the Intel “Ethernet Connections Boot Utility”, as explained earlier. After a reboot all of the i340 interfaces were gone. The card was listed in lspci and the dmesg output, but the driver wasn’t loaded. Manual loading didn’t work either:
Mar 21 15:40:58 labnas kernel: [ 2172.966771] Intel(R) Gigabit Ethernet Network Driver - version 3.2.10-k Mar 21 15:40:58 labnas kernel: [ 2172.966774] Copyright (c) 2007-2011 Intel Corporation. Mar 21 15:40:58 labnas kernel: [ 2172.966823] igb 0000:01:00.0: setting latency timer to 64 Mar 21 15:40:59 labnas kernel: [ 2173.790497] igb: probe of 0000:01:00.0 failed with error -13 Mar 21 15:40:59 labnas kernel: [ 2173.790519] igb 0000:01:00.1: setting latency timer to 64 Mar 21 15:41:00 labnas kernel: [ 2174.614178] igb: probe of 0000:01:00.1 failed with error -13 Mar 21 15:41:00 labnas kernel: [ 2174.614198] igb 0000:01:00.2: setting latency timer to 64 Mar 21 15:41:00 labnas kernel: [ 2175.437858] igb: probe of 0000:01:00.2 failed with error -13 Mar 21 15:41:00 labnas kernel: [ 2175.437880] igb 0000:01:00.3: setting latency timer to 64 Mar 21 15:41:01 labnas kernel: [ 2176.261527] igb: probe of 0000:01:00.3 failed with error -13
So it seems the updated igb driver from Debian 7.4 is broken. Next thing to do was to download the latest Intel driver, which is version 5.1.2. But no luck as well:
root@labnas:/usr/src/igb-5.1.2/src# make install make -C /lib/modules/3.2.0-4-amd64/build SUBDIRS=/usr/src/igb-5.1.2/src modules make: Entering directory `/usr/src/linux-headers-3.2.0-4-amd64' CC [M] /usr/src/igb-5.1.2/src/igb_main.o CC [M] /usr/src/igb-5.1.2/src/e1000_82575.o CC [M] /usr/src/igb-5.1.2/src/e1000_i210.o CC [M] /usr/src/igb-5.1.2/src/e1000_mac.o CC [M] /usr/src/igb-5.1.2/src/e1000_nvm.o CC [M] /usr/src/igb-5.1.2/src/e1000_phy.o CC [M] /usr/src/igb-5.1.2/src/e1000_manage.o CC [M] /usr/src/igb-5.1.2/src/igb_param.o CC [M] /usr/src/igb-5.1.2/src/igb_ethtool.o /usr/src/igb-5.1.2/src/igb_ethtool.c:3060:2: error: unknown field 'get_rxfh_indir_size' specified in initializer /usr/src/igb-5.1.2/src/igb_ethtool.c:3061:2: warning: initialization from incompatible pointer type [enabled by default] /usr/src/igb-5.1.2/src/igb_ethtool.c:3061:2: warning: (near initialization for 'igb_ethtool_ops.get_rxfh_indir') [enabled by default] /usr/src/igb-5.1.2/src/igb_ethtool.c:3064:2: warning: initialization from incompatible pointer type [enabled by default] /usr/src/igb-5.1.2/src/igb_ethtool.c:3064:2: warning: (near initialization for 'igb_ethtool_ops.set_rxfh_indir') [enabled by default] make: *** [/usr/src/igb-5.1.2/src/igb_ethtool.o] Error 1 make: *** [_module_/usr/src/igb-5.1.2/src] Error 2 make: *** [sub-make] Error 2 make: *** [all] Error 2 make: Leaving directory `/usr/src/linux-headers-3.2.0-4-amd64' make: *** [default] Error 2
A bit of research revealed that this is a known issue, but unfortunately still not solved. So I had to use the older 5.0.6 version, which compiled without any problem, and after a reboot all NICs were back again.
So, beware of Debian 7 update 4 if you’re using the stock igb driver. Could be specific for my IBM branded NIC, or the latest firmware, or the chipset, or anything else. But be prepared to have the build environment and driver source ready.
BTW: igb broken, iscsi_target still at the old buggy version – currently I’m quite disappointed of Debian. I think I’ll revert to Ubuntu if I rebuild the NAS someday.