]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bnxt_en: Set bp->max_tpa according to what the FW supports
authorMichael Chan <michael.chan@broadcom.com>
Mon, 4 May 2026 08:36:09 +0000 (14:06 +0530)
committerJakub Kicinski <kuba@kernel.org>
Wed, 6 May 2026 00:36:14 +0000 (17:36 -0700)
Fix the logic to set bp->max_tpa no higher than what the FW supports.
On P5 chips, some older FW sets max_tpa very low so we override it to
prevent performance regressions with the older FW.

Fixes: 79632e9ba386 ("bnxt_en: Expand bnxt_tpa_info struct to support 57500 chips.")
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Colin Winegarden <colin.winegarden@broadcom.com>
Reviewed-by: Rukhsana Ansari <rukhsana.ansari@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-3-pavan.chebbi@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 3db951d0c6907abc5190ba6592c06b2b07d04305..008c34cff7b46cd9e799a3a2a031ed75705fa9be 100644 (file)
@@ -3825,7 +3825,10 @@ static int bnxt_alloc_tpa_info(struct bnxt *bp)
        if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
                if (!bp->max_tpa_v2)
                        return 0;
-               bp->max_tpa = max_t(u16, bp->max_tpa_v2, MAX_TPA_P5);
+               bp->max_tpa = min_t(u16, bp->max_tpa_v2, MAX_TPA_P5);
+               /* Older P5 FW sets max_tpa_v2 low by mistake except NPAR */
+               if (bp->max_tpa <= 32 && BNXT_CHIP_P5(bp) && !BNXT_NPAR(bp))
+                       bp->max_tpa = MAX_TPA_P5;
        }
 
        for (i = 0; i < bp->rx_nr_rings; i++) {