dpdk/0253-net-hns3-unregister-MP-action-on-close-for-secondary.patch
speech_white 1c77287214 sync to master branch
sync patches ranges from versoin 9 t0 17 from master branch

Signed-off-by: speech_white <humin29@huawei.com>
2021-12-17 10:45:19 +08:00

129 lines
3.8 KiB
Diff

From 9bc0df6a4fa9b3ea1decc519c778e48a27037589 Mon Sep 17 00:00:00 2001
From: Huisong Li <lihuisong@huawei.com>
Date: Tue, 2 Nov 2021 09:38:28 +0800
Subject: [PATCH 20/33] net/hns3: unregister MP action on close for secondary
This patch fixes lack of unregistering MP action for secondary process
when PMD is closed.
Fixes: 9570b1fdbdad ("net/hns3: check multi-process action register result")
Fixes: 23d4b61fee5d ("net/hns3: support multiple process")
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
drivers/net/hns3/hns3_ethdev.c | 6 ++++--
drivers/net/hns3/hns3_ethdev_vf.c | 6 ++++--
drivers/net/hns3/hns3_mp.c | 5 +----
drivers/net/hns3/hns3_mp.h | 2 +-
4 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 2f2d2a605..b4f375bf2 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -5896,6 +5896,7 @@ hns3_dev_close(struct rte_eth_dev *eth_dev)
if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
__atomic_fetch_sub(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
+ hns3_mp_uninit();
return 0;
}
@@ -5912,7 +5913,7 @@ hns3_dev_close(struct rte_eth_dev *eth_dev)
hns3_uninit_pf(eth_dev);
hns3_free_all_queues(eth_dev);
rte_free(hw->reset.wait_data);
- hns3_mp_uninit_primary();
+ hns3_mp_uninit();
hns3_warn(hw, "Close port %u finished", hw->data->port_id);
return ret;
@@ -7507,7 +7508,7 @@ hns3_dev_init(struct rte_eth_dev *eth_dev)
rte_free(hw->reset.wait_data);
err_init_reset:
- hns3_mp_uninit_primary();
+ hns3_mp_uninit();
err_mp_init_primary:
err_mp_init_secondary:
@@ -7530,6 +7531,7 @@ hns3_dev_uninit(struct rte_eth_dev *eth_dev)
if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
__atomic_fetch_sub(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
+ hns3_mp_uninit();
return 0;
}
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
index 108bd61d5..ac0dcbe36 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -1923,6 +1923,7 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev)
if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
__atomic_fetch_sub(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
+ hns3_mp_uninit();
return 0;
}
@@ -1938,7 +1939,7 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev)
hns3vf_uninit_vf(eth_dev);
hns3_free_all_queues(eth_dev);
rte_free(hw->reset.wait_data);
- hns3_mp_uninit_primary();
+ hns3_mp_uninit();
hns3_warn(hw, "Close port %u finished", hw->data->port_id);
return ret;
@@ -2794,7 +2795,7 @@ hns3vf_dev_init(struct rte_eth_dev *eth_dev)
rte_free(hw->reset.wait_data);
err_init_reset:
- hns3_mp_uninit_primary();
+ hns3_mp_uninit();
err_mp_init_primary:
err_mp_init_secondary:
@@ -2818,6 +2819,7 @@ hns3vf_dev_uninit(struct rte_eth_dev *eth_dev)
if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
__atomic_fetch_sub(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
+ hns3_mp_uninit();
return 0;
}
diff --git a/drivers/net/hns3/hns3_mp.c b/drivers/net/hns3/hns3_mp.c
index 753b93f09..2ecb16861 100644
--- a/drivers/net/hns3/hns3_mp.c
+++ b/drivers/net/hns3/hns3_mp.c
@@ -244,10 +244,7 @@ int hns3_mp_init_primary(void)
return 0;
}
-/*
- * Un-initialize by primary process.
- */
-void hns3_mp_uninit_primary(void)
+void hns3_mp_uninit(void)
{
process_data.eth_dev_cnt--;
diff --git a/drivers/net/hns3/hns3_mp.h b/drivers/net/hns3/hns3_mp.h
index b49532f98..5738ab74a 100644
--- a/drivers/net/hns3/hns3_mp.h
+++ b/drivers/net/hns3/hns3_mp.h
@@ -18,7 +18,7 @@ void hns3_mp_req_start_tx(struct rte_eth_dev *dev);
void hns3_mp_req_stop_tx(struct rte_eth_dev *dev);
int hns3_mp_init_primary(void);
-void hns3_mp_uninit_primary(void);
+void hns3_mp_uninit(void);
int hns3_mp_init_secondary(void);
#endif /* _HNS3_MP_H_ */
--
2.33.0