mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 11:41:29 -04:00
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:
committed by
Jakub Kicinski
parent
622d698df4
commit
a70859cf31
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user