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 4F8C7A0C4D; Tue, 2 Nov 2021 02:40:48 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6DA8C4111F; Tue, 2 Nov 2021 02:40:34 +0100 (CET) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id E964D410E5 for ; Tue, 2 Nov 2021 02:40:29 +0100 (CET) Received: from dggeme756-chm.china.huawei.com (unknown [172.30.72.56]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4HjsxD6dldz1DJ5t; Tue, 2 Nov 2021 09:38:24 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by dggeme756-chm.china.huawei.com (10.3.19.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.15; Tue, 2 Nov 2021 09:40:27 +0800 From: "Min Hu (Connor)" To: CC: , Date: Tue, 2 Nov 2021 09:38:28 +0800 Message-ID: <20211102013829.42345-4-humin29@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211102013829.42345-1-humin29@huawei.com> References: <20211102013829.42345-1-humin29@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To dggeme756-chm.china.huawei.com (10.3.19.102) X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH 3/4] net/hns3: fix lack of unregistering MP action for secondary X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Huisong Li 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 Signed-off-by: Min Hu (Connor) --- 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 658baf9ec3..96ab0c4f6c 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -5851,6 +5851,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; } @@ -5867,7 +5868,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; @@ -7462,7 +7463,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: @@ -7485,6 +7486,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 7286a858a9..633201a2c2 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -1894,6 +1894,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; } @@ -1909,7 +1910,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; @@ -2768,7 +2769,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: @@ -2792,6 +2793,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 1a79d249b8..6d33bf49cd 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 b49532f985..5738ab74a5 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