> >From: "Charles (Chas) Williams" <ciwillia at brocade.com> > >If MSIX is available, the vector count given by the table size is one >less than the actual count. This count also limits the receive and >transmit queue resources the VF can support. > >Fixes: 540a211084a7 ("bnx2x: driver core") > >Signed-off-by: Chas Williams <ciwillia at brocade.com> >--- > drivers/net/bnx2x/bnx2x.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > >diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c >index 6edb2f9..4be732f 100644 >--- a/drivers/net/bnx2x/bnx2x.c >+++ b/drivers/net/bnx2x/bnx2x.c >@@ -9570,8 +9570,10 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc >*sc) > static void bnx2x_init_rte(struct bnx2x_softc *sc) > { > if (IS_VF(sc)) { >- sc->max_tx_queues = BNX2X_VF_MAX_QUEUES_PER_VF; >- sc->max_rx_queues = BNX2X_VF_MAX_QUEUES_PER_VF; >+ sc->max_tx_queues = min(BNX2X_VF_MAX_QUEUES_PER_VF, >+ sc->igu_sb_cnt); >+ sc->max_rx_queues = min(BNX2X_VF_MAX_QUEUES_PER_VF, >+ sc->igu_sb_cnt); > } else { > sc->max_tx_queues = 128; > sc->max_rx_queues = 128; >@@ -9713,7 +9715,7 @@ int bnx2x_attach(struct bnx2x_softc *sc) > pci_read(sc, > (sc->devinfo.pcie_msix_cap_reg + PCIR_MSIX_CTRL), &val, > 2); >- sc->igu_sb_cnt = (val & PCIM_MSIXCTRL_TABLE_SIZE); >+ sc->igu_sb_cnt = (val & PCIM_MSIXCTRL_TABLE_SIZE) + 1; > } else { > sc->igu_sb_cnt = 1; > } >-- >2.5.5 > >
Acked-by: Harish Patil <harish.patil at qlogic.com>