From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f45.google.com (mail-pa0-f45.google.com [209.85.220.45]) by dpdk.org (Postfix) with ESMTP id 5B5D1569D for ; Wed, 22 Apr 2015 18:28:12 +0200 (CEST) Received: by paboj16 with SMTP id oj16so277373181pab.0 for ; Wed, 22 Apr 2015 09:28:11 -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=qVl1w/rwS0DE0/8ZtVfrAskZy+ozB7IomicVc3Pq2Zc=; b=WZ8Ol6jKH/tUSYjI9SpKuXRsFaQN49qhN1KhXpm13NeFyqJ+mlgcWyHm93Fwnp6i3e ySTiIX21KkPPbsncNH+O3ZrdnM6DO+VYz7uFbei7peG9KG3vl2yo+VzE6RgAC7QTIbOv 0iJmZ+2F9y1cQRMr3kvEyKV8cWwmnlknRRdu1+he3D0fQXB1n80H5iDZHIOSTLMfZV0Q ltKSgEBFXyIH8tn/43/5WsAz20FxYVf1zbwpTShtQzJcA61RneW1iLz8LQF8FoEafc8j 5fbMa+PE8zBHljQhL71DkIMU4FxVJs6yumAZdbdy1fGBKDptJU3HRP+AkkItfFwc5Bl/ 8/DQ== X-Received: by 10.70.38.225 with SMTP id j1mr48667441pdk.14.1429720091612; Wed, 22 Apr 2015 09:28:11 -0700 (PDT) Received: from buildhost2.vyatta.com. ([144.49.132.22]) by mx.google.com with ESMTPSA id l8sm5543146pdj.80.2015.04.22.09.28.09 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2015 09:28:10 -0700 (PDT) From: Eric Kinzie To: dev@dpdk.org Date: Wed, 22 Apr 2015 09:27:41 -0700 Message-Id: <1429720063-9943-3-git-send-email-ehkinzie@gmail.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1429720063-9943-1-git-send-email-ehkinzie@gmail.com> References: <1429720063-9943-1-git-send-email-ehkinzie@gmail.com> Cc: Eric Kinzie Subject: [dpdk-dev] [PATCH v3 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: Wed, 22 Apr 2015 16:28:12 -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 +++++-- lib/librte_pmd_bond/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 02380f9..5a726af 100644 --- a/app/test/test_link_bonding_mode4.c +++ b/app/test/test_link_bonding_mode4.c @@ -755,8 +755,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/lib/librte_pmd_bond/rte_eth_bond_pmd.c b/lib/librte_pmd_bond/rte_eth_bond_pmd.c index c937e6b..1691300 100644 --- a/lib/librte_pmd_bond/rte_eth_bond_pmd.c +++ b/lib/librte_pmd_bond/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