Print this page
2869 duplicate packets with vnics over aggrs

*** 19,28 **** --- 19,29 ---- * 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,537 **** /* already in desired promiscous mode */ return (0); if (on) { mac_rx_clear(port->lp_mch); rc = mac_promisc_add(port->lp_mch, MAC_CLIENT_PROMISC_ALL, ! aggr_recv_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); } --- 527,543 ---- /* 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_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); }