Project

General

Profile

Bug #3339

vmware e1000 emulation does not support multiple mac addresses

Added by Garrett D'Amore almost 8 years ago. Updated almost 8 years ago.

Status:
Resolved
Priority:
High
Category:
driver - device drivers
Start date:
2012-11-04
Due date:
% Done:

100%

Estimated time:
1.00 h
Difficulty:
Medium
Tags:
Gerrit CR:

Description

Apparently the e1000 emulated hardware under VMware does not properly support multiple mac addresses. It silently discards the request to program multiple unicast addresses in the receive filter.

This makes this emulated hardware unusable with vnics.

The solution is to limit the driver to just a single mac address when it discovers that it is on VMware emulated hardware (trivially determined by the 0x15ad subsystem id.)

History

#1

Updated by Garrett D'Amore almost 8 years ago

Code for this:

--- a/usr/src/uts/common/io/e1000g/e1000g_main.c +++ b/usr/src/uts/common/io/e1000g/e1000g_main.c @@ -24,6 +24,7 @@ /* * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2012 DEY Storage Systems, Inc. All rights reserved. */ /* @@ -2444,6 +2445,10 @@ e1000g_init_unicst(struct e1000g *Adapter) (e1000_get_laa_state_82571(hw) == B_TRUE)) Adapter->unicst_total--; + /* VMware doesn't support multiple mac addresses properly */ + if (hw->subsystem_vendor_id == 0x15ad) + Adapter->unicst_total = 1; + Adapter->unicst_avail = Adapter->unicst_total;
#2

Updated by Garrett D'Amore almost 8 years ago

Lets try that again.

--- a/usr/src/uts/common/io/e1000g/e1000g_main.c
+++ b/usr/src/uts/common/io/e1000g/e1000g_main.c
@@ -24,6 +24,7 @@

 /*
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright 2012 DEY Storage Systems, Inc.  All rights reserved.
  */

 /*
@@ -2444,6 +2445,10 @@ e1000g_init_unicst(struct e1000g *Adapter)
                    (e1000_get_laa_state_82571(hw) == B_TRUE))
                        Adapter->unicst_total--;

+               /* VMware doesn't support multiple mac addresses properly */
+               if (hw->subsystem_vendor_id == 0x15ad)
+                       Adapter->unicst_total = 1;
+
                Adapter->unicst_avail = Adapter->unicst_total;
#3

Updated by Garrett D'Amore almost 8 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 90 to 100

Fixed in:

commit 59e72b15ed15fd97bf66c1d27ea667d363efffac
Author: Garrett D'Amore <>
Date: Sat Nov 3 14:41:42 2012 -0700

3339 vmware e1000 emulation does not support multiple mac addresses
Reviewed by: Sebastien Roy &lt;&gt;
Reviewed by: Hans Rosenfeld &lt;&gt;
Approved by: Richard Lowe &lt;&gt;

Also available in: Atom PDF