bnxt_en: Need to include RDMA rings in bnxt_check_rings().
authorMichael Chan <michael.chan@broadcom.com>
Wed, 11 Apr 2018 15:50:17 +0000 (11:50 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Apr 2018 18:42:00 +0000 (14:42 -0400)
With recent changes to reserve both L2 and RDMA rings, we need to include
the RDMA rings in bnxt_check_rings().  Otherwise we will under-estimate
the rings we need during ethtool -L and may lead to failure.

Fixes: fbcfc8e46741 ("bnxt_en: Reserve completion rings and MSIX for bnxt_re RDMA driver.")
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 1991f0c..9cb8b4b 100644 (file)
@@ -7686,6 +7686,8 @@ int bnxt_check_rings(struct bnxt *bp, int tx, int rx, bool sh, int tcs,
        if (bp->flags & BNXT_FLAG_AGG_RINGS)
                rx_rings <<= 1;
        cp = sh ? max_t(int, tx_rings_needed, rx) : tx_rings_needed + rx;
+       if (bp->flags & BNXT_FLAG_NEW_RM)
+               cp += bnxt_get_ulp_msix_num(bp);
        return bnxt_hwrm_check_rings(bp, tx_rings_needed, rx_rings, rx, cp,
                                     vnics);
 }