Today I upgraded my BIOS in the hope to solve various issues. When I rebooted the machine, it didn’t get an IP address through DHCP: the Ethernet MAC address has been changed by the BIOS upgrade.
Now compare the old and the new Ethernet MAC addresses:
old address: 0:1a:4d:60:72:e0
new address: e0:72:60:4d:1a:0
Time to laugh…
Does the board have a nForce chipset? Back when I reverse engineered their driver to write specs for the forcedeth Linux network driver, I noticed that oddity.
Basically, they messed up in the BIOS and had the MAC address backwards. The driver then read the MAC address, reversed it, wrote it back and it worked (two reversals). There were two problems with this approach, though:
– Sometimes, the reversed MAC address (which had to be written back to the original location) survived a reboot and the driver reversed the MAC address again, resulting in a triple reversal which was wrong. The Windows and Linux driver used different methods of marking the MAC address as reversed, so if you rebooted from Windows to Linux or the other way round, it was very likely that you hit that bug.
– Some BIOS versions fixed the longstanding reversal bug, but if the driver didn’t check explicitly if the BIOS had fixed the bug, the driver still did reverse the address which was wrong (single reversal).
I believe newer Linux forcedeth driver versions can handle the interaction with Windows and fixed BIOSes, but I’m not sure about other operating systems.