1. I didn't see that 0xA8 in the device config space was for the MAC address. It doesn't show it in the register spec I received. I'll give it a try when I get a chance. I only saw that offset 0xA8 in the MMIO space was for it.
2. Taking a closer look at it, I do like it. Maybe just change the if(!eeprom_valid) part to read from the ROMSTRAP the way I had it. The reason I like my way of reading the ROMSTRAPs MAC is because you have it at a fixed address. But the ROMSTRAP could actually be used to setup lots and lots of device registers, if chosen to do so. Thus pushing that address lower.
// read directly from rom_strap mac_pos = read8(0xffffffe0); // refer to romstrap.inc mac_pos |= (read8(0xffffffe1)<<8); mac_pos |= (read8(0xffffffe2)<<16); mac_pos |= (read8(0xffffffe3)<<24);
mac_pos += 0x30; for ( dword = nic_index ; dword > 0 ; dword-- ) { mac_pos += 8; }
mac_l = read32(mac_pos); mac_h = read32(mac_pos + 4);
Sorry I didn't look at it more closely.
3. yeah, I saw that. I was just using something familiar. Thanks.