Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/e1000/if_igb.c
Show First 20 Lines • Show All 591 Lines • ▼ Show 20 Lines | igb_attach(device_t dev) | ||||
*/ | */ | ||||
if (e1000_read_mac_addr(&adapter->hw) < 0) { | if (e1000_read_mac_addr(&adapter->hw) < 0) { | ||||
device_printf(dev, "EEPROM read error while reading MAC" | device_printf(dev, "EEPROM read error while reading MAC" | ||||
" address\n"); | " address\n"); | ||||
error = EIO; | error = EIO; | ||||
goto err_pci; | goto err_pci; | ||||
} | } | ||||
/* Check its sanity */ | /* Check its sanity */ | ||||
if (!igb_is_valid_ether_addr(adapter->hw.mac.addr)) { | if (!igb_is_valid_ether_addr(adapter->hw.mac.addr)) { | ||||
if (adapter->vf_ifp) { | |||||
u8 addr[ETHER_ADDR_LEN]; | |||||
device_printf(dev, "DEBUG Assigning random MAC address\n"); | |||||
arc4rand(&addr, sizeof(addr), 0); | |||||
addr[0] &= 0xFE; | |||||
addr[0] |= 0x02; | |||||
bcopy(addr, adapter->hw.mac.addr, sizeof(addr)); | |||||
} else { | |||||
device_printf(dev, "Invalid MAC address\n"); | device_printf(dev, "Invalid MAC address\n"); | ||||
error = EIO; | error = EIO; | ||||
goto err_pci; | goto err_pci; | ||||
} | |||||
} | } | ||||
/* Setup OS specific network interface */ | /* Setup OS specific network interface */ | ||||
if (igb_setup_interface(dev, adapter) != 0) | if (igb_setup_interface(dev, adapter) != 0) | ||||
goto err_pci; | goto err_pci; | ||||
/* Now get a good starting state */ | /* Now get a good starting state */ | ||||
igb_reset(adapter); | igb_reset(adapter); | ||||
▲ Show 20 Lines • Show All 5,480 Lines • Show Last 20 Lines |