]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bnxt_en: Delay for 5 seconds after AER DPC for all chips
authorMichael Chan <michael.chan@broadcom.com>
Mon, 4 May 2026 08:36:08 +0000 (14:06 +0530)
committerJakub Kicinski <kuba@kernel.org>
Wed, 6 May 2026 00:36:14 +0000 (17:36 -0700)
The FW on all chips is requiring a 5-second delay after Downstream
Port Containment (DPC) AER.  The previously added 900 msec delay was
not long enough in all cases because the chip's CRS (Configuration
Request Retry Status) mechanism is not always reliable.

Fixes: d5ab32e9b02d ("bnxt_en: Add delay to handle Downstream Port Containment (DPC) AER")
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Link: https://patch.msgid.link/20260504083611.1383776-2-pavan.chebbi@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 8c55874f44ca6df43313d4f815909c4789c73d6f..3db951d0c6907abc5190ba6592c06b2b07d04305 100644 (file)
@@ -17360,9 +17360,14 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev)
 
        netdev_info(bp->dev, "PCI Slot Reset\n");
 
-       if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS) &&
-           test_bit(BNXT_STATE_PCI_CHANNEL_IO_FROZEN, &bp->state))
-               msleep(900);
+       if (test_bit(BNXT_STATE_PCI_CHANNEL_IO_FROZEN, &bp->state)) {
+               /* After DPC, the chip should return CRS when the vendor ID
+                * config register is read until it is ready.  On all chips,
+                * this is not happening reliably so add a 5-second delay as a
+                * workaround.
+                */
+               msleep(5000);
+       }
 
        netdev_lock(netdev);