aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Bruno <sbruno@FreeBSD.org>2016-11-07 22:24:37 +0000
committerSean Bruno <sbruno@FreeBSD.org>2016-11-07 22:24:37 +0000
commit525e07418c7788fbf9ab63919a0eba57fbbb1d4e (patch)
treedfca4d48afefd13cdb5b80fa7ad931557f586d1e
parentaabc5ce043340c18d7bc7f7ca956724c66583625 (diff)
downloadsrc-525e07418c7788fbf9ab63919a0eba57fbbb1d4e.tar.gz
src-525e07418c7788fbf9ab63919a0eba57fbbb1d4e.zip
Notes
-rw-r--r--sys/dev/e1000/if_igb.c19
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 */