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 D921741D4F for ; Thu, 23 Feb 2023 10:39:48 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D2D7143152; Thu, 23 Feb 2023 10:39:48 +0100 (CET) Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by mails.dpdk.org (Postfix) with ESMTP id 19D9B427E9 for ; Thu, 23 Feb 2023 10:39:47 +0100 (CET) Received: by mail-wr1-f49.google.com with SMTP id c12so10139906wrw.1 for ; Thu, 23 Feb 2023 01:39:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MyNcGeiZ8jqjpqJZkHe//VV4pzVqVqC4o/JyQDnRikw=; b=SzqolYDSDwmhRMm91VfwLLMGutIUNi0GDW8S6p1jvm8WhU5no3eBe8QdAsD9bVTUW4 mSLiShT8bN3eiBBMnYtWsMAGXN03SCAJN2bPfU/T6/tNoWT3sA0rMwfws4G/VFRzXU6w B6d14JpvbknGAFEEq0CKqIR/GHyirfeVetuj9G0ZpwwFksfzvCOGQ+1nel+TNgRkKQcu 3ZGnb+hf0C1HuySMDKzDFVdNIeGjcuYEE+u/NHD7TnF/viUOPCWdtGcd28MJXV7a0OiG GMnC9PoHedQ5G7yfOcgx80f4LgOFqYXq3AFpBTXESdTYL+zjp/ifJ2/uqGEjlofLFNwX zo2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MyNcGeiZ8jqjpqJZkHe//VV4pzVqVqC4o/JyQDnRikw=; b=B28gN/8uNIAOqJYl2gIDRHwtnEQuYnY8KMWmKRWx0OsIXT8XaECpODw4N0sEqNsw4Z f9FPxhZMMpQ2BrYL4vZSs0suJG7ZEQU7+1WcIaqXVMLd9ouP/AQBNT3HRfHTkJOapzXy HNym62LxhjKMUKPzkpY6ytmqFV58u70H9kDpilBcIwRo4ElxOIGcL40Gd1oCSDmYUsSp YWf/TSfquvr2zScy7SqwPCFlsZh3VCiNDbFG5B2EzMrkR3RRJg1VCh79Gj6JnbECQbbX jB4u87uI5Dn0HFA9HOsB5/suAMIi9UQ+JBP6RP5URcSN5ghPzbUe4+03CIAvJ86XeiOE 1jUA== X-Gm-Message-State: AO0yUKUQy6ghyvx0fH95G9BKWxCrBdHwO9IbsuxTfQ1AWykDJIbkjshF tuAJTUu1EsAo0tSC6Kto9SxoWa3AI5LgKw== X-Google-Smtp-Source: AK7set/xV0UqFf+CsLMmyVkwhKWurHYzgXp5JnNQ0P84cV0Gb4DlIMPOE2dvPH7JZmQFrFv1t0eqxg== X-Received: by 2002:adf:fb06:0:b0:2c5:4af3:3d26 with SMTP id c6-20020adffb06000000b002c54af33d26mr10145934wrr.9.1677145186732; Thu, 23 Feb 2023 01:39:46 -0800 (PST) Received: from localhost ([2a01:4b00:d307:1000:f1d3:eb5e:11f4:a7d9]) by smtp.gmail.com with ESMTPSA id n9-20020a5d4c49000000b002c54536c662sm9375704wrt.34.2023.02.23.01.39.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Feb 2023 01:39:46 -0800 (PST) From: luca.boccassi@gmail.com To: Huisong Li Cc: Dongdong Liu , dpdk stable Subject: patch 'net/hns3: extract common functions to set Rx/Tx' has been queued to stable release 20.11.8 Date: Thu, 23 Feb 2023 09:36:52 +0000 Message-Id: <20230223093715.3926893-48-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230223093715.3926893-1-luca.boccassi@gmail.com> References: <20230223093715.3926893-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org 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 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 Signed-off-by: Dongdong Liu --- 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@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_ */