Print this page
2869 duplicate packets with vnics over aggrs

@@ -19,10 +19,11 @@
  * CDDL HEADER END
  */
 /*
  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2012 OmniTI Computer Consulting, Inc  All rights reserved.
  */
 
 /*
  * IEEE 802.3ad Link Aggregation - Link Aggregation MAC ports.
  *

@@ -526,12 +527,17 @@
                 /* already in desired promiscous mode */
                 return (0);
 
         if (on) {
                 mac_rx_clear(port->lp_mch);
+                /* We use the promisc callback because without hardware
+                 * rings, we deliver through flows that will cause duplicate
+                 * delivery of packets when we've flipped into this mode
+                 * to compensate for the lack of hardware MAC matching
+                 */
                 rc = mac_promisc_add(port->lp_mch, MAC_CLIENT_PROMISC_ALL,
-                    aggr_recv_cb, port, &port->lp_mphp,
+                    aggr_recv_promisc_cb, port, &port->lp_mphp,
                     MAC_PROMISC_FLAGS_NO_TX_LOOP);
                 if (rc != 0) {
                         mac_rx_set(port->lp_mch, aggr_recv_cb, port);
                         return (rc);
                 }