aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/brocade/bna/bnad.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index cf64f3d0b60d..bf436d0a1094 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -2666,9 +2666,11 @@ bnad_enable_msix(struct bnad *bnad)
2666 for (i = 0; i < bnad->msix_num; i++) 2666 for (i = 0; i < bnad->msix_num; i++)
2667 bnad->msix_table[i].entry = i; 2667 bnad->msix_table[i].entry = i;
2668 2668
2669 ret = pci_enable_msix(bnad->pcidev, bnad->msix_table, bnad->msix_num); 2669 ret = pci_enable_msix_range(bnad->pcidev, bnad->msix_table,
2670 if (ret > 0) { 2670 1, bnad->msix_num);
2671 /* Not enough MSI-X vectors. */ 2671 if (ret < 0) {
2672 goto intx_mode;
2673 } else if (ret < bnad->msix_num) {
2672 pr_warn("BNA: %d MSI-X vectors allocated < %d requested\n", 2674 pr_warn("BNA: %d MSI-X vectors allocated < %d requested\n",
2673 ret, bnad->msix_num); 2675 ret, bnad->msix_num);
2674 2676
@@ -2681,18 +2683,11 @@ bnad_enable_msix(struct bnad *bnad)
2681 bnad->msix_num = BNAD_NUM_TXQ + BNAD_NUM_RXP + 2683 bnad->msix_num = BNAD_NUM_TXQ + BNAD_NUM_RXP +
2682 BNAD_MAILBOX_MSIX_VECTORS; 2684 BNAD_MAILBOX_MSIX_VECTORS;
2683 2685
2684 if (bnad->msix_num > ret) 2686 if (bnad->msix_num > ret) {
2685 goto intx_mode; 2687 pci_disable_msix(bnad->pcidev);
2686
2687 /* Try once more with adjusted numbers */
2688 /* If this fails, fall back to INTx */
2689 ret = pci_enable_msix(bnad->pcidev, bnad->msix_table,
2690 bnad->msix_num);
2691 if (ret)
2692 goto intx_mode; 2688 goto intx_mode;
2693 2689 }
2694 } else if (ret < 0) 2690 }
2695 goto intx_mode;
2696 2691
2697 pci_intx(bnad->pcidev, 0); 2692 pci_intx(bnad->pcidev, 0);
2698 2693