Thomas Bogendoerfer dbd5f9
From: Michael Chan <michael.chan@broadcom.com>
Thomas Bogendoerfer dbd5f9
Date: Wed, 20 Feb 2019 19:07:32 -0500
Thomas Bogendoerfer dbd5f9
Subject: bnxt_en: Wait longer for the firmware message response to complete.
Thomas Bogendoerfer dbd5f9
Patch-mainline: v5.0-rc8
Thomas Bogendoerfer dbd5f9
Git-commit: 0000b81a063b5f3ab82fa18041c28327ce72c312
Thomas Bogendoerfer dbd5f9
References: bsc#1086282 FATE#324873
Thomas Bogendoerfer dbd5f9
Thomas Bogendoerfer dbd5f9
The code waits up to 20 usec for the firmware response to complete
Thomas Bogendoerfer dbd5f9
once we've seen the valid response header in the buffer.  It turns
Thomas Bogendoerfer dbd5f9
out that in some scenarios, this wait time is not long enough.
Thomas Bogendoerfer dbd5f9
Extend it to 150 usec and use usleep_range() instead of udelay().
Thomas Bogendoerfer dbd5f9
Thomas Bogendoerfer dbd5f9
Fixes: 9751e8e71487 ("bnxt_en: reduce timeout on initial HWRM calls")
Thomas Bogendoerfer dbd5f9
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Thomas Bogendoerfer dbd5f9
Signed-off-by: David S. Miller <davem@davemloft.net>
Thomas Bogendoerfer dbd5f9
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer dbd5f9
---
Thomas Bogendoerfer dbd5f9
 drivers/net/ethernet/broadcom/bnxt/bnxt.c |    2 +-
Thomas Bogendoerfer dbd5f9
 drivers/net/ethernet/broadcom/bnxt/bnxt.h |    2 +-
Thomas Bogendoerfer dbd5f9
 2 files changed, 2 insertions(+), 2 deletions(-)
Thomas Bogendoerfer dbd5f9
Thomas Bogendoerfer dbd5f9
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
Thomas Bogendoerfer dbd5f9
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
Thomas Bogendoerfer dbd5f9
@@ -3926,7 +3926,7 @@ static int bnxt_hwrm_do_send_msg(struct
Thomas Bogendoerfer dbd5f9
 			dma_rmb();
Thomas Bogendoerfer dbd5f9
 			if (*valid)
Thomas Bogendoerfer dbd5f9
 				break;
Thomas Bogendoerfer dbd5f9
-			udelay(1);
Thomas Bogendoerfer dbd5f9
+			usleep_range(1, 5);
Thomas Bogendoerfer dbd5f9
 		}
Thomas Bogendoerfer dbd5f9
 
Thomas Bogendoerfer dbd5f9
 		if (j >= HWRM_VALID_BIT_DELAY_USEC) {
Thomas Bogendoerfer dbd5f9
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
Thomas Bogendoerfer dbd5f9
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
Thomas Bogendoerfer dbd5f9
@@ -582,7 +582,7 @@ struct nqe_cn {
Thomas Bogendoerfer dbd5f9
 	(HWRM_SHORT_TIMEOUT_COUNTER * HWRM_SHORT_MIN_TIMEOUT +		\
Thomas Bogendoerfer dbd5f9
 	 ((n) - HWRM_SHORT_TIMEOUT_COUNTER) * HWRM_MIN_TIMEOUT))
Thomas Bogendoerfer dbd5f9
 
Thomas Bogendoerfer dbd5f9
-#define HWRM_VALID_BIT_DELAY_USEC	20
Thomas Bogendoerfer dbd5f9
+#define HWRM_VALID_BIT_DELAY_USEC	150
Thomas Bogendoerfer dbd5f9
 
Thomas Bogendoerfer dbd5f9
 #define BNXT_HWRM_CHNL_CHIMP	0
Thomas Bogendoerfer dbd5f9
 #define BNXT_HWRM_CHNL_KONG	1