netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 0/2] bnxt_en: firmware message delay fixes.
@ 2019-02-21  0:07 Michael Chan
  2019-02-21  0:07 ` [PATCH net 1/2] bnxt_en: Fix typo in firmware message timeout logic Michael Chan
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Michael Chan @ 2019-02-21  0:07 UTC (permalink / raw)
  To: davem; +Cc: netdev

We were seeing some intermittent firmware message timeouts in our lab and
these 2 small patches fix them.  Please apply to stable as well.  Thanks.

Michael Chan (2):
  bnxt_en: Fix typo in firmware message timeout logic.
  bnxt_en: Wait longer for the firmware message response to complete.

 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 ++--
 drivers/net/ethernet/broadcom/bnxt/bnxt.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

-- 
2.5.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH net 1/2] bnxt_en: Fix typo in firmware message timeout logic.
  2019-02-21  0:07 [PATCH net 0/2] bnxt_en: firmware message delay fixes Michael Chan
@ 2019-02-21  0:07 ` Michael Chan
  2019-02-21  0:07 ` [PATCH net 2/2] bnxt_en: Wait longer for the firmware message response to complete Michael Chan
  2019-02-22 23:21 ` [PATCH net 0/2] bnxt_en: firmware message delay fixes David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Michael Chan @ 2019-02-21  0:07 UTC (permalink / raw)
  To: davem; +Cc: netdev

The logic that polls for the firmware message response uses a shorter
sleep interval for the first few passes.  But there was a typo so it
was using the wrong counter (larger counter) for these short sleep
passes.  The result is a slightly shorter timeout period for these
firmware messages than intended.  Fix it by using the proper counter.

Fixes: 9751e8e71487 ("bnxt_en: reduce timeout on initial HWRM calls")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 8bc7e49..1ddd672 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -3903,7 +3903,7 @@ static int bnxt_hwrm_do_send_msg(struct bnxt *bp, void *msg, u32 msg_len,
 			if (len)
 				break;
 			/* on first few passes, just barely sleep */
-			if (i < DFLT_HWRM_CMD_TIMEOUT)
+			if (i < HWRM_SHORT_TIMEOUT_COUNTER)
 				usleep_range(HWRM_SHORT_MIN_TIMEOUT,
 					     HWRM_SHORT_MAX_TIMEOUT);
 			else
-- 
2.5.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH net 2/2] bnxt_en: Wait longer for the firmware message response to complete.
  2019-02-21  0:07 [PATCH net 0/2] bnxt_en: firmware message delay fixes Michael Chan
  2019-02-21  0:07 ` [PATCH net 1/2] bnxt_en: Fix typo in firmware message timeout logic Michael Chan
@ 2019-02-21  0:07 ` Michael Chan
  2019-02-22 23:21 ` [PATCH net 0/2] bnxt_en: firmware message delay fixes David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Michael Chan @ 2019-02-21  0:07 UTC (permalink / raw)
  To: davem; +Cc: netdev

The code waits up to 20 usec for the firmware response to complete
once we've seen the valid response header in the buffer.  It turns
out that in some scenarios, this wait time is not long enough.
Extend it to 150 usec and use usleep_range() instead of udelay().

Fixes: 9751e8e71487 ("bnxt_en: reduce timeout on initial HWRM calls")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 1ddd672..d95730c 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -3926,7 +3926,7 @@ static int bnxt_hwrm_do_send_msg(struct bnxt *bp, void *msg, u32 msg_len,
 			dma_rmb();
 			if (*valid)
 				break;
-			udelay(1);
+			usleep_range(1, 5);
 		}
 
 		if (j >= HWRM_VALID_BIT_DELAY_USEC) {
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index a451796..2fb653e 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -582,7 +582,7 @@ struct nqe_cn {
 	(HWRM_SHORT_TIMEOUT_COUNTER * HWRM_SHORT_MIN_TIMEOUT +		\
 	 ((n) - HWRM_SHORT_TIMEOUT_COUNTER) * HWRM_MIN_TIMEOUT))
 
-#define HWRM_VALID_BIT_DELAY_USEC	20
+#define HWRM_VALID_BIT_DELAY_USEC	150
 
 #define BNXT_HWRM_CHNL_CHIMP	0
 #define BNXT_HWRM_CHNL_KONG	1
-- 
2.5.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net 0/2] bnxt_en: firmware message delay fixes.
  2019-02-21  0:07 [PATCH net 0/2] bnxt_en: firmware message delay fixes Michael Chan
  2019-02-21  0:07 ` [PATCH net 1/2] bnxt_en: Fix typo in firmware message timeout logic Michael Chan
  2019-02-21  0:07 ` [PATCH net 2/2] bnxt_en: Wait longer for the firmware message response to complete Michael Chan
@ 2019-02-22 23:21 ` David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2019-02-22 23:21 UTC (permalink / raw)
  To: michael.chan; +Cc: netdev

From: Michael Chan <michael.chan@broadcom.com>
Date: Wed, 20 Feb 2019 19:07:30 -0500

> We were seeing some intermittent firmware message timeouts in our lab and
> these 2 small patches fix them.  Please apply to stable as well.  Thanks.

Applied and queued up, thanks!

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-02-22 23:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-21  0:07 [PATCH net 0/2] bnxt_en: firmware message delay fixes Michael Chan
2019-02-21  0:07 ` [PATCH net 1/2] bnxt_en: Fix typo in firmware message timeout logic Michael Chan
2019-02-21  0:07 ` [PATCH net 2/2] bnxt_en: Wait longer for the firmware message response to complete Michael Chan
2019-02-22 23:21 ` [PATCH net 0/2] bnxt_en: firmware message delay fixes David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).