sync patches ranges from versoin 9 t0 17 from master branch Signed-off-by: speech_white <humin29@huawei.com>
115 lines
3.8 KiB
Diff
115 lines
3.8 KiB
Diff
From e7ad3ead98f61e7f759293ad05dfe48627c72e2c Mon Sep 17 00:00:00 2001
|
|
From: Huisong Li <lihuisong@huawei.com>
|
|
Date: Fri, 22 Oct 2021 17:19:55 +0800
|
|
Subject: [PATCH 06/33] net/hns3: extract common interface to check duplicates
|
|
|
|
Extract a common interface for PF and VF to check whether the configured
|
|
multicast MAC address from rte_eth_dev_mac_addr_add() is the same as the
|
|
multicast MAC address from rte_eth_dev_set_mc_addr_list().
|
|
|
|
Signed-off-by: Huisong Li <lihuisong@huawei.com>
|
|
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
|
|
---
|
|
drivers/net/hns3/hns3_ethdev.c | 25 ++++++++++++++++++-------
|
|
drivers/net/hns3/hns3_ethdev.h | 4 ++++
|
|
drivers/net/hns3/hns3_ethdev_vf.c | 16 ++--------------
|
|
3 files changed, 24 insertions(+), 21 deletions(-)
|
|
|
|
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
|
|
index e0ec99811..f1346ee9f 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev.c
|
|
+++ b/drivers/net/hns3/hns3_ethdev.c
|
|
@@ -1609,27 +1609,38 @@ hns3_add_uc_mac_addr(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
|
|
return ret;
|
|
}
|
|
|
|
-static int
|
|
-hns3_add_mc_addr_common(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
|
|
+bool
|
|
+hns3_find_duplicate_mc_addr(struct hns3_hw *hw, struct rte_ether_addr *mc_addr)
|
|
{
|
|
char mac_str[RTE_ETHER_ADDR_FMT_SIZE];
|
|
struct rte_ether_addr *addr;
|
|
- int ret;
|
|
int i;
|
|
|
|
for (i = 0; i < hw->mc_addrs_num; i++) {
|
|
addr = &hw->mc_addrs[i];
|
|
- /* Check if there are duplicate addresses */
|
|
- if (rte_is_same_ether_addr(addr, mac_addr)) {
|
|
+ /* Check if there are duplicate addresses in mc_addrs[] */
|
|
+ if (rte_is_same_ether_addr(addr, mc_addr)) {
|
|
hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
|
|
- addr);
|
|
+ addr);
|
|
hns3_err(hw, "failed to add mc mac addr, same addrs"
|
|
"(%s) is added by the set_mc_mac_addr_list "
|
|
"API", mac_str);
|
|
- return -EINVAL;
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
+ return false;
|
|
+}
|
|
+
|
|
+static int
|
|
+hns3_add_mc_addr_common(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
|
|
+{
|
|
+ char mac_str[RTE_ETHER_ADDR_FMT_SIZE];
|
|
+ int ret;
|
|
+
|
|
+ if (hns3_find_duplicate_mc_addr(hw, mac_addr))
|
|
+ return -EINVAL;
|
|
+
|
|
ret = hns3_add_mc_mac_addr(hw, mac_addr);
|
|
if (ret) {
|
|
hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
|
|
diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
|
|
index 84f5a9f29..a97406198 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev.h
|
|
+++ b/drivers/net/hns3/hns3_ethdev.h
|
|
@@ -1049,6 +1049,10 @@ void hns3vf_update_link_status(struct hns3_hw *hw, uint8_t link_status,
|
|
uint32_t link_speed, uint8_t link_duplex);
|
|
void hns3_parse_devargs(struct rte_eth_dev *dev);
|
|
void hns3vf_update_push_lsc_cap(struct hns3_hw *hw, bool supported);
|
|
+
|
|
+bool hns3_find_duplicate_mc_addr(struct hns3_hw *hw,
|
|
+ struct rte_ether_addr *mc_addr);
|
|
+
|
|
int hns3_restore_ptp(struct hns3_adapter *hns);
|
|
int hns3_mbuf_dyn_rx_timestamp_register(struct rte_eth_dev *dev,
|
|
struct rte_eth_conf *conf);
|
|
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
|
|
index 29313c2f7..f60849606 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev_vf.c
|
|
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
|
|
@@ -208,22 +208,10 @@ static int
|
|
hns3vf_add_mc_addr_common(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
|
|
{
|
|
char mac_str[RTE_ETHER_ADDR_FMT_SIZE];
|
|
- struct rte_ether_addr *addr;
|
|
int ret;
|
|
- int i;
|
|
|
|
- for (i = 0; i < hw->mc_addrs_num; i++) {
|
|
- addr = &hw->mc_addrs[i];
|
|
- /* Check if there are duplicate addresses */
|
|
- if (rte_is_same_ether_addr(addr, mac_addr)) {
|
|
- hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
|
|
- addr);
|
|
- hns3_err(hw, "failed to add mc mac addr, same addrs"
|
|
- "(%s) is added by the set_mc_mac_addr_list "
|
|
- "API", mac_str);
|
|
- return -EINVAL;
|
|
- }
|
|
- }
|
|
+ if (hns3_find_duplicate_mc_addr(hw, mac_addr))
|
|
+ return -EINVAL;
|
|
|
|
ret = hns3vf_add_mc_mac_addr(hw, mac_addr);
|
|
if (ret) {
|
|
--
|
|
2.33.0
|
|
|