Add bugfixes for hns3 PMD to sync upstream branch. Signed-off-by: speech_white <humin29@huawei.com>
70 lines
2.6 KiB
Diff
70 lines
2.6 KiB
Diff
From 00276e9b4577158de8d920dd58e486a00d6fe27d Mon Sep 17 00:00:00 2001
|
|
From: Huisong Li <lihuisong@huawei.com>
|
|
Date: Sun, 13 Jun 2021 10:31:52 +0800
|
|
Subject: [PATCH 03/26] net/hns3: fix delay for waiting to stop Rx/Tx
|
|
|
|
When the primary process executes dev_stop or is being reset, the packet
|
|
sending and receiving functions is changed. In this moment, the primary
|
|
process requests secondary processes to change their Rx/Tx functions, and
|
|
delays a period of time in case of crashes when queues are still in use.
|
|
The delay time depends on the number of queues actually used, instead of
|
|
the maximum number of queues supported by the device.
|
|
|
|
Fixes: 23d4b61fee5d ("net/hns3: support multiple process")
|
|
Cc: stable@dpdk.org
|
|
|
|
Signed-off-by: Huisong Li <lihuisong@huawei.com>
|
|
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
|
|
---
|
|
drivers/net/hns3/hns3_ethdev.c | 4 ++--
|
|
drivers/net/hns3/hns3_ethdev_vf.c | 4 ++--
|
|
2 files changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
|
|
index 351dc59..f34e117 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev.c
|
|
+++ b/drivers/net/hns3/hns3_ethdev.c
|
|
@@ -5892,7 +5892,7 @@ hns3_dev_stop(struct rte_eth_dev *dev)
|
|
/* Disable datapath on secondary process. */
|
|
hns3_mp_req_stop_rxtx(dev);
|
|
/* Prevent crashes when queues are still in use. */
|
|
- rte_delay_ms(hw->tqps_num);
|
|
+ rte_delay_ms(hw->cfg_max_queues);
|
|
|
|
rte_spinlock_lock(&hw->lock);
|
|
if (__atomic_load_n(&hw->reset.resetting, __ATOMIC_RELAXED) == 0) {
|
|
@@ -6508,7 +6508,7 @@ hns3_stop_service(struct hns3_adapter *hns)
|
|
rte_wmb();
|
|
/* Disable datapath on secondary process. */
|
|
hns3_mp_req_stop_rxtx(eth_dev);
|
|
- rte_delay_ms(hw->tqps_num);
|
|
+ rte_delay_ms(hw->cfg_max_queues);
|
|
|
|
rte_spinlock_lock(&hw->lock);
|
|
if (hns->hw.adapter_state == HNS3_NIC_STARTED ||
|
|
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
|
|
index 030d63a..1819677 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev_vf.c
|
|
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
|
|
@@ -2107,7 +2107,7 @@ hns3vf_dev_stop(struct rte_eth_dev *dev)
|
|
/* Disable datapath on secondary process. */
|
|
hns3_mp_req_stop_rxtx(dev);
|
|
/* Prevent crashes when queues are still in use. */
|
|
- rte_delay_ms(hw->tqps_num);
|
|
+ rte_delay_ms(hw->cfg_max_queues);
|
|
|
|
rte_spinlock_lock(&hw->lock);
|
|
if (__atomic_load_n(&hw->reset.resetting, __ATOMIC_RELAXED) == 0) {
|
|
@@ -2555,7 +2555,7 @@ hns3vf_stop_service(struct hns3_adapter *hns)
|
|
rte_wmb();
|
|
/* Disable datapath on secondary process. */
|
|
hns3_mp_req_stop_rxtx(eth_dev);
|
|
- rte_delay_ms(hw->tqps_num);
|
|
+ rte_delay_ms(hw->cfg_max_queues);
|
|
|
|
rte_spinlock_lock(&hw->lock);
|
|
if (hw->adapter_state == HNS3_NIC_STARTED ||
|
|
--
|
|
2.7.4
|
|
|