diff options
author | Sean Bruno <sbruno@FreeBSD.org> | 2016-11-07 22:24:37 +0000 |
---|---|---|
committer | Sean Bruno <sbruno@FreeBSD.org> | 2016-11-07 22:24:37 +0000 |
commit | 525e07418c7788fbf9ab63919a0eba57fbbb1d4e (patch) | |
tree | dfca4d48afefd13cdb5b80fa7ad931557f586d1e | |
parent | aabc5ce043340c18d7bc7f7ca956724c66583625 (diff) | |
download | src-525e07418c7788fbf9ab63919a0eba57fbbb1d4e.tar.gz src-525e07418c7788fbf9ab63919a0eba57fbbb1d4e.zip |
Notes
-rw-r--r-- | sys/dev/e1000/if_igb.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/sys/dev/e1000/if_igb.c b/sys/dev/e1000/if_igb.c index 8e018995029e..3c9644d9b03b 100644 --- a/sys/dev/e1000/if_igb.c +++ b/sys/dev/e1000/if_igb.c @@ -590,11 +590,20 @@ igb_attach(device_t dev) error = EIO; goto err_late; } - /* Check its sanity */ - if (!igb_is_valid_ether_addr(adapter->hw.mac.addr)) { - device_printf(dev, "Invalid MAC address\n"); - error = EIO; - goto err_late; + + /* Check its sanity */ + if (!igb_is_valid_ether_addr(adapter->hw.mac.addr)) { + if (adapter->vf_ifp) { + u8 addr[ETHER_ADDR_LEN]; + 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"); + error = EIO; + goto err_late; + } } /* Setup OS specific network interface */ |