[dpdk-stable] patch 'net/bnxt: get default HWRM command timeout from FW' has been queued to LTS release 17.11.10

luca.boccassi at gmail.com luca.boccassi at gmail.com
Thu Dec 19 15:33:29 CET 2019


Hi,

FYI, your patch has been queued to LTS release 17.11.10

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

Thanks.

Luca Boccassi

---
>From 8d3c93905d3c22dc3346c05fb1178bf6899dbd4a Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde at broadcom.com>
Date: Wed, 9 Oct 2019 18:41:47 -0700
Subject: [PATCH] net/bnxt: get default HWRM command timeout from FW

[ upstream commit 458f0360e8dc72ccc6f98ca724ab3d55325ad493 ]

The HWRM command timeout is set to a very high value.
VER_GET command response returns the default request timeout value.
Use this value for waiting for HWRM commands to complete.
Poll for the valid bit every 1us instead of 600us.

Fixes: cbcd375d37d2 ("net/bnxt: fix HWRM macros and locking")

Signed-off-by: Santoshkumar Karanappa Rastapur <santosh.rastapur at broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson at broadcom.com>
---
 drivers/net/bnxt/bnxt.h      | 5 +++++
 drivers/net/bnxt/bnxt_hwrm.c | 9 +++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 3bc2b93796..1fae24b801 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -246,6 +246,11 @@ struct bnxt {
 	uint16_t			max_req_len;
 	uint16_t			max_resp_len;
 
+	 /* default command timeout value of 50ms */
+#define HWRM_CMD_TIMEOUT		50000
+	/* default HWRM request timeout value */
+	uint32_t			hwrm_cmd_timeout;
+
 	struct bnxt_link_info	link_info;
 	struct bnxt_cos_queue_info	cos_queue[BNXT_COS_QUEUE_COUNT];
 
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 7d824aeb45..a8d7c487f9 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -53,8 +53,6 @@
 
 #include <rte_io.h>
 
-#define HWRM_CMD_TIMEOUT		10000
-
 struct bnxt_plcmodes_cfg {
 	uint32_t	flags;
 	uint16_t	jumbo_thresh;
@@ -613,6 +611,13 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
 	fw_version |= resp->hwrm_intf_min << 8;
 	fw_version |= resp->hwrm_intf_upd;
 
+	/* def_req_timeout value is in milliseconds */
+	bp->hwrm_cmd_timeout = rte_le_to_cpu_16(resp->def_req_timeout);
+	/* convert timeout to usec */
+	bp->hwrm_cmd_timeout *= 1000;
+	if (!bp->hwrm_cmd_timeout)
+		bp->hwrm_cmd_timeout = HWRM_CMD_TIMEOUT;
+
 	if (resp->hwrm_intf_maj != HWRM_VERSION_MAJOR) {
 		RTE_LOG(ERR, PMD, "Unsupported firmware API version\n");
 		rc = -EINVAL;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:28.786163518 +0000
+++ 0062-net-bnxt-get-default-HWRM-command-timeout-from-FW.patch	2019-12-19 14:32:26.133298381 +0000
@@ -1,31 +1,32 @@
-From 458f0360e8dc72ccc6f98ca724ab3d55325ad493 Mon Sep 17 00:00:00 2001
+From 8d3c93905d3c22dc3346c05fb1178bf6899dbd4a Mon Sep 17 00:00:00 2001
 From: Ajit Khaparde <ajit.khaparde at broadcom.com>
 Date: Wed, 9 Oct 2019 18:41:47 -0700
 Subject: [PATCH] net/bnxt: get default HWRM command timeout from FW
 
+[ upstream commit 458f0360e8dc72ccc6f98ca724ab3d55325ad493 ]
+
 The HWRM command timeout is set to a very high value.
 VER_GET command response returns the default request timeout value.
 Use this value for waiting for HWRM commands to complete.
 Poll for the valid bit every 1us instead of 600us.
 
 Fixes: cbcd375d37d2 ("net/bnxt: fix HWRM macros and locking")
-Cc: stable at dpdk.org
 
 Signed-off-by: Santoshkumar Karanappa Rastapur <santosh.rastapur at broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
 Reviewed-by: Lance Richardson <lance.richardson at broadcom.com>
 ---
- drivers/net/bnxt/bnxt.h      |  5 +++++
- drivers/net/bnxt/bnxt_hwrm.c | 13 +++++++++----
- 2 files changed, 14 insertions(+), 4 deletions(-)
+ drivers/net/bnxt/bnxt.h      | 5 +++++
+ drivers/net/bnxt/bnxt_hwrm.c | 9 +++++++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
-index ad0b18dddd..5020cd3415 100644
+index 3bc2b93796..1fae24b801 100644
 --- a/drivers/net/bnxt/bnxt.h
 +++ b/drivers/net/bnxt/bnxt.h
-@@ -525,6 +525,11 @@ struct bnxt {
+@@ -246,6 +246,11 @@ struct bnxt {
+ 	uint16_t			max_req_len;
  	uint16_t			max_resp_len;
- 	uint16_t                        hwrm_max_ext_req_len;
  
 +	 /* default command timeout value of 50ms */
 +#define HWRM_CMD_TIMEOUT		50000
@@ -33,36 +34,24 @@
 +	uint32_t			hwrm_cmd_timeout;
 +
  	struct bnxt_link_info	link_info;
- 	struct bnxt_cos_queue_info	rx_cos_queue[BNXT_COS_QUEUE_COUNT];
- 	struct bnxt_cos_queue_info	tx_cos_queue[BNXT_COS_QUEUE_COUNT];
+ 	struct bnxt_cos_queue_info	cos_queue[BNXT_COS_QUEUE_COUNT];
+ 
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index a40197e929..5e3117fee9 100644
+index 7d824aeb45..a8d7c487f9 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -25,8 +25,6 @@
+@@ -53,8 +53,6 @@
  
  #include <rte_io.h>
  
--#define HWRM_CMD_TIMEOUT		6000000
--#define HWRM_SHORT_CMD_TIMEOUT		50000
- #define HWRM_SPEC_CODE_1_8_3		0x10803
- #define HWRM_VERSION_1_9_1		0x10901
- #define HWRM_VERSION_1_9_2		0x10903
-@@ -105,9 +103,9 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
- 
- 	/* For VER_GET command, set timeout as 50ms */
- 	if (rte_cpu_to_le_16(req->req_type) == HWRM_VER_GET)
--		timeout = HWRM_SHORT_CMD_TIMEOUT;
--	else
- 		timeout = HWRM_CMD_TIMEOUT;
-+	else
-+		timeout = bp->hwrm_cmd_timeout;
- 
- 	if (bp->flags & BNXT_FLAG_SHORT_CMD ||
- 	    msg_len > bp->max_req_len) {
-@@ -969,6 +967,13 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
- 	fw_version |= resp->hwrm_intf_upd_8b;
- 	bp->hwrm_spec_code = fw_version;
+-#define HWRM_CMD_TIMEOUT		10000
+-
+ struct bnxt_plcmodes_cfg {
+ 	uint32_t	flags;
+ 	uint16_t	jumbo_thresh;
+@@ -613,6 +611,13 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
+ 	fw_version |= resp->hwrm_intf_min << 8;
+ 	fw_version |= resp->hwrm_intf_upd;
  
 +	/* def_req_timeout value is in milliseconds */
 +	bp->hwrm_cmd_timeout = rte_le_to_cpu_16(resp->def_req_timeout);
@@ -71,8 +60,8 @@
 +	if (!bp->hwrm_cmd_timeout)
 +		bp->hwrm_cmd_timeout = HWRM_CMD_TIMEOUT;
 +
- 	if (resp->hwrm_intf_maj_8b != HWRM_VERSION_MAJOR) {
- 		PMD_DRV_LOG(ERR, "Unsupported firmware API version\n");
+ 	if (resp->hwrm_intf_maj != HWRM_VERSION_MAJOR) {
+ 		RTE_LOG(ERR, PMD, "Unsupported firmware API version\n");
  		rc = -EINVAL;
 -- 
 2.20.1


More information about the stable mailing list