From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f179.google.com (mail-ig0-f179.google.com [209.85.213.179]) by dpdk.org (Postfix) with ESMTP id 29846C300 for ; Tue, 26 May 2015 17:42:11 +0200 (CEST) Received: by igbpi8 with SMTP id pi8so61387993igb.1 for ; Tue, 26 May 2015 08:42:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/eFMKcqeLf+tgqk702w+OkgsxMbj5qvrppxHvszdepE=; b=HdeGabEQyWpkT6Rqf5MlU/DVZ+Cv+2x2ICLV5aYX6OnTF2ochtmj7YaZcxGjRXPVAC cD2/6evUMCx5Iq9Iq3lappHgErK9Tjh4QGoYe93WkXw1bxSOoxZjsRPjiL3EJZi5N3NE B4V+VhNx4Wg8gmUhwERSzcYkoC40wUVZWc85AgYpvN2GYUaDc6Gegkry4fNCL+qgwmg6 CY3DzWisnBqhG9hQFav9ufeGTRX/dlfwp/4Ct7VPm4E7gGkJzDwmhM6pAcfgKd/VyiR1 otrXqTKth67awYBxyIdKLcIVHLgr33dXE0Gm5WOCgFo3vwOn86/CTSOV4s0Gx7XrBJjZ tAtw== X-Received: by 10.107.162.147 with SMTP id l141mr35632665ioe.77.1432654930677; Tue, 26 May 2015 08:42:10 -0700 (PDT) Received: from buildhost2.vyatta.com. ([144.49.197.22]) by mx.google.com with ESMTPSA id rr5sm8574894igb.7.2015.05.26.08.42.08 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 May 2015 08:42:09 -0700 (PDT) From: Eric Kinzie To: dev@dpdk.org Date: Tue, 26 May 2015 08:41:47 -0700 Message-Id: <1432654909-13845-3-git-send-email-ehkinzie@gmail.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1432654909-13845-1-git-send-email-ehkinzie@gmail.com> References: <1432654909-13845-1-git-send-email-ehkinzie@gmail.com> Cc: Eric Kinzie Subject: [dpdk-dev] [PATCH v4 2/4] bond mode 4: do not ignore multicast X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 15:42:11 -0000 From: Eric Kinzie The bonding PMD in mode 4 puts all enslaved interfaces into promiscuous mode in order to receive LACPDUs and must filter unwanted packets after the traffic has been "collected". Allow broadcast and multicast through so that ARP and IPv6 neighbor discovery continue to work. Fixes: 46fb43683679 ("bond: add mode 4") Signed-off-by: Eric Kinzie --- app/test/test_link_bonding_mode4.c | 7 +++++-- drivers/net/bonding/rte_eth_bond_pmd.c | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/test/test_link_bonding_mode4.c b/app/test/test_link_bonding_mode4.c index 460539d..d785393 100644 --- a/app/test/test_link_bonding_mode4.c +++ b/app/test/test_link_bonding_mode4.c @@ -749,8 +749,11 @@ test_mode4_rx(void) rte_eth_macaddr_get(test_params.bonded_port_id, &bonded_mac); ether_addr_copy(&bonded_mac, &dst_mac); - /* Assert that dst address is not bonding address */ - dst_mac.addr_bytes[0]++; + /* Assert that dst address is not bonding address. Do not set the + * least significant bit of the zero byte as this would create a + * multicast address. + */ + dst_mac.addr_bytes[0] += 2; /* First try with promiscuous mode enabled. * Add 2 packets to each slave. First with bonding MAC address, second with diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index c937e6b..1691300 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -170,6 +170,7 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, * mode and packet address does not match. */ if (unlikely(hdr->ether_type == ether_type_slow_be || !collecting || (!promisc && + !is_multicast_ether_addr(&hdr->d_addr) && !is_same_ether_addr(&bond_mac, &hdr->d_addr)))) { if (hdr->ether_type == ether_type_slow_be) { -- 1.7.10.4