bnxt_en: get the reduced max_irqs by the ones used by RDMA
authorVasundhara Volam <vasundhara-v.volam@broadcom.com>
Fri, 5 Oct 2018 04:26:03 +0000 (00:26 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 5 Oct 2018 04:41:16 +0000 (21:41 -0700)
When getting the max rings supported, get the reduced max_irqs
by the ones used by RDMA.

If the number MSIX is the limiting factor, this bug may cause the
max ring count to be higher than it should be when RDMA driver is
loaded and may result in ring allocation failures.

Fixes: 30f529473ec9 ("bnxt_en: Do not modify max IRQ count after RDMA driver requests/frees IRQs.")
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 3718984a8185b414ed48818947ce661e44227ed3..e2d92548226ad01eda69694876a85478e539c930 100644 (file)
@@ -8622,7 +8622,7 @@ static void _bnxt_get_max_rings(struct bnxt *bp, int *max_rx, int *max_tx,
        *max_tx = hw_resc->max_tx_rings;
        *max_rx = hw_resc->max_rx_rings;
        *max_cp = min_t(int, bnxt_get_max_func_cp_rings_for_en(bp),
-                       hw_resc->max_irqs);
+                       hw_resc->max_irqs - bnxt_get_ulp_msix_num(bp));
        *max_cp = min_t(int, *max_cp, hw_resc->max_stat_ctxs);
        max_ring_grps = hw_resc->max_hw_ring_grps;
        if (BNXT_CHIP_TYPE_NITRO_A0(bp) && BNXT_PF(bp)) {