patch 'net/hns3: extract common functions to set Rx/Tx' has been queued to stable release 20.11.8

luca.boccassi at gmail.com luca.boccassi at gmail.com
Thu Feb 23 10:36:52 CET 2023


Hi,

FYI, your patch has been queued to stable release 20.11.8

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/25/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/248a22552eee5c3ee6fafaeeaa29b37158867859

Thanks.

Luca Boccassi

---
>From 248a22552eee5c3ee6fafaeeaa29b37158867859 Mon Sep 17 00:00:00 2001
From: Huisong Li <lihuisong at huawei.com>
Date: Sat, 11 Feb 2023 17:18:30 +0800
Subject: [PATCH] net/hns3: extract common functions to set Rx/Tx

[ upstream commit 4ba28c957a16bbfe5b2a8d49dfda1c85387d7602 ]

Extract two common functions to set Rx/Tx function in order to
reduce duplicate codes.

Fixes: 23d4b61fee5d ("net/hns3: support multiple process")

Signed-off-by: Huisong Li <lihuisong at huawei.com>
Signed-off-by: Dongdong Liu <liudongdong3 at huawei.com>
---
 drivers/net/hns3/hns3_ethdev.c    | 19 ++++---------------
 drivers/net/hns3/hns3_ethdev_vf.c | 20 +++++---------------
 drivers/net/hns3/hns3_mp.c        |  4 ++--
 drivers/net/hns3/hns3_rxtx.c      | 29 +++++++++++++++++++++++++++++
 drivers/net/hns3/hns3_rxtx.h      |  2 ++
 5 files changed, 42 insertions(+), 32 deletions(-)

diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 4c650e9a72..8d5e1f4beb 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -5077,8 +5077,7 @@ hns3_dev_start(struct rte_eth_dev *dev)
 	rte_spinlock_unlock(&hw->lock);
 
 	hns3_rx_scattered_calc(dev);
-	hns3_set_rxtx_function(dev);
-	hns3_mp_req_start_rxtx(dev);
+	hns3_start_rxtx_datapath(dev);
 	rte_eal_alarm_set(HNS3_SERVICE_INTERVAL, hns3_service_handler, dev);
 
 	/* Enable interrupt of all rx queues before enabling queues */
@@ -5184,12 +5183,7 @@ hns3_dev_stop(struct rte_eth_dev *dev)
 	dev->data->dev_started = 0;
 
 	hw->adapter_state = HNS3_NIC_STOPPING;
