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 19EC44319F for ; Thu, 19 Oct 2023 01:59:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 131B54029E; Thu, 19 Oct 2023 01:59:56 +0200 (CEST) Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by mails.dpdk.org (Postfix) with ESMTP id C9A8A40291 for ; Thu, 19 Oct 2023 01:59:54 +0200 (CEST) Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-407c3adef8eso18921305e9.2 for ; Wed, 18 Oct 2023 16:59:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697673594; x=1698278394; darn=dpdk.org; 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=2BlY3SJyDqUYQ2C6wSGzzq46pY5io8eIXwG4FBxG9YU=; b=XqACRhSmrPbt5ZhGdzS8ieWSyyd6M/J/A5nY4icKrQzf9J71xTdM6fUknOW5Fdy3pw igEqwafT/Q26XwqAUAnwE9wrZjJRLHfBa+cDdbJ5kJ0xbBwoLNggP2MT425lDVqXBpJH 96BHLYpcBiZlhoqeJdN8Iie7e0+r9rKH8FgSATmnv7uGNZuKgGyktaDrvnhf27dy/SG9 KQiXWd77yQZAAmpHHI0tidhSUhtjWRlzKyVWlDr1WYjVMSAdKQLgovoYrPU8WRfUmNc+ eSGoFob7UP72pajZUmDquBRMGCrXkuUdc2wQUw5qxspQ166jl+SHfBQFqQGMvA1/zNPs evlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697673594; x=1698278394; 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=2BlY3SJyDqUYQ2C6wSGzzq46pY5io8eIXwG4FBxG9YU=; b=h1MpVPF7JBJ+wYTl4JOvz6pIsTf1/1zuXAYIdF3B2hXn03LT2qVTJhsh67u3iR10jf Rq4TFXts1u28NmQ3Aj9VmkFxEwz1XiRJBl7L7oMcOWbPBGv1Qb39h+VBq7WU12hL8W0r AklOfGC8eUG2I6wUY/Bznj0ZPgFmmJjKwPgCLfbWDNcycfvk/I5vWGVJU9d1IcGNliiY 9abnoX4g9KGdP6NoABbK3t7v5sIAiOSYzDLZj/dw3DLzZyVU+3I/lBS+P10fW+oW0fDn QgOBi+zZur2vDP9c3OzM0AxFbSooTBPjv7LVwSGppc5+oHS1nvbfn3vohLKFF5jf3TvI Wt8A== X-Gm-Message-State: AOJu0Yz4IdKAMlZlJ3P7NKU2adZozwxyKLhhEZVgUi6WSw9VBL6w43DA VKMPEiUE52KGmhJITJIbSxgadaXyVq3vKg== X-Google-Smtp-Source: AGHT+IH7vaBaUSRKXwnizPObZsFV9O8Yo4gDXlsidgWqkjaCMZjgYkHg5OxzYiK90WLu7C6UtvRgOA== X-Received: by 2002:adf:e889:0:b0:32d:8907:2b18 with SMTP id d9-20020adfe889000000b0032d89072b18mr362159wrm.66.1697673594489; Wed, 18 Oct 2023 16:59:54 -0700 (PDT) Received: from localhost ([137.220.119.58]) by smtp.gmail.com with ESMTPSA id l6-20020a5d4806000000b0032da75af3easm3166877wrq.80.2023.10.18.16.59.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 16:59:53 -0700 (PDT) From: luca.boccassi@gmail.com To: Dengdui Huang Cc: Dongdong Liu , dpdk stable Subject: patch 'net/hns3: fix flushing multicast MAC address' has been queued to stable release 20.11.10 Date: Thu, 19 Oct 2023 00:58:55 +0100 Message-Id: <20231018235930.3144-6-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231018235930.3144-1-luca.boccassi@gmail.com> References: <20231018235930.3144-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.10 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 10/21/23. 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/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/04a3f8de6cc6d01e8d9223814afe0f53c96b2542 Thanks. Luca Boccassi --- >From 04a3f8de6cc6d01e8d9223814afe0f53c96b2542 Mon Sep 17 00:00:00 2001 From: Dengdui Huang Date: Sat, 5 Aug 2023 16:36:25 +0800 Subject: [PATCH] net/hns3: fix flushing multicast MAC address [ upstream commit 49d1ab205b033b6131fb895b5e4d9ebc14081e51 ] According rte_eth_dev_set_mc_addr_list() API definition, support flush multicast MAC address if mc_addr_set is NULL or nb_mc_addr is zero. Fixes: 7d7f9f80bbfb ("net/hns3: support MAC address related operations") Signed-off-by: Dengdui Huang Signed-off-by: Dongdong Liu --- drivers/net/hns3/hns3_ethdev.c | 68 +++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 08e2ae53db..b898c7b5a3 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -2037,12 +2037,42 @@ hns3_set_mc_addr_calc_addr(struct hns3_hw *hw, *rm_addr_num = rm_num; } +static int +hns3_configure_all_mc_mac_addr(struct hns3_adapter *hns, bool del) +{ + char mac_str[RTE_ETHER_ADDR_FMT_SIZE]; + struct hns3_hw *hw = &hns->hw; + struct rte_ether_addr *addr; + int err = 0; + int ret; + int i; + + for (i = 0; i < hw->mc_addrs_num; i++) { + addr = &hw->mc_addrs[i]; + if (!rte_is_multicast_ether_addr(addr)) + continue; + if (del) + ret = hns3_remove_mc_addr(hw, addr); + else + ret = hns3_add_mc_addr(hw, addr); + if (ret) { + err = ret; + rte_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE, + addr); + hns3_dbg(hw, "%s mc mac addr: %s failed for pf: ret = %d", + del ? "Remove" : "Restore", mac_str, ret); + } + } + return err; +} + static int hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev, struct rte_ether_addr *mc_addr_set, uint32_t nb_mc_addr) { struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw); struct rte_ether_addr reserved_addr_list[HNS3_MC_MACADDR_NUM]; struct rte_ether_addr add_addr_list[HNS3_MC_MACADDR_NUM]; struct rte_ether_addr rm_addr_list[HNS3_MC_MACADDR_NUM]; @@ -2055,6 +2085,15 @@ hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev, int ret; int i; + if (mc_addr_set == NULL || nb_mc_addr == 0) { + rte_spinlock_lock(&hw->lock); + ret = hns3_configure_all_mc_mac_addr(hns, true); + if (ret == 0) + hw->mc_addrs_num = 0; + rte_spinlock_unlock(&hw->lock); + return ret; + } + /* Check if input parameters are valid */ ret = hns3_set_mc_addr_chk_param(hw, mc_addr_set, nb_mc_addr); if (ret) @@ -2102,35 +2141,6 @@ hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev, return 0; } -static int -hns3_configure_all_mc_mac_addr(struct hns3_adapter *hns, bool del) -{ - char mac_str[RTE_ETHER_ADDR_FMT_SIZE]; - struct hns3_hw *hw = &hns->hw; - struct rte_ether_addr *addr; - int err = 0; - int ret; - int i; - - for (i = 0; i < hw->mc_addrs_num; i++) { - addr = &hw->mc_addrs[i]; - if (!rte_is_multicast_ether_addr(addr)) - continue; - if (del) - ret = hns3_remove_mc_addr(hw, addr); - else - ret = hns3_add_mc_addr(hw, addr); - if (ret) { - err = ret; - rte_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE, - addr); - hns3_dbg(hw, "%s mc mac addr: %s failed for pf: ret = %d", - del ? "Remove" : "Restore", mac_str, ret); - } - } - return err; -} - static int hns3_check_mq_mode(struct rte_eth_dev *dev) { -- 2.39.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2023-10-19 00:28:56.559140958 +0100 +++ 0006-net-hns3-fix-flushing-multicast-MAC-address.patch 2023-10-19 00:28:56.193803887 +0100 @@ -1 +1 @@ -From 49d1ab205b033b6131fb895b5e4d9ebc14081e51 Mon Sep 17 00:00:00 2001 +From 04a3f8de6cc6d01e8d9223814afe0f53c96b2542 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 49d1ab205b033b6131fb895b5e4d9ebc14081e51 ] + @@ -11 +12,0 @@ -Cc: stable@dpdk.org @@ -16,2 +17,2 @@ - drivers/net/hns3/hns3_common.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) + drivers/net/hns3/hns3_ethdev.c | 68 +++++++++++++++++++--------------- + 1 file changed, 39 insertions(+), 29 deletions(-) @@ -19,5 +20,40 @@ -diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c -index 043c7673b4..c4d47f43fe 100644 ---- a/drivers/net/hns3/hns3_common.c -+++ b/drivers/net/hns3/hns3_common.c -@@ -444,6 +444,7 @@ hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev, +diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c +index 08e2ae53db..b898c7b5a3 100644 +--- a/drivers/net/hns3/hns3_ethdev.c ++++ b/drivers/net/hns3/hns3_ethdev.c +@@ -2037,12 +2037,42 @@ hns3_set_mc_addr_calc_addr(struct hns3_hw *hw, + *rm_addr_num = rm_num; + } + ++static int ++hns3_configure_all_mc_mac_addr(struct hns3_adapter *hns, bool del) ++{ ++ char mac_str[RTE_ETHER_ADDR_FMT_SIZE]; ++ struct hns3_hw *hw = &hns->hw; ++ struct rte_ether_addr *addr; ++ int err = 0; ++ int ret; ++ int i; ++ ++ for (i = 0; i < hw->mc_addrs_num; i++) { ++ addr = &hw->mc_addrs[i]; ++ if (!rte_is_multicast_ether_addr(addr)) ++ continue; ++ if (del) ++ ret = hns3_remove_mc_addr(hw, addr); ++ else ++ ret = hns3_add_mc_addr(hw, addr); ++ if (ret) { ++ err = ret; ++ rte_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE, ++ addr); ++ hns3_dbg(hw, "%s mc mac addr: %s failed for pf: ret = %d", ++ del ? "Remove" : "Restore", mac_str, ret); ++ } ++ } ++ return err; ++} ++ + static int + hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev, + struct rte_ether_addr *mc_addr_set, @@ -28,4 +64,4 @@ - struct rte_ether_addr *addr; - int cur_addr_num; - int set_addr_num; -@@ -451,6 +452,15 @@ hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev, + struct rte_ether_addr reserved_addr_list[HNS3_MC_MACADDR_NUM]; + struct rte_ether_addr add_addr_list[HNS3_MC_MACADDR_NUM]; + struct rte_ether_addr rm_addr_list[HNS3_MC_MACADDR_NUM]; +@@ -2055,6 +2085,15 @@ hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev, @@ -46,0 +83,36 @@ +@@ -2102,35 +2141,6 @@ hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev, + return 0; + } + +-static int +-hns3_configure_all_mc_mac_addr(struct hns3_adapter *hns, bool del) +-{ +- char mac_str[RTE_ETHER_ADDR_FMT_SIZE]; +- struct hns3_hw *hw = &hns->hw; +- struct rte_ether_addr *addr; +- int err = 0; +- int ret; +- int i; +- +- for (i = 0; i < hw->mc_addrs_num; i++) { +- addr = &hw->mc_addrs[i]; +- if (!rte_is_multicast_ether_addr(addr)) +- continue; +- if (del) +- ret = hns3_remove_mc_addr(hw, addr); +- else +- ret = hns3_add_mc_addr(hw, addr); +- if (ret) { +- err = ret; +- rte_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE, +- addr); +- hns3_dbg(hw, "%s mc mac addr: %s failed for pf: ret = %d", +- del ? "Remove" : "Restore", mac_str, ret); +- } +- } +- return err; +-} +- + static int + hns3_check_mq_mode(struct rte_eth_dev *dev) + {