* [PATCH net 1/4] bnxt_en: Simplify bnxt_resume().
2020-06-14 23:57 [PATCH net 0/4] bnxt_en: Bug fixes Michael Chan
@ 2020-06-14 23:57 ` Michael Chan
2020-06-14 23:57 ` [PATCH net 2/4] bnxt_en: Re-enable SRIOV during resume Michael Chan
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Michael Chan @ 2020-06-14 23:57 UTC (permalink / raw)
To: davem; +Cc: netdev, kuba
The separate steps we do in bnxt_resume() can be done more simply by
calling bnxt_hwrm_func_qcaps(). This change will add an extra
__bnxt_hwrm_func_qcaps() call which is needed anyway on older
firmware.
Fixes: f9b69d7f6279 ("bnxt_en: Fix suspend/resume path on 57500 chips")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index c62589c..1dc38d9 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -12133,19 +12133,9 @@ static int bnxt_resume(struct device *device)
goto resume_exit;
}
- if (bnxt_hwrm_queue_qportcfg(bp)) {
- rc = -ENODEV;
+ rc = bnxt_hwrm_func_qcaps(bp);
+ if (rc)
goto resume_exit;
- }
-
- if (bp->hwrm_spec_code >= 0x10803) {
- if (bnxt_alloc_ctx_mem(bp)) {
- rc = -ENODEV;
- goto resume_exit;
- }
- }
- if (BNXT_NEW_RM(bp))
- bnxt_hwrm_func_resc_qcaps(bp, false);
if (bnxt_hwrm_func_drv_rgtr(bp, NULL, 0, false)) {
rc = -ENODEV;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH net 2/4] bnxt_en: Re-enable SRIOV during resume.
2020-06-14 23:57 [PATCH net 0/4] bnxt_en: Bug fixes Michael Chan
2020-06-14 23:57 ` [PATCH net 1/4] bnxt_en: Simplify bnxt_resume() Michael Chan
@ 2020-06-14 23:57 ` Michael Chan
2020-06-14 23:57 ` [PATCH net 3/4] bnxt_en: Fix AER reset logic on 57500 chips Michael Chan
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Michael Chan @ 2020-06-14 23:57 UTC (permalink / raw)
To: davem; +Cc: netdev, kuba
If VFs are enabled, we need to re-configure them during resume because
firmware has been reset while resuming. Otherwise, the VFs won't
work after resume.
Fixes: c16d4ee0e397 ("bnxt_en: Refactor logic to re-enable SRIOV after firmware reset detected.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 1dc38d9..0d97f47 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -12151,6 +12151,8 @@ static int bnxt_resume(struct device *device)
resume_exit:
bnxt_ulp_start(bp, rc);
+ if (!rc)
+ bnxt_reenable_sriov(bp);
rtnl_unlock();
return rc;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH net 3/4] bnxt_en: Fix AER reset logic on 57500 chips.
2020-06-14 23:57 [PATCH net 0/4] bnxt_en: Bug fixes Michael Chan
2020-06-14 23:57 ` [PATCH net 1/4] bnxt_en: Simplify bnxt_resume() Michael Chan
2020-06-14 23:57 ` [PATCH net 2/4] bnxt_en: Re-enable SRIOV during resume Michael Chan
@ 2020-06-14 23:57 ` Michael Chan
2020-06-14 23:57 ` [PATCH net 4/4] bnxt_en: Return from timer if interface is not in open state Michael Chan
2020-06-15 20:29 ` [PATCH net 0/4] bnxt_en: Bug fixes David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Michael Chan @ 2020-06-14 23:57 UTC (permalink / raw)
To: davem; +Cc: netdev, kuba
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.
Fixes: bae361c54fb6 ("bnxt_en: Improve AER slot reset.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 0d97f47..47b45ea 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -12196,6 +12196,9 @@ static pci_ers_result_t bnxt_io_error_detected(struct pci_dev *pdev,
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. */
@@ -12229,12 +12232,16 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev)
pci_set_master(pdev);
err = bnxt_hwrm_func_reset(bp);
- if (!err && netif_running(netdev))
- err = bnxt_open(netdev);
-
- if (!err)
- result = PCI_ERS_RESULT_RECOVERED;
+ if (!err) {
+ err = bnxt_hwrm_func_qcaps(bp);
+ if (!err && netif_running(netdev))
+ err = bnxt_open(netdev);
+ }
bnxt_ulp_start(bp, err);
+ if (!err) {
+ bnxt_reenable_sriov(bp);
+ result = PCI_ERS_RESULT_RECOVERED;
+ }
}
if (result != PCI_ERS_RESULT_RECOVERED) {
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH net 4/4] bnxt_en: Return from timer if interface is not in open state.
2020-06-14 23:57 [PATCH net 0/4] bnxt_en: Bug fixes Michael Chan
` (2 preceding siblings ...)
2020-06-14 23:57 ` [PATCH net 3/4] bnxt_en: Fix AER reset logic on 57500 chips Michael Chan
@ 2020-06-14 23:57 ` Michael Chan
2020-06-15 20:29 ` [PATCH net 0/4] bnxt_en: Bug fixes David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Michael Chan @ 2020-06-14 23:57 UTC (permalink / raw)
To: davem; +Cc: netdev, kuba, Vasundhara Volam
From: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
This will avoid many uneccessary error logs when driver or firmware is
in reset.
Fixes: 230d1f0de754 ("bnxt_en: Handle firmware reset.")
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
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 47b45ea..b93e05f 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -10037,7 +10037,7 @@ static void bnxt_timer(struct timer_list *t)
struct bnxt *bp = from_timer(bp, t, timer);
struct net_device *dev = bp->dev;
- if (!netif_running(dev))
+ if (!netif_running(dev) || !test_bit(BNXT_STATE_OPEN, &bp->state))
return;
if (atomic_read(&bp->intr_sem) != 0)
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH net 0/4] bnxt_en: Bug fixes.
2020-06-14 23:57 [PATCH net 0/4] bnxt_en: Bug fixes Michael Chan
` (3 preceding siblings ...)
2020-06-14 23:57 ` [PATCH net 4/4] bnxt_en: Return from timer if interface is not in open state Michael Chan
@ 2020-06-15 20:29 ` David Miller
4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2020-06-15 20:29 UTC (permalink / raw)
To: michael.chan; +Cc: netdev, kuba
From: Michael Chan <michael.chan@broadcom.com>
Date: Sun, 14 Jun 2020 19:57:06 -0400
> Four fixes related to the bnxt_en driver's resume path, AER reset, and
> the timer function.
Series applied, thanks Michael.
^ permalink raw reply [flat|nested] 6+ messages in thread