bnxt_en: Cap the msix vector with the max completion rings.
authorMichael Chan <michael.chan@broadcom.com>
Tue, 4 Apr 2017 22:14:17 +0000 (18:14 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 5 Apr 2017 13:24:26 +0000 (06:24 -0700)
The current code enables up to the maximum MSIX vectors in the PCIE
config space without considering the max completion rings available.
An MSIX vector is only useful when it has an associated completion
ring, so it is better to cap it.

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 9d71c19f5496b867dd5713ed1743a0098a18ba06..43b7342c6e82d3e7b4ac7b45e9402f7fc7cf919c 100644 (file)
@@ -5183,9 +5183,10 @@ static unsigned int bnxt_get_max_func_irqs(struct bnxt *bp)
 {
 #if defined(CONFIG_BNXT_SRIOV)
        if (BNXT_VF(bp))
-               return bp->vf.max_irqs;
+               return min_t(unsigned int, bp->vf.max_irqs,
+                            bp->vf.max_cp_rings);
 #endif
-       return bp->pf.max_irqs;
+       return min_t(unsigned int, bp->pf.max_irqs, bp->pf.max_cp_rings);
 }
 
 void bnxt_set_max_func_irqs(struct bnxt *bp, unsigned int max_irqs)