Setting e1000 Interface Settings Permanently On Debian
Well, sometimes obvious things aren’t quiet as obvious as supposed.
After plugging in a dual Intel Pro 1000 into my Debian box and hooking it up to my ancient Cisco 1924 switch, I noticed this in the kernel logs:
Jul 31 09:10:35 localhost kernel: e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Half Duplex
I though it should be fairly easy set the interface speeds properly so the devices would actually talk to each other.
While doing so on the Cisco was actually easy, the Linux box would refrain from doing so at a first glance.
#ethtool -s eth0 speed 100 duplex full
Running the command given above resulted in an error preventing me to set the parameters. It took me a while to find out that I had to actually turn off auto negotiation to make it work, too.
#ethtool -s eth0 speed 100 duplex full autoneg off
Now I had to make this change permanent as it would reset to defaults after the next reboot. I did so by adding the post-up line to my /etc/network/interfaces file:
iface eth0 inet static
post-up /usr/sbin/ethtool -s eth0 speed 100 duplex full autoneg off
It should be noted, that the module documention at Intel’s website does not actually state that auto-negotiation must be turned off when setting interface speed and duplex modes. The question remains if this was only the case on my particular setup or if it is an absolute requirement after all.