aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/broadcom/bnx2.c15
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c46
-rw-r--r--drivers/net/ethernet/broadcom/tg3.c6
-rw-r--r--drivers/net/ethernet/brocade/bna/bnad.c23
-rw-r--r--drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c26
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c50
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c35
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_main.c6
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c31
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c11
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c33
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c9
-rw-r--r--drivers/net/ethernet/intel/igbvf/netdev.c6
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c16
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c32
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/main.c21
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/main.c16
-rw-r--r--drivers/net/ethernet/myricom/myri10ge/myri10ge.c40
-rw-r--r--drivers/net/ethernet/neterion/s2io.c5
-rw-r--r--drivers/net/ethernet/neterion/vxge/vxge-main.c15
-rw-r--r--drivers/net/ethernet/nvidia/forcedeth.c41
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c5
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c18
-rw-r--r--drivers/net/ethernet/qlogic/qlge/qlge_main.c16
-rw-r--r--drivers/net/ethernet/sfc/efx.c20
-rw-r--r--drivers/net/ethernet/sun/niu.c11
-rw-r--r--drivers/net/vmxnet3/vmxnet3_drv.c110
-rw-r--r--drivers/net/wireless/ath/wil6210/pcie_bus.c32
28 files changed, 295 insertions, 400 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index cda25ac45b47..ca6b36220d94 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -6206,7 +6206,7 @@ bnx2_free_irq(struct bnx2 *bp)
6206static void 6206static void
6207bnx2_enable_msix(struct bnx2 *bp, int msix_vecs) 6207bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
6208{ 6208{
6209 int i, total_vecs, rc; 6209 int i, total_vecs;
6210 struct msix_entry msix_ent[BNX2_MAX_MSIX_VEC]; 6210 struct msix_entry msix_ent[BNX2_MAX_MSIX_VEC];
6211 struct net_device *dev = bp->dev; 6211 struct net_device *dev = bp->dev;
6212 const int len = sizeof(bp->irq_tbl[0].name); 6212 const int len = sizeof(bp->irq_tbl[0].name);
@@ -6229,16 +6229,9 @@ bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
6229#ifdef BCM_CNIC 6229#ifdef BCM_CNIC
6230 total_vecs++; 6230 total_vecs++;
6231#endif 6231#endif
6232 rc = -ENOSPC; 6232 total_vecs = pci_enable_msix_range(bp->pdev, msix_ent,
6233 while (total_vecs >= BNX2_MIN_MSIX_VEC) { 6233 BNX2_MIN_MSIX_VEC, total_vecs);
6234 rc = pci_enable_msix(bp->pdev, msix_ent, total_vecs); 6234 if (total_vecs < 0)
6235 if (rc <= 0)
6236 break;
6237 if (rc > 0)
6238 total_vecs = rc;
6239 }
6240
6241 if (rc != 0)
6242 return; 6235 return;
6243 6236
6244 msix_vecs = total_vecs; 6237 msix_vecs = total_vecs;
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index 9ded3dbb7678..8363b9de5004 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -1638,36 +1638,16 @@ int bnx2x_enable_msix(struct bnx2x *bp)
1638 DP(BNX2X_MSG_SP, "about to request enable msix with %d vectors\n", 1638 DP(BNX2X_MSG_SP, "about to request enable msix with %d vectors\n",
1639 msix_vec); 1639 msix_vec);
1640 1640
1641 rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], msix_vec); 1641 rc = pci_enable_msix_range(bp->pdev, &bp->msix_table[0],
1642 1642 BNX2X_MIN_MSIX_VEC_CNT(bp), msix_vec);
1643 /* 1643 /*
1644 * reconfigure number of tx/rx queues according to available 1644 * reconfigure number of tx/rx queues according to available
1645 * MSI-X vectors 1645 * MSI-X vectors
1646 */ 1646 */
1647 if (rc >= BNX2X_MIN_MSIX_VEC_CNT(bp)) { 1647 if (rc == -ENOSPC) {
1648 /* how less vectors we will have? */
1649 int diff = msix_vec - rc;
1650
1651 BNX2X_DEV_INFO("Trying to use less MSI-X vectors: %d\n", rc);
1652
1653 rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], rc);
1654
1655 if (rc) {
1656 BNX2X_DEV_INFO("MSI-X is not attainable rc %d\n", rc);
1657 goto no_msix;
1658 }
1659 /*
1660 * decrease number of queues by number of unallocated entries
1661 */
1662 bp->num_ethernet_queues -= diff;
1663 bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues;
1664
1665 BNX2X_DEV_INFO("New queue configuration set: %d\n",
1666 bp->num_queues);
1667 } else if (rc > 0) {
1668 /* Get by with single vector */ 1648 /* Get by with single vector */
1669 rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], 1); 1649 rc = pci_enable_msix_range(bp->pdev, &bp->msix_table[0], 1, 1);
1670 if (rc) { 1650 if (rc < 0) {
1671 BNX2X_DEV_INFO("Single MSI-X is not attainable rc %d\n", 1651 BNX2X_DEV_INFO("Single MSI-X is not attainable rc %d\n",
1672 rc); 1652 rc);
1673 goto no_msix; 1653 goto no_msix;
@@ -1680,8 +1660,22 @@ int bnx2x_enable_msix(struct bnx2x *bp)
1680 bp->num_ethernet_queues = 1; 1660 bp->num_ethernet_queues = 1;
1681 bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues; 1661 bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues;
1682 } else if (rc < 0) { 1662 } else if (rc < 0) {
1683 BNX2X_DEV_INFO("MSI-X is not attainable rc %d\n", rc); 1663 BNX2X_DEV_INFO("MSI-X is not attainable rc %d\n", rc);
1684 goto no_msix; 1664 goto no_msix;
1665 } else if (rc < msix_vec) {
1666 /* how less vectors we will have? */
1667 int diff = msix_vec - rc;
1668
1669 BNX2X_DEV_INFO("Trying to use less MSI-X vectors: %d\n", rc);
1670
1671 /*
1672 * decrease number of queues by number of unallocated entries
1673 */
1674 bp->num_ethernet_queues -= diff;
1675 bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues;
1676
1677 BNX2X_DEV_INFO("New queue configuration set: %d\n",
1678 bp->num_queues);
1685 } 1679 }
1686 1680
1687 bp->flags |= USING_MSIX_FLAG; 1681 bp->flags |= USING_MSIX_FLAG;
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 3167ed6593b0..6e5e7c0ffbd7 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -11362,12 +11362,10 @@ static bool tg3_enable_msix(struct tg3 *tp)
11362 msix_ent[i].vector = 0; 11362 msix_ent[i].vector = 0;
11363 } 11363 }
11364 11364
11365 rc = pci_enable_msix(tp->pdev, msix_ent, tp->irq_cnt); 11365 rc = pci_enable_msix_range(tp->pdev, msix_ent, 1, tp->irq_cnt);
11366 if (rc < 0) { 11366 if (rc < 0) {
11367 return false; 11367 return false;
11368 } else if (rc != 0) { 11368 } else if (rc < tp->irq_cnt) {
11369 if (pci_enable_msix(tp->pdev, msix_ent, rc))
11370 return false;
11371 netdev_notice(tp->dev, "Requested %d MSI-X vectors, received %d\n", 11369 netdev_notice(tp->dev, "Requested %d MSI-X vectors, received %d\n",
11372 tp->irq_cnt, rc); 11370 tp->irq_cnt, rc);
11373 tp->irq_cnt = rc; 11371 tp->irq_cnt = rc;
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