[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