-	hns3_set_rxtx_function(dev);
-	rte_wmb();
-	/* Disable datapath on secondary process. */
-	hns3_mp_req_stop_rxtx(dev);
-	/* Prevent crashes when queues are still in use. */
-	rte_delay_ms(hw->cfg_max_queues);
+	hns3_stop_rxtx_datapath(dev);
 
 	rte_spinlock_lock(&hw->lock);
 	if (rte_atomic16_read(&hw->reset.resetting) == 0) {
@@ -5679,11 +5673,7 @@ hns3_stop_service(struct hns3_adapter *hns)
 		rte_eal_alarm_cancel(hns3_service_handler, eth_dev);
 	hw->mac.link_status = ETH_LINK_DOWN;
 
-	hns3_set_rxtx_function(eth_dev);
-	rte_wmb();
-	/* Disable datapath on secondary process. */
-	hns3_mp_req_stop_rxtx(eth_dev);
-	rte_delay_ms(hw->cfg_max_queues);
+	hns3_stop_rxtx_datapath(eth_dev);
 
 	rte_spinlock_lock(&hw->lock);
 	if (hns->hw.adapter_state == HNS3_NIC_STARTED ||
@@ -5716,8 +5706,7 @@ hns3_start_service(struct hns3_adapter *hns)
 	    hw->reset.level == HNS3_GLOBAL_RESET)
 		hns3_set_rst_done(hw);
 	eth_dev = &rte_eth_devices[hw->data->port_id];
-	hns3_set_rxtx_function(eth_dev);
-	hns3_mp_req_start_rxtx(eth_dev);
+	hns3_start_rxtx_datapath(eth_dev);
 	if (hw->adapter_state == HNS3_NIC_STARTED) {
 		hns3_service_handler(eth_dev);
 
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
index 8e6fe9bd54..94652dfb1d 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -1962,12 +1962,7 @@ hns3vf_dev_stop(struct rte_eth_dev *dev)
 	dev->data->dev_started = 0;
 
 	hw->adapter_state = HNS3_NIC_STOPPING;
-	hns3_set_rxtx_function(dev);
-	rte_wmb();
-	/* Disable datapath on secondary process. */
-	hns3_mp_req_stop_rxtx(dev);
-	/* Prevent crashes when queues are still in use. */
-	rte_delay_ms(hw->cfg_max_queues);
+	hns3_stop_rxtx_datapath(dev);
 
 	rte_spinlock_lock(&hw->lock);
 	if (rte_atomic16_read(&hw->reset.resetting) == 0) {
@@ -2241,8 +2236,7 @@ hns3vf_dev_start(struct rte_eth_dev *dev)
 	rte_spinlock_unlock(&hw->lock);
 
 	hns3_rx_scattered_calc(dev);
-	hns3_set_rxtx_function(dev);
-	hns3_mp_req_start_rxtx(dev);
+	hns3_start_rxtx_datapath(dev);
 	hns3vf_service_handler(dev);
 
 	/* Enable interrupt of all rx queues before enabling queues */
@@ -2406,11 +2400,7 @@ hns3vf_stop_service(struct hns3_adapter *hns)
 		rte_eal_alarm_cancel(hns3vf_service_handler, eth_dev);
 	hw->mac.link_status = ETH_LINK_DOWN;
 
-	hns3_set_rxtx_function(eth_dev);
-	rte_wmb();
-	/* Disable datapath on secondary process. */
-	hns3_mp_req_stop_rxtx(eth_dev);
-	rte_delay_ms(hw->cfg_max_queues);
+	hns3_stop_rxtx_datapath(eth_dev);
 
 	rte_spinlock_lock(&hw->lock);
 	if (hw->adapter_state == HNS3_NIC_STARTED ||
@@ -2440,8 +2430,8 @@ hns3vf_start_service(struct hns3_adapter *hns)
 	struct rte_eth_dev *eth_dev;
 
 	eth_dev = &rte_eth_devices[hw->data->port_id];
-	hns3_set_rxtx_function(eth_dev);
-	hns3_mp_req_start_rxtx(eth_dev);
+	hns3_start_rxtx_datapath(eth_dev);
+
 	if (hw->adapter_state == HNS3_NIC_STARTED) {
 		hns3vf_service_handler(eth_dev);
 
diff --git a/drivers/net/hns3/hns3_mp.c b/drivers/net/hns3/hns3_mp.c
index 8d7fb93065..1b5cd696f5 100644
--- a/drivers/net/hns3/hns3_mp.c
+++ b/drivers/net/hns3/hns3_mp.c
@@ -87,7 +87,7 @@ mp_secondary_handle(const struct rte_mp_msg *mp_msg, const void *peer)
 	case HNS3_MP_REQ_START_RXTX:
 		PMD_INIT_LOG(INFO, "port %u starting datapath",
 			     dev->data->port_id);
-		hns3_set_rxtx_function(dev);
+		hns3_start_rxtx_datapath(dev);
 		rte_mb();
 		mp_init_msg(dev, &mp_res, param->type);
 		res->result = 0;
@@ -96,7 +96,7 @@ mp_secondary_handle(const struct rte_mp_msg *mp_msg, const void *peer)
 	case HNS3_MP_REQ_STOP_RXTX:
 		PMD_INIT_LOG(INFO, "port %u stopping datapath",
 			     dev->data->port_id);
-		hns3_set_rxtx_function(dev);
+		hns3_stop_rxtx_datapath(dev);
 		rte_mb();
 		mp_init_msg(dev, &mp_res, param->type);
 		res->result = 0;
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index fadec9c7e2..1a1e62c1c1 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -19,6 +19,7 @@
 #include "hns3_regs.h"
 #include "hns3_logs.h"
 #include "hns3_rxtx.h"
+#include "hns3_mp.h"
 
 #define HNS3_CFG_DESC_NUM(num)	((num) / 8 - 1)
 #define HNS3_RX_RING_PREFETCTH_MASK	3
@@ -4117,3 +4118,31 @@ hns3_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 	else
 		return fbd_num - driver_hold_bd_num;
 }
+
+void
+hns3_stop_rxtx_datapath(struct rte_eth_dev *dev)
+{
+	struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+
+	hns3_set_rxtx_function(dev);
+
+	if (rte_eal_process_type() == RTE_PROC_SECONDARY)
+		return;
+
+	rte_wmb();
+	/* Disable datapath on secondary process. */
+	hns3_mp_req_stop_rxtx(dev);
+	/* Prevent crashes when queues are still in use. */
+	rte_delay_ms(hw->cfg_max_queues);
+}
+
+void
+hns3_start_rxtx_datapath(struct rte_eth_dev *dev)
+{
+	hns3_set_rxtx_function(dev);
+
+	if (rte_eal_process_type() == RTE_PROC_SECONDARY)
+		return;
+
+	hns3_mp_req_start_rxtx(dev);
+}
diff --git a/drivers/net/hns3/hns3_rxtx.h b/drivers/net/hns3/hns3_rxtx.h
index b18c3f1165..74371d0866 100644
--- a/drivers/net/hns3/hns3_rxtx.h
+++ b/drivers/net/hns3/hns3_rxtx.h
@@ -702,5 +702,7 @@ int hns3_start_all_txqs(struct rte_eth_dev *dev);
 int hns3_start_all_rxqs(struct rte_eth_dev *dev);
 void hns3_stop_all_txqs(struct rte_eth_dev *dev);
 void hns3_restore_tqp_enable_state(struct hns3_hw *hw);
+void hns3_stop_rxtx_datapath(struct rte_eth_dev *dev);
+void hns3_start_rxtx_datapath(struct rte_eth_dev *dev);
 
 #endif /* _HNS3_RXTX_H_ */
-- 
2.39.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2023-02-23 09:36:30.142438137 +0000
+++ 0048-net-hns3-extract-common-functions-to-set-Rx-Tx.patch	2023-02-23 09:36:28.290171119 +0000
@@ -1 +1 @@
-From 4ba28c957a16bbfe5b2a8d49dfda1c85387d7602 Mon Sep 17 00:00:00 2001
+From 248a22552eee5c3ee6fafaeeaa29b37158867859 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4ba28c957a16bbfe5b2a8d49dfda1c85387d7602 ]
+
@@ -10 +11,0 @@
-Cc: stable at dpdk.org
@@ -15,2 +16,2 @@
- drivers/net/hns3/hns3_ethdev.c    | 20 ++++----------------
- drivers/net/hns3/hns3_ethdev_vf.c | 19 ++++---------------
+ drivers/net/hns3/hns3_ethdev.c    | 19 ++++---------------
+ drivers/net/hns3/hns3_ethdev_vf.c | 20 +++++---------------
@@ -18 +19 @@
- drivers/net/hns3/hns3_rxtx.c      | 28 ++++++++++++++++++++++++++++
+ drivers/net/hns3/hns3_rxtx.c      | 29 +++++++++++++++++++++++++++++
@@ -20 +21 @@
- 5 files changed, 40 insertions(+), 33 deletions(-)
+ 5 files changed, 42 insertions(+), 32 deletions(-)
@@ -23 +24 @@
-index ab565ce128..6babf67fce 100644
+index 4c650e9a72..8d5e1f4beb 100644
@@ -26 +27 @@
-@@ -5052,8 +5052,7 @@ hns3_dev_start(struct rte_eth_dev *dev)
+@@ -5077,8 +5077,7 @@ hns3_dev_start(struct rte_eth_dev *dev)
@@ -32,0 +34 @@
+ 	rte_eal_alarm_set(HNS3_SERVICE_INTERVAL, hns3_service_handler, dev);
@@ -35,2 +37 @@
- 	hns3_dev_all_rx_queue_intr_enable(hw, true);
-@@ -5131,12 +5130,7 @@ hns3_dev_stop(struct rte_eth_dev *dev)
+@@ -5184,12 +5183,7 @@ hns3_dev_stop(struct rte_eth_dev *dev)
@@ -49,2 +50,2 @@
- 	if (__atomic_load_n(&hw->reset.resetting, __ATOMIC_RELAXED) == 0) {
-@@ -5752,12 +5746,7 @@ hns3_stop_service(struct hns3_adapter *hns)
+ 	if (rte_atomic16_read(&hw->reset.resetting) == 0) {
+@@ -5679,11 +5673,7 @@ hns3_stop_service(struct hns3_adapter *hns)
@@ -52,3 +53,2 @@
- 		hns3_update_linkstatus_and_event(hw, false);
- 	}
--
+ 	hw->mac.link_status = ETH_LINK_DOWN;
+ 
@@ -64 +64 @@
-@@ -5790,8 +5779,7 @@ hns3_start_service(struct hns3_adapter *hns)
+@@ -5716,8 +5706,7 @@ hns3_start_service(struct hns3_adapter *hns)
@@ -72,2 +72,2 @@
- 		/*
- 		 * This API parent function already hold the hns3_hw.lock, the
+ 		hns3_service_handler(eth_dev);
+ 
@@ -75 +75 @@
-index d3c1bdf2c5..d051a1357b 100644
+index 8e6fe9bd54..94652dfb1d 100644
@@ -78 +78 @@
-@@ -1572,12 +1572,7 @@ hns3vf_dev_stop(struct rte_eth_dev *dev)
+@@ -1962,12 +1962,7 @@ hns3vf_dev_stop(struct rte_eth_dev *dev)
@@ -91,2 +91,2 @@
- 	if (__atomic_load_n(&hw->reset.resetting, __ATOMIC_RELAXED) == 0) {
-@@ -1731,8 +1726,7 @@ hns3vf_dev_start(struct rte_eth_dev *dev)
+ 	if (rte_atomic16_read(&hw->reset.resetting) == 0) {
+@@ -2241,8 +2236,7 @@ hns3vf_dev_start(struct rte_eth_dev *dev)
@@ -98,0 +99 @@
+ 	hns3vf_service_handler(dev);
@@ -101,4 +102,3 @@
- 	hns3_dev_all_rx_queue_intr_enable(hw, true);
-@@ -1902,11 +1896,7 @@ hns3vf_stop_service(struct hns3_adapter *hns)
- 	}
- 	hw->mac.link_status = RTE_ETH_LINK_DOWN;
+@@ -2406,11 +2400,7 @@ hns3vf_stop_service(struct hns3_adapter *hns)
+ 		rte_eal_alarm_cancel(hns3vf_service_handler, eth_dev);
+ 	hw->mac.link_status = ETH_LINK_DOWN;
@@ -115 +115 @@
-@@ -1938,8 +1928,7 @@ hns3vf_start_service(struct hns3_adapter *hns)
+@@ -2440,8 +2430,8 @@ hns3vf_start_service(struct hns3_adapter *hns)
@@ -121,0 +122,3 @@
++
+ 	if (hw->adapter_state == HNS3_NIC_STARTED) {
+ 		hns3vf_service_handler(eth_dev);
@@ -123,2 +125,0 @@
- 	rte_eal_alarm_set(HNS3VF_KEEP_ALIVE_INTERVAL, hns3vf_keep_alive_handler,
- 			  eth_dev);
@@ -126 +127 @@
-index 7184f9ad58..556f1941c6 100644
+index 8d7fb93065..1b5cd696f5 100644
@@ -129 +130 @@
-@@ -89,12 +89,12 @@ mp_secondary_handle(const struct rte_mp_msg *mp_msg, const void *peer)
+@@ -87,7 +87,7 @@ mp_secondary_handle(const struct rte_mp_msg *mp_msg, const void *peer)
@@ -135 +136,4 @@
- 		break;
+ 		rte_mb();
+ 		mp_init_msg(dev, &mp_res, param->type);
+ 		res->result = 0;
+@@ -96,7 +96,7 @@ mp_secondary_handle(const struct rte_mp_msg *mp_msg, const void *peer)
@@ -141,3 +145,3 @@
- 		break;
- 	case HNS3_MP_REQ_START_TX:
- 		PMD_INIT_LOG(INFO, "port %u starting Tx datapath",
+ 		rte_mb();
+ 		mp_init_msg(dev, &mp_res, param->type);
+ 		res->result = 0;
@@ -145 +149 @@
-index def22bcd30..4065c519c3 100644
+index fadec9c7e2..1a1e62c1c1 100644
@@ -148,3 +152,11 @@
-@@ -4765,3 +4765,31 @@ hns3_start_tx_datapath(struct rte_eth_dev *dev)
- 
- 	hns3_mp_req_start_tx(dev);
+@@ -19,6 +19,7 @@
+ #include "hns3_regs.h"
+ #include "hns3_logs.h"
+ #include "hns3_rxtx.h"
++#include "hns3_mp.h"
+ 
+ #define HNS3_CFG_DESC_NUM(num)	((num) / 8 - 1)
+ #define HNS3_RX_RING_PREFETCTH_MASK	3
+@@ -4117,3 +4118,31 @@ hns3_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)
+ 	else
+ 		return fbd_num - driver_hold_bd_num;
@@ -181 +193 @@
-index 1bdc124b7b..fa39f6481a 100644
+index b18c3f1165..74371d0866 100644
@@ -184,4 +196,4 @@
-@@ -773,5 +773,7 @@ int hns3_dev_tx_descriptor_status(void *tx_queue, uint16_t offset);
- void hns3_tx_push_init(struct rte_eth_dev *dev);
- void hns3_stop_tx_datapath(struct rte_eth_dev *dev);
- void hns3_start_tx_datapath(struct rte_eth_dev *dev);
+@@ -702,5 +702,7 @@ int hns3_start_all_txqs(struct rte_eth_dev *dev);
+ int hns3_start_all_rxqs(struct rte_eth_dev *dev);
+ void hns3_stop_all_txqs(struct rte_eth_dev *dev);
+ void hns3_restore_tqp_enable_state(struct hns3_hw *hw);
@@ -191 +203 @@
- #endif /* HNS3_RXTX_H */
+ #endif /* _HNS3_RXTX_H_ */


More information about the stable mailing list