[intel] Use autoloaded MAC address instead of EEPROM MAC address
authorMichael Brown <mcb30@ipxe.org>
Fri, 31 Oct 2014 15:18:54 +0000 (15:18 +0000)
committerMichael Brown <mcb30@ipxe.org>
Fri, 31 Oct 2014 15:24:40 +0000 (15:24 +0000)
commita937615151878f43fb25d05a669105d95cfba941
treea127f9c47362d878d1d94195a79b5c3e8d64660c
parentdea6a6c1a07462890dc8bed4d048febdd13a2a3a
[intel] Use autoloaded MAC address instead of EEPROM MAC address

The i350 (and possibly other Intel NICs) have a non-trivial
correspondence between the PCI function number and the external
physical port number.  For example, the i350 has a "LAN Function Sel"
bit within the EEPROM which can invert the mapping so that function 0
becomes port 3, function 1 becomes port 2, etc.

Unfortunately the MAC addresses within the EEPROM are indexed by
physical port number rather than PCI function number.  The end result
is that when anything other than the default mapping is used, iPXE
will use the wrong address as the base MAC address.

Fix by using the autoloaded MAC address if it is valid, and falling
back to reading the MAC address directly from the EEPROM only if no
autoloaded address is available.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/intel.c