Page MenuHomeFreeBSD

D29785.diff
No OneTemporary

D29785.diff

diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -1061,9 +1061,17 @@
}
if (!em_is_valid_ether_addr(hw->mac.addr)) {
- device_printf(dev, "Invalid MAC address\n");
- error = EIO;
- goto err_late;
+ if (adapter->vf_ifp) {
+ u8 addr[ETHER_ADDR_LEN];
+ arc4rand(&addr, sizeof(addr), 0);
+ addr[0] &= 0xFE;
+ addr[0] |= 0x02;
+ bcopy(addr, hw->mac.addr, sizeof(addr));
+ } else {
+ device_printf(dev, "Invalid MAC address\n");
+ error = EIO;
+ goto err_late;
+ }
}
/* Disable ULP support */
@@ -1923,6 +1931,13 @@
device_printf(dev, "Setup init failure\n");
return;
}
+
+ /* Are we a VF device? */
+ if ((adapter->hw.mac.type == e1000_vfadapt) ||
+ (adapter->hw.mac.type == e1000_vfadapt_i350))
+ adapter->vf_ifp = 1;
+ else
+ adapter->vf_ifp = 0;
}
static int

File Metadata

Mime Type
text/plain
Expires
Fri, Feb 6, 8:13 PM (6 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28449907
Default Alt Text
D29785.diff (878 B)

Event Timeline