From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3FE6CA00C4 for ; Fri, 18 Nov 2022 00:09:11 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3525F410F1; Fri, 18 Nov 2022 00:09:11 +0100 (CET) Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by mails.dpdk.org (Postfix) with ESMTP id F25164021F for ; Fri, 18 Nov 2022 00:09:08 +0100 (CET) Received: by mail-wr1-f45.google.com with SMTP id l14so6419673wrw.2 for ; Thu, 17 Nov 2022 15:09:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KNweFWVV9XNj3UnUQYXdsbtxht3jZLIF2j5Dz6vIil4=; b=JTU0K25PJWczD8JnHsLvYEJmEsv/jia814/W4F8MhhNOnvU2+qfkJMRbeg+4CVYuAt BT35LXieo3Dx5cXoN+pROC3+vy/DXvFiohfDWjQ8U0jcGQ9Fw18yeUJcsHrPcfo4anfc +00R2eOy0eV8k6jCOrpud0NXLmLxz0cqXbj9fFU/zmBY+9k2CUQinaXlWk5qDLEw9/Bk 0iYeMoJW7nWdbjxv7jGbkIcmz1lPkgOFMN502wtqGMK5IOaDFMSqPX6j8othkP1o+W93 fKCEbs7+Q37KbByUcy5ZLHHj/1SLJFrn/PTowMNDQ9DrOs0UH7du5niSGhR0GaKTNwZy TMIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KNweFWVV9XNj3UnUQYXdsbtxht3jZLIF2j5Dz6vIil4=; b=eC0oTGd5whenaoRf/mRPqfF58V+mcU111kfF0pGrLzhqcyD2PGhj9n5uxA9aSvnTVi aEXW+ojyu0OGSK4r/uheYgLMcphpMDIoKlz7yXC5JogpYa+uEac5KiH0s1/QHaAF7cy9 WKyHtBrfgcoKzGqsfduXgW3733akO3TTD4f32TKZGi1HMSLjQwuDCAaECIPcVV2YwGcC t3SSr0x6un9tcaa/Hpzmi6lPcHBZr8XIkJpLLs9Fo1POOGxtbSOn2tcyyNDTmABPrD3t QT6BBUshaFvb3cBhN52pWihjyDUsfE6PHJNh0hLoc8/XwRZY+I5YvD5SUuN5QIp5GLNH QKvA== X-Gm-Message-State: ANoB5pnPMQVDxi+SazxIYfooEbSvnEMpruYdtJi9+GSItstz3VoSJMdI 9Rtnz1LK07qPqBmbtnDKi0RS9/R1Am8= X-Google-Smtp-Source: AA0mqf67auG8R+891yjun5fQGHwffvtH5VJ0I7hHnJRUOeQLTgFK+Dwc82tbxK8rRwWpOCxsW3JvKQ== X-Received: by 2002:adf:e30b:0:b0:236:aacc:ea87 with SMTP id b11-20020adfe30b000000b00236aaccea87mr2789861wrj.414.1668726548657; Thu, 17 Nov 2022 15:09:08 -0800 (PST) Received: from localhost ([137.220.119.58]) by smtp.gmail.com with ESMTPSA id n38-20020a05600c182600b003c6deb5c1edsm2358211wmp.45.2022.11.17.15.09.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Nov 2022 15:09:07 -0800 (PST) From: luca.boccassi@gmail.com To: Huisong Li Cc: Andrew Rybchenko , dpdk stable Subject: patch 'net/bonding: fix dropping valid MAC packets' has been queued to stable release 20.11.7 Date: Thu, 17 Nov 2022 23:08:28 +0000 Message-Id: <20221117230859.611465-4-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221117230859.611465-1-luca.boccassi@gmail.com> References: <20221105171146.1520039-47-luca.boccassi@gmail.com> <20221117230859.611465-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 20.11.7 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/19/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/8d40818e69b0dba586be8eff417bc13cf6000415 Thanks. Luca Boccassi --- >From 8d40818e69b0dba586be8eff417bc13cf6000415 Mon Sep 17 00:00:00 2001 From: Huisong Li Date: Wed, 19 Oct 2022 11:32:31 +0800 Subject: [PATCH] net/bonding: fix dropping valid MAC packets [ upstream commit 30bfba52cf356c03743b6f7deaeefce2f6cb39ed ] Currently, by default, bond4 will first try to enable allmulti and then enable promiscuous if fail to enable allmulti. On reception, whether unicast and multicast packets should be dropped depends on which mode has been enabled on the bonding interface. In fact, if MAC address of packets in mac_addrs array of bonding interface, these packets should not be dropped. However, now only check the default MAC address, which will cause the packets with MAC added by the '.mac_addr_add' are dropped. Fixes: 68218b87c184 ("net/bonding: prefer allmulti to promiscuous for LACP") Signed-off-by: Huisong Li Reviewed-by: Andrew Rybchenko --- drivers/net/bonding/rte_eth_bond_pmd.c | 33 +++++++++++++++++++------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 4549fbf6ff..b147be0b84 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -271,6 +271,24 @@ bond_ethdev_8023ad_flow_set(struct rte_eth_dev *bond_dev, uint16_t slave_port) { return 0; } +static bool +is_bond_mac_addr(const struct rte_ether_addr *ea, + const struct rte_ether_addr *mac_addrs, uint32_t max_mac_addrs) +{ + uint32_t i; + + for (i = 0; i < max_mac_addrs; i++) { + /* skip zero address */ + if (rte_is_zero_ether_addr(&mac_addrs[i])) + continue; + + if (rte_is_same_ether_addr(ea, &mac_addrs[i])) + return true; + } + + return false; +} + static inline uint16_t rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts, bool dedicated_rxq) @@ -331,8 +349,9 @@ rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts, /* Remove packet from array if: * - it is slow packet but no dedicated rxq is present, * - slave is not in collecting state, - * - bonding interface is not in promiscuous mode: - * - packet is unicast and address does not match, + * - bonding interface is not in promiscuous mode and + * packet address isn't in mac_addrs array: + * - packet is unicast, * - packet is multicast and bonding interface * is not in allmulti, */ @@ -342,12 +361,10 @@ rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts, bufs[j])) || !collecting || (!promisc && - ((rte_is_unicast_ether_addr(&hdr->d_addr) && - !rte_is_same_ether_addr(bond_mac, - &hdr->d_addr)) || - (!allmulti && - rte_is_multicast_ether_addr(&hdr->d_addr)))))) { - + !is_bond_mac_addr(&hdr->d_addr, bond_mac, + BOND_MAX_MAC_ADDRS) && + (rte_is_unicast_ether_addr(&hdr->d_addr) || + !allmulti)))) { if (hdr->ether_type == ether_type_slow_be) { bond_mode_8023ad_handle_slow_pkt( internals, slaves[idx], bufs[j]); -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-11-17 23:07:55.711144604 +0000 +++ 0004-net-bonding-fix-dropping-valid-MAC-packets.patch 2022-11-17 23:07:55.432329016 +0000 @@ -1 +1 @@ -From 30bfba52cf356c03743b6f7deaeefce2f6cb39ed Mon Sep 17 00:00:00 2001 +From 8d40818e69b0dba586be8eff417bc13cf6000415 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 30bfba52cf356c03743b6f7deaeefce2f6cb39ed ] + @@ -17 +18,0 @@ -Cc: stable@dpdk.org @@ -26 +27 @@ -index 006e13838a..864e073db8 100644 +index 4549fbf6ff..b147be0b84 100644 @@ -70 +71 @@ -- ((rte_is_unicast_ether_addr(&hdr->dst_addr) && +- ((rte_is_unicast_ether_addr(&hdr->d_addr) && @@ -72 +73 @@ -- &hdr->dst_addr)) || +- &hdr->d_addr)) || @@ -74 +75 @@ -- rte_is_multicast_ether_addr(&hdr->dst_addr)))))) { +- rte_is_multicast_ether_addr(&hdr->d_addr)))))) { @@ -76 +77 @@ -+ !is_bond_mac_addr(&hdr->dst_addr, bond_mac, ++ !is_bond_mac_addr(&hdr->d_addr, bond_mac, @@ -78 +79 @@ -+ (rte_is_unicast_ether_addr(&hdr->dst_addr) || ++ (rte_is_unicast_ether_addr(&hdr->d_addr) ||