Recently my router (vyatta) nic’s, 2x Intel 82574L, stopped working, the Ethernet interfaces went into a very strange state, were they seem to be up but not running, the leds on the nics are lit but they don’t blink, there is no ip communication, and not a packet is sent or received (This problem was found while using kernel 3.3.8-1).
I started browsing the web and found other people with the same problem. It is, in short, a problem with ASPM (active state power management) L1 power mode. ASPM is embedded in the kernel and used by the e1000e driver, although this problem seems to be only related with 82573 and 82574 chipsets.
A permanent fix that enables the use of ASPM is not yet available, rather a workaround that disables ASPM completely.
You can actually disable aspm by passing an argument “pcie_aspm=off” in the kernel load line inside the grub config file “/boot/grub/grub.cfg” or by adding “kopt=pcie_aspm=off” kernel option to “/boot/grub/menu.lst”.
This actually didn’t work for me, I think it is because my nic’s are onboard and not pcie (!?) maybe, I’m not sure.
There is however a more efficient way of overcoming this problem, by patching the nic eeprom.
This solution is stated at sourceforge.
To check if your nic is affected by this problem sun ethtool (as superuser or output may differ)
sudo ethtool -e eth0 | more Offset Values ------ ------ 0x0000 00 1b 21 51 39 8c 20 0d 46 f7 a1 10 ff ff ff ff 0x0010 29 e6 02 64 6b 02 00 00 86 80 0c 15 ff ff 58 9c
“The value at offset 0x001e (58) has bit 1 unset. This enables the problematic
power saving feature. In this case, the EEPROM needs to read “5a” at offset
0x001e.” from sourceforge.
Copy the script to your box by using a pendrive, I had wireless working on the router so I was able to copy it via scp, i’ll assume the script is in /tmp, your nic is eth0 and you’re not root:
Run script with:
cd /tmp sudo chmod +x fixeep-82574_83.sh sudo bash fixeep-82574_83.sh eth0
Output will be something like this:
eth0: is a "82574L Gigabit Network Connection" This fixup is applicable to your hardware executing command: ethtool -E eth0 magic 0x10d38086 offset 0x1e value 0x5a Change made. You *MUST* reboot your machine before changes take effect!
sudo shutdown -r now