From: Michael Chan <michael.chan@broadcom.com>
Date: Sun, 14 Jun 2020 19:57:09 -0400
Subject: bnxt_en: Fix AER reset logic on 57500 chips.
Git-commit: 6e2f83884c099de0e87b15a820736e522755d074
Patch-mainline: 5.8-rc2
References: git-fixes
AER reset should follow the same steps as suspend/resume. We need to
free context memory during AER reset and allocate new context memory
during recovery by calling bnxt_hwrm_func_qcaps(). We also need
to call bnxt_reenable_sriov() to restore the VFs.
[js] the context is different in 4.12 esp. due to aa46dffff.
Also the firmware reset path (bnxt_reenable_sriov) does not exist
yet.
Fixes: bae361c54fb6 ("bnxt_en: Improve AER slot reset.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -10816,6 +10816,9 @@ static pci_ers_result_t bnxt_io_error_de
bnxt_close(netdev);
pci_disable_device(pdev);
+ bnxt_free_ctx_mem(bp);
+ kfree(bp->ctx);
+ bp->ctx = NULL;
rtnl_unlock();
/* Request a slot slot reset. */
@@ -10849,6 +10852,9 @@ static pci_ers_result_t bnxt_io_slot_res
pci_set_master(pdev);
err = bnxt_hwrm_func_reset(bp);
+ if (!err)
+ err = bnxt_hwrm_func_qcaps(bp);
+
if (!err && netif_running(netdev))
err = bnxt_open(netdev);