bnxt_en: Gate TPH enablement behind BNXT_SUPPORTS_QUEUE_API check

In bnxt_request_irq(), pcie_enable_tph() is called unconditionally to
enable PCIe TPH when setting up interrupts.

If the NIC hardware or firmware capabilities do not support queue ops,
attempting to enable TPH during bnxt_request_irq() is unnecessary.

As a result a flood of "RX queue restart failed: err=-95"  messages is
seen upon boot.

Older NICs (pre-Thor / BCM57414) do not support TPH or queue management.
TPH requires queue management to restart the queue.  NICs that support
queue management (with updated FW) all support TPH.

Gate the call to pcie_enable_tph() and setting of bp->tph_mode
behind BNXT_SUPPORTS_QUEUE_API(bp) to ensure TPH is only initialized
on devices capable of supporting queue ops. This prevents a guaranteed
-EOPNOTSUPP error from occurring due to NULL operations.

Fixes: c214410c47 ("bnxt_en: Add TPH support in BNXT driver")
Suggested-by: Michal Schmidt <mschmidt@redhat.com>
Signed-off-by: Thomas Walsh <thwalsh@redhat.com>
Reviewed-by: Michael Chan <michael.chan@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Link: https://patch.msgid.link/20260820220544.1240879-1-thwalsh@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Thomas Walsh
2026-08-20 18:05:44 -04:00
committed by Jakub Kicinski
parent 622d698df4
commit a70859cf31

View File

@@ -11952,9 +11952,11 @@ static int bnxt_request_irq(struct bnxt *bp)
#endif
/* Enable TPH support as part of IRQ request */
rc = pcie_enable_tph(bp->pdev, PCI_TPH_ST_IV_MODE);
if (!rc)
bp->tph_mode = PCI_TPH_ST_IV_MODE;
if (BNXT_SUPPORTS_QUEUE_API(bp)) {
rc = pcie_enable_tph(bp->pdev, PCI_TPH_ST_IV_MODE);
if (!rc)
bp->tph_mode = PCI_TPH_ST_IV_MODE;
}
for (i = 0, j = 0; i < bp->cp_nr_rings; i++) {
struct cpumask *cpu_mask = bp->ring_cpu_mask[i];