patch 'net/hns3: fix reset timeout' has been queued to stable release 22.11.8
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Mon Feb 17 18:04:35 CET 2025
Hi,
FYI, your patch has been queued to stable release 22.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/19/25. 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/123786e4ac5f10646fec5018a74cd32725173b84
Thanks.
Luca Boccassi
---
>From 123786e4ac5f10646fec5018a74cd32725173b84 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui at huawei.com>
Date: Mon, 10 Feb 2025 11:01:13 +0800
Subject: [PATCH] net/hns3: fix reset timeout
[ upstream commit 9f7c28c5e98062576dfbf555cd5ede7e33d6624b ]
There is low probability that the driver reset timeout, the root cause is
that the firmware processing take a litter long than normal when process
reset command. This patch fix it by changing the timeout of the reset
command to 100 ms.
Fixes: 737f30e1c3ab ("net/hns3: support command interface with firmware")
Signed-off-by: Dengdui Huang <huangdengdui at huawei.com>
---
drivers/net/hns3/hns3_cmd.c | 18 ++++++++++++------
drivers/net/hns3/hns3_cmd.h | 4 ++--
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/drivers/net/hns3/hns3_cmd.c b/drivers/net/hns3/hns3_cmd.c
index 7bdf7740c1..50e135b8e3 100644
--- a/drivers/net/hns3/hns3_cmd.c
+++ b/drivers/net/hns3/hns3_cmd.c
@@ -304,8 +304,17 @@ hns3_cmd_get_hardware_reply(struct hns3_hw *hw,
return hns3_cmd_convert_err_code(desc_ret);
}
-static int hns3_cmd_poll_reply(struct hns3_hw *hw)
+static uint32_t hns3_get_cmd_tx_timeout(uint16_t opcode)
{
+ if (opcode == HNS3_OPC_CFG_RST_TRIGGER)
+ return HNS3_COMQ_CFG_RST_TIMEOUT;
+
+ return HNS3_CMDQ_TX_TIMEOUT_DEFAULT;
+}
+
+static int hns3_cmd_poll_reply(struct hns3_hw *hw, uint16_t opcode)
+{
+ uint32_t cmdq_tx_timeout = hns3_get_cmd_tx_timeout(opcode);
struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
uint32_t timeout = 0;
@@ -326,7 +335,7 @@ static int hns3_cmd_poll_reply(struct hns3_hw *hw)
rte_delay_us(1);
timeout++;
- } while (timeout < hw->cmq.tx_timeout);
+ } while (timeout < cmdq_tx_timeout);
hns3_err(hw, "Wait for reply timeout");
return -ETIME;
}
@@ -400,7 +409,7 @@ hns3_cmd_send(struct hns3_hw *hw, struct hns3_cmd_desc *desc, int num)
* if multi descriptors to be sent, use the first one to check.
*/
if (HNS3_CMD_SEND_SYNC(rte_le_to_cpu_16(desc->flag))) {
- retval = hns3_cmd_poll_reply(hw);
+ retval = hns3_cmd_poll_reply(hw, desc->opcode);
if (!retval)
retval = hns3_cmd_get_hardware_reply(hw, desc, num,
ntc);
@@ -605,9 +614,6 @@ hns3_cmd_init_queue(struct hns3_hw *hw)
hw->cmq.csq.desc_num = HNS3_NIC_CMQ_DESC_NUM;
hw->cmq.crq.desc_num = HNS3_NIC_CMQ_DESC_NUM;
- /* Setup Tx write back timeout */
- hw->cmq.tx_timeout = HNS3_CMDQ_TX_TIMEOUT;
-
/* Setup queue rings */
ret = hns3_alloc_cmd_queue(hw, HNS3_TYPE_CSQ);
if (ret) {
diff --git a/drivers/net/hns3/hns3_cmd.h b/drivers/net/hns3/hns3_cmd.h
index 0a4d59bd9b..ae797a7692 100644
--- a/drivers/net/hns3/hns3_cmd.h
+++ b/drivers/net/hns3/hns3_cmd.h
@@ -10,7 +10,8 @@
#include <rte_byteorder.h>
#include <rte_spinlock.h>
-#define HNS3_CMDQ_TX_TIMEOUT 30000
+#define HNS3_CMDQ_TX_TIMEOUT_DEFAULT 30000
+#define HNS3_COMQ_CFG_RST_TIMEOUT 100000
#define HNS3_CMDQ_CLEAR_WAIT_TIME 200
#define HNS3_CMDQ_RX_INVLD_B 0
#define HNS3_CMDQ_RX_OUTVLD_B 1
@@ -62,7 +63,6 @@ enum hns3_cmd_return_status {
struct hns3_cmq {
struct hns3_cmq_ring csq;
struct hns3_cmq_ring crq;
- uint16_t tx_timeout;
enum hns3_cmd_return_status last_status;
};
--
2.47.2
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-02-17 16:13:19.033936981 +0000
+++ 0062-net-hns3-fix-reset-timeout.patch 2025-02-17 16:13:16.858441592 +0000
@@ -1 +1 @@
-From 9f7c28c5e98062576dfbf555cd5ede7e33d6624b Mon Sep 17 00:00:00 2001
+From 123786e4ac5f10646fec5018a74cd32725173b84 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9f7c28c5e98062576dfbf555cd5ede7e33d6624b ]
+
@@ -12 +13,0 @@
-Cc: stable at dpdk.org
@@ -21 +22 @@
-index 146444e2fa..398b75384e 100644
+index 7bdf7740c1..50e135b8e3 100644
@@ -61 +62 @@
-@@ -611,9 +620,6 @@ hns3_cmd_init_queue(struct hns3_hw *hw)
+@@ -605,9 +614,6 @@ hns3_cmd_init_queue(struct hns3_hw *hw)
@@ -72 +73 @@
-index 79a8c1edad..4d707c13b2 100644
+index 0a4d59bd9b..ae797a7692 100644
More information about the stable
mailing list