[PATCH 4.9 158/310] cxgb4: FW upgrade fixes

2018-04-11 Thread Greg Kroah-Hartman
4.9-stable review patch.  If anyone has any objections, please let me know.

--

From: Arjun Vynipadath 


[ Upstream commit 26747211486c5bc7dd014c3caab206576e00c0d0 ]

Disable FW_OK flag while flashing Firmware. This will help to fix any
potential mailbox timeouts during Firmware flash.

Grab new devlog parameters after Firmware restart. When we FLASH new
Firmware onto an adapter, the new Firmware may have the Firmware Device Log
located at a different memory address or have a different size for it.

Signed-off-by: Arjun Vynipadath 
Signed-off-by: Casey Leedom 
Signed-off-by: Ganesh Goudar 
Signed-off-by: David S. Miller 
Signed-off-by: Sasha Levin 
Signed-off-by: Greg Kroah-Hartman 
---
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c |   21 ++---
 1 file changed, 18 insertions(+), 3 deletions(-)

--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
@@ -6185,13 +6185,18 @@ int t4_fw_upgrade(struct adapter *adap,
if (!t4_fw_matches_chip(adap, fw_hdr))
return -EINVAL;
 
+   /* Disable FW_OK flag so that mbox commands with FW_OK flag set
+* wont be sent when we are flashing FW.
+*/
+   adap->flags &= ~FW_OK;
+
ret = t4_fw_halt(adap, mbox, force);
if (ret < 0 && !force)
-   return ret;
+   goto out;
 
ret = t4_load_fw(adap, fw_data, size);
if (ret < 0)
-   return ret;
+   goto out;
 
/*
 * Older versions of the firmware don't understand the new
@@ -6202,7 +6207,17 @@ int t4_fw_upgrade(struct adapter *adap,
 * its header flags to see if it advertises the capability.
 */
reset = ((be32_to_cpu(fw_hdr->flags) & FW_HDR_FLAGS_RESET_HALT) == 0);
-   return t4_fw_restart(adap, mbox, reset);
+   ret = t4_fw_restart(adap, mbox, reset);
+
+   /* Grab potentially new Firmware Device Log parameters so we can see
+* how healthy the new Firmware is.  It's okay to contact the new
+* Firmware for these parameters even though, as far as it's
+* concerned, we've never said "HELLO" to it ...
+*/
+   (void)t4_init_devlog_params(adap);
+out:
+   adap->flags |= FW_OK;
+   return ret;
 }
 
 /**




[PATCH 4.9 158/310] cxgb4: FW upgrade fixes

2018-04-11 Thread Greg Kroah-Hartman
4.9-stable review patch.  If anyone has any objections, please let me know.

--

From: Arjun Vynipadath 


[ Upstream commit 26747211486c5bc7dd014c3caab206576e00c0d0 ]

Disable FW_OK flag while flashing Firmware. This will help to fix any
potential mailbox timeouts during Firmware flash.

Grab new devlog parameters after Firmware restart. When we FLASH new
Firmware onto an adapter, the new Firmware may have the Firmware Device Log
located at a different memory address or have a different size for it.

Signed-off-by: Arjun Vynipadath 
Signed-off-by: Casey Leedom 
Signed-off-by: Ganesh Goudar 
Signed-off-by: David S. Miller 
Signed-off-by: Sasha Levin 
Signed-off-by: Greg Kroah-Hartman 
---
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c |   21 ++---
 1 file changed, 18 insertions(+), 3 deletions(-)

--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
@@ -6185,13 +6185,18 @@ int t4_fw_upgrade(struct adapter *adap,
if (!t4_fw_matches_chip(adap, fw_hdr))
return -EINVAL;
 
+   /* Disable FW_OK flag so that mbox commands with FW_OK flag set
+* wont be sent when we are flashing FW.
+*/
+   adap->flags &= ~FW_OK;
+
ret = t4_fw_halt(adap, mbox, force);
if (ret < 0 && !force)
-   return ret;
+   goto out;
 
ret = t4_load_fw(adap, fw_data, size);
if (ret < 0)
-   return ret;
+   goto out;
 
/*
 * Older versions of the firmware don't understand the new
@@ -6202,7 +6207,17 @@ int t4_fw_upgrade(struct adapter *adap,
 * its header flags to see if it advertises the capability.
 */
reset = ((be32_to_cpu(fw_hdr->flags) & FW_HDR_FLAGS_RESET_HALT) == 0);
-   return t4_fw_restart(adap, mbox, reset);
+   ret = t4_fw_restart(adap, mbox, reset);
+
+   /* Grab potentially new Firmware Device Log parameters so we can see
+* how healthy the new Firmware is.  It's okay to contact the new
+* Firmware for these parameters even though, as far as it's
+* concerned, we've never said "HELLO" to it ...
+*/
+   (void)t4_init_devlog_params(adap);
+out:
+   adap->flags |= FW_OK;
+   return ret;
 }
 
 /**