All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 00/35] net: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 10:07 ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-net-drivers, e1000-devel, linux-pci, pv-drivers,
	linux-rdma, Alexander Gordeev, netdev, linux-driver, wil6210

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Cc: e1000-devel@lists.sourceforge.net
Cc: linux-driver@qlogic.com
Cc: linux-net-drivers@solarflare.com
Cc: linux-pci@vger.kernel.org
Cc: linux-rdma@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: pv-drivers@vmware.com
Cc: wil6210@qca.qualcomm.com

Alexander Gordeev (35):
  bnx2: Use pci_enable_msix_range() instead of pci_enable_msix()
  bnx2x: Use pci_enable_msix_range() instead of pci_enable_msix()
  tg3: Use pci_enable_msix_range() instead of pci_enable_msix()
  bna: Use pci_enable_msix_range() instead of pci_enable_msix()
  cxgb3: Remove superfluous call to pci_disable_msix()
  cxgb3: Use pci_enable_msix_range() instead of pci_enable_msix()
  cxgb4: Use pci_enable_msix_range() instead of pci_enable_msix()
  cxgb4vf: Remove superfluous call to pci_disable_msix()
  cxgb4vf: Use pci_enable_msix_range() instead of pci_enable_msix()
  enic: Use pci_enable_msix_range() instead of pci_enable_msix()
  benet: Use pci_enable_msix_range() instead of pci_enable_msix()
  e1000e: Use pci_enable_msix_range() instead of pci_enable_msix()
  i40e: Use pci_enable_msix_range() instead of pci_enable_msix()
  igb: Use pci_enable_msix_range() instead of pci_enable_msix()
  igbvf: Use pci_enable_msix_range() instead of pci_enable_msix()
  ixgbe: Use pci_enable_msix_range() instead of pci_enable_msix()
  ixgbevf: Use pci_enable_msix_range() instead of pci_enable_msix()
  mlx4: Use pci_enable_msix_range() instead of pci_enable_msix()
  mlx5: Use pci_enable_msix_range() instead of pci_enable_msix()
  myri10ge: Use pci_enable_msix_range() instead of pci_enable_msix()
  s2io: Use pci_enable_msix_range() instead of pci_enable_msix()
  vxge: Use pci_enable_msix_range() instead of pci_enable_msix()
  forcedeth: Fix invalid errno reporting in nv_request_irq()
  forcedeth: Cleanup MSI-X to MSI to INTx fallback code
  forcedeth: Use pci_enable_msix_range() instead of pci_enable_msix()
  netxen: Use pci_enable_msix_range() instead of pci_enable_msix()
  qlcnic: Cleanup qlcnic_enable_msix() return values
  qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix()
  qlge: Get rid of an redundant assignment
  qlge: Use pci_enable_msix_range() instead of pci_enable_msix()
  sfc: Use pci_enable_msix_range() instead of pci_enable_msix()
  niu: Use pci_enable_msix_range() instead of pci_enable_msix()
  vmxnet3: Fix MSI-X/MSI enablement code
  vmxnet3: Use pci_enable_msix_range() instead of pci_enable_msix()
  wil6210: Use pci_enable_msi_range() instead of pci_enable_msi_block()

 drivers/net/ethernet/broadcom/bnx2.c               |   15 +--
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c    |   46 ++++-----
 drivers/net/ethernet/broadcom/tg3.c                |    6 +-
 drivers/net/ethernet/brocade/bna/bnad.c            |   23 ++---
 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c    |   26 ++---
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c    |   50 +++++-----
 .../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c    |   35 +++----
 drivers/net/ethernet/cisco/enic/enic_main.c        |    6 +-
 drivers/net/ethernet/emulex/benet/be_main.c        |   31 +++---
 drivers/net/ethernet/intel/e1000e/netdev.c         |   11 ++-
 drivers/net/ethernet/intel/i40e/i40e_main.c        |   33 +-----
 drivers/net/ethernet/intel/igb/igb_main.c          |    9 +-
 drivers/net/ethernet/intel/igbvf/netdev.c          |    6 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c       |   16 +--
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c  |   32 ++----
 drivers/net/ethernet/mellanox/mlx4/main.c          |   21 +---
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |   16 +--
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c   |   40 ++++----
 drivers/net/ethernet/neterion/s2io.c               |    5 +-
 drivers/net/ethernet/neterion/vxge/vxge-main.c     |   15 ++-
 drivers/net/ethernet/nvidia/forcedeth.c            |   41 +++++---
 .../net/ethernet/qlogic/netxen/netxen_nic_main.c   |    5 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |   18 ++--
 drivers/net/ethernet/qlogic/qlge/qlge_main.c       |   16 +--
 drivers/net/ethernet/sfc/efx.c                     |   20 ++--
 drivers/net/ethernet/sun/niu.c                     |   11 +--
 drivers/net/vmxnet3/vmxnet3_drv.c                  |  110 ++++++++-----------
 drivers/net/wireless/ath/wil6210/pcie_bus.c        |   32 +++---
 28 files changed, 295 insertions(+), 400 deletions(-)

-- 
1.7.7.6


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply	[flat|nested] 60+ messages in thread

* [PATCH net-next 00/35] net: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 10:07 ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, e1000-devel, linux-driver, linux-net-drivers,
	linux-pci, linux-rdma, netdev, pv-drivers, wil6210

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Cc: e1000-devel@lists.sourceforge.net
Cc: linux-driver@qlogic.com
Cc: linux-net-drivers@solarflare.com
Cc: linux-pci@vger.kernel.org
Cc: linux-rdma@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: pv-drivers@vmware.com
Cc: wil6210@qca.qualcomm.com

Alexander Gordeev (35):
  bnx2: Use pci_enable_msix_range() instead of pci_enable_msix()
  bnx2x: Use pci_enable_msix_range() instead of pci_enable_msix()
  tg3: Use pci_enable_msix_range() instead of pci_enable_msix()
  bna: Use pci_enable_msix_range() instead of pci_enable_msix()
  cxgb3: Remove superfluous call to pci_disable_msix()
  cxgb3: Use pci_enable_msix_range() instead of pci_enable_msix()
  cxgb4: Use pci_enable_msix_range() instead of pci_enable_msix()
  cxgb4vf: Remove superfluous call to pci_disable_msix()
  cxgb4vf: Use pci_enable_msix_range() instead of pci_enable_msix()
  enic: Use pci_enable_msix_range() instead of pci_enable_msix()
  benet: Use pci_enable_msix_range() instead of pci_enable_msix()
  e1000e: Use pci_enable_msix_range() instead of pci_enable_msix()
  i40e: Use pci_enable_msix_range() instead of pci_enable_msix()
  igb: Use pci_enable_msix_range() instead of pci_enable_msix()
  igbvf: Use pci_enable_msix_range() instead of pci_enable_msix()
  ixgbe: Use pci_enable_msix_range() instead of pci_enable_msix()
  ixgbevf: Use pci_enable_msix_range() instead of pci_enable_msix()
  mlx4: Use pci_enable_msix_range() instead of pci_enable_msix()
  mlx5: Use pci_enable_msix_range() instead of pci_enable_msix()
  myri10ge: Use pci_enable_msix_range() instead of pci_enable_msix()
  s2io: Use pci_enable_msix_range() instead of pci_enable_msix()
  vxge: Use pci_enable_msix_range() instead of pci_enable_msix()
  forcedeth: Fix invalid errno reporting in nv_request_irq()
  forcedeth: Cleanup MSI-X to MSI to INTx fallback code
  forcedeth: Use pci_enable_msix_range() instead of pci_enable_msix()
  netxen: Use pci_enable_msix_range() instead of pci_enable_msix()
  qlcnic: Cleanup qlcnic_enable_msix() return values
  qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix()
  qlge: Get rid of an redundant assignment
  qlge: Use pci_enable_msix_range() instead of pci_enable_msix()
  sfc: Use pci_enable_msix_range() instead of pci_enable_msix()
  niu: Use pci_enable_msix_range() instead of pci_enable_msix()
  vmxnet3: Fix MSI-X/MSI enablement code
  vmxnet3: Use pci_enable_msix_range() instead of pci_enable_msix()
  wil6210: Use pci_enable_msi_range() instead of pci_enable_msi_block()

 drivers/net/ethernet/broadcom/bnx2.c               |   15 +--
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c    |   46 ++++-----
 drivers/net/ethernet/broadcom/tg3.c                |    6 +-
 drivers/net/ethernet/brocade/bna/bnad.c            |   23 ++---
 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c    |   26 ++---
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c    |   50 +++++-----
 .../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c    |   35 +++----
 drivers/net/ethernet/cisco/enic/enic_main.c        |    6 +-
 drivers/net/ethernet/emulex/benet/be_main.c        |   31 +++---
 drivers/net/ethernet/intel/e1000e/netdev.c         |   11 ++-
 drivers/net/ethernet/intel/i40e/i40e_main.c        |   33 +-----
 drivers/net/ethernet/intel/igb/igb_main.c          |    9 +-
 drivers/net/ethernet/intel/igbvf/netdev.c          |    6 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c       |   16 +--
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c  |   32 ++----
 drivers/net/ethernet/mellanox/mlx4/main.c          |   21 +---
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |   16 +--
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c   |   40 ++++----
 drivers/net/ethernet/neterion/s2io.c               |    5 +-
 drivers/net/ethernet/neterion/vxge/vxge-main.c     |   15 ++-
 drivers/net/ethernet/nvidia/forcedeth.c            |   41 +++++---
 .../net/ethernet/qlogic/netxen/netxen_nic_main.c   |    5 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |   18 ++--
 drivers/net/ethernet/qlogic/qlge/qlge_main.c       |   16 +--
 drivers/net/ethernet/sfc/efx.c                     |   20 ++--
 drivers/net/ethernet/sun/niu.c                     |   11 +--
 drivers/net/vmxnet3/vmxnet3_drv.c                  |  110 ++++++++-----------
 drivers/net/wireless/ath/wil6210/pcie_bus.c        |   32 +++---
 28 files changed, 295 insertions(+), 400 deletions(-)

-- 
1.7.7.6


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [PATCH net-next 01/35] bnx2: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
  (?)
@ 2014-02-18 10:07 ` Alexander Gordeev
  2014-02-22  0:34   ` Ben Hutchings
  -1 siblings, 1 reply; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Michael Chan, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Michael Chan <mchan@broadcom.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/broadcom/bnx2.c |   15 ++++-----------
 1 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index cda25ac..ca6b362 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)
 static void
 bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
 {
-	int i, total_vecs, rc;
+	int i, total_vecs;
 	struct msix_entry msix_ent[BNX2_MAX_MSIX_VEC];
 	struct net_device *dev = bp->dev;
 	const int len = sizeof(bp->irq_tbl[0].name);
@@ -6229,16 +6229,9 @@ bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
 #ifdef BCM_CNIC
 	total_vecs++;
 #endif
-	rc = -ENOSPC;
-	while (total_vecs >= BNX2_MIN_MSIX_VEC) {
-		rc = pci_enable_msix(bp->pdev, msix_ent, total_vecs);
-		if (rc <= 0)
-			break;
-		if (rc > 0)
-			total_vecs = rc;
-	}
-
-	if (rc != 0)
+	total_vecs = pci_enable_msix_range(bp->pdev, msix_ent,
+					   BNX2_MIN_MSIX_VEC, total_vecs);
+	if (total_vecs < 0)
 		return;
 
 	msix_vecs = total_vecs;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 02/35] bnx2x: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
  (?)
  (?)
@ 2014-02-18 10:07 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Ariel Elior, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Ariel Elior <ariele@broadcom.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c |   46 ++++++++++-------------
 1 files changed, 20 insertions(+), 26 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index 9ded3db..8363b9d 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)
 	DP(BNX2X_MSG_SP, "about to request enable msix with %d vectors\n",
 	   msix_vec);
 
-	rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], msix_vec);
-
+	rc = pci_enable_msix_range(bp->pdev, &bp->msix_table[0],
+				   BNX2X_MIN_MSIX_VEC_CNT(bp), msix_vec);
 	/*
 	 * reconfigure number of tx/rx queues according to available
 	 * MSI-X vectors
 	 */
-	if (rc >= BNX2X_MIN_MSIX_VEC_CNT(bp)) {
-		/* how less vectors we will have? */
-		int diff = msix_vec - rc;
-
-		BNX2X_DEV_INFO("Trying to use less MSI-X vectors: %d\n", rc);
-
-		rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], rc);
-
-		if (rc) {
-			BNX2X_DEV_INFO("MSI-X is not attainable rc %d\n", rc);
-			goto no_msix;
-		}
-		/*
-		 * decrease number of queues by number of unallocated entries
-		 */
-		bp->num_ethernet_queues -= diff;
-		bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues;
-
-		BNX2X_DEV_INFO("New queue configuration set: %d\n",
-			       bp->num_queues);
-	} else if (rc > 0) {
+	if (rc == -ENOSPC) {
 		/* Get by with single vector */
-		rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], 1);
-		if (rc) {
+		rc = pci_enable_msix_range(bp->pdev, &bp->msix_table[0], 1, 1);
+		if (rc < 0) {
 			BNX2X_DEV_INFO("Single MSI-X is not attainable rc %d\n",
 				       rc);
 			goto no_msix;
@@ -1680,8 +1660,22 @@ int bnx2x_enable_msix(struct bnx2x *bp)
 		bp->num_ethernet_queues = 1;
 		bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues;
 	} else if (rc < 0) {
-		BNX2X_DEV_INFO("MSI-X is not attainable  rc %d\n", rc);
+		BNX2X_DEV_INFO("MSI-X is not attainable rc %d\n", rc);
 		goto no_msix;
+	} else if (rc < msix_vec) {
+		/* how less vectors we will have? */
+		int diff = msix_vec - rc;
+
+		BNX2X_DEV_INFO("Trying to use less MSI-X vectors: %d\n", rc);
+
+		/*
+		 * decrease number of queues by number of unallocated entries
+		 */
+		bp->num_ethernet_queues -= diff;
+		bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues;
+
+		BNX2X_DEV_INFO("New queue configuration set: %d\n",
+			       bp->num_queues);
 	}
 
 	bp->flags |= USING_MSIX_FLAG;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 03/35] tg3: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (2 preceding siblings ...)
  (?)
@ 2014-02-18 10:07 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Nithin Nayak Sujir, Michael Chan, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Nithin Nayak Sujir <nsujir@broadcom.com>
Cc: Michael Chan <mchan@broadcom.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/broadcom/tg3.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 3167ed6..6e5e7c0 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)
 		msix_ent[i].vector = 0;
 	}
 
-	rc = pci_enable_msix(tp->pdev, msix_ent, tp->irq_cnt);
+	rc = pci_enable_msix_range(tp->pdev, msix_ent, 1, tp->irq_cnt);
 	if (rc < 0) {
 		return false;
-	} else if (rc != 0) {
-		if (pci_enable_msix(tp->pdev, msix_ent, rc))
-			return false;
+	} else if (rc < tp->irq_cnt) {
 		netdev_notice(tp->dev, "Requested %d MSI-X vectors, received %d\n",
 			      tp->irq_cnt, rc);
 		tp->irq_cnt = rc;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 04/35] bna: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (3 preceding siblings ...)
  (?)
@ 2014-02-18 10:07 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Rasesh Mody, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Rasesh Mody <rmody@brocade.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/brocade/bna/bnad.c |   23 +++++++++--------------
 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 cf64f3d..bf436d0 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)
 	for (i = 0; i < bnad->msix_num; i++)
 		bnad->msix_table[i].entry = i;
 
-	ret = pci_enable_msix(bnad->pcidev, bnad->msix_table, bnad->msix_num);
-	if (ret > 0) {
-		/* Not enough MSI-X vectors. */
+	ret = pci_enable_msix_range(bnad->pcidev, bnad->msix_table,
+				    1, bnad->msix_num);
+	if (ret < 0) {
+		goto intx_mode;
+	} else if (ret < bnad->msix_num) {
 		pr_warn("BNA: %d MSI-X vectors allocated < %d requested\n",
 			ret, bnad->msix_num);
 
@@ -2681,18 +2683,11 @@ bnad_enable_msix(struct bnad *bnad)
 		bnad->msix_num = BNAD_NUM_TXQ + BNAD_NUM_RXP +
 			 BNAD_MAILBOX_MSIX_VECTORS;
 
-		if (bnad->msix_num > ret)
-			goto intx_mode;
-
-		/* Try once more with adjusted numbers */
-		/* If this fails, fall back to INTx */
-		ret = pci_enable_msix(bnad->pcidev, bnad->msix_table,
-				      bnad->msix_num);
-		if (ret)
+		if (bnad->msix_num > ret) {
+			pci_disable_msix(bnad->pcidev);
 			goto intx_mode;
-
-	} else if (ret < 0)
-		goto intx_mode;
+		}
+	}
 
 	pci_intx(bnad->pcidev, 0);
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 05/35] cxgb3: Remove superfluous call to pci_disable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (4 preceding siblings ...)
  (?)
@ 2014-02-18 10:07 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Santosh Raspatur, netdev, linux-pci

There is no need to call pci_disable_msix() in case
the previous call to pci_enable_msix() failed

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Santosh Raspatur <santosh@chelsio.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
index 45d7733..b72d2ed 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
@@ -3097,9 +3097,6 @@ static int cxgb_enable_msix(struct adapter *adap)
 	while ((err = pci_enable_msix(adap->pdev, entries, vectors)) > 0)
 		vectors = err;
 
-	if (err < 0)
-		pci_disable_msix(adap->pdev);
-
 	if (!err && vectors < (adap->params.nports + 1)) {
 		pci_disable_msix(adap->pdev);
 		err = -1;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 06/35] cxgb3: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (5 preceding siblings ...)
  (?)
@ 2014-02-18 10:07 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Santosh Raspatur, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Santosh Raspatur <santosh@chelsio.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c |   23 +++++++++--------------
 1 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
index b72d2ed..07bbb71 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
@@ -3088,27 +3088,22 @@ static int cxgb_enable_msix(struct adapter *adap)
 {
 	struct msix_entry entries[SGE_QSETS + 1];
 	int vectors;
-	int i, err;
+	int i;
 
 	vectors = ARRAY_SIZE(entries);
 	for (i = 0; i < vectors; ++i)
 		entries[i].entry = i;
 
-	while ((err = pci_enable_msix(adap->pdev, entries, vectors)) > 0)
-		vectors = err;
-
-	if (!err && vectors < (adap->params.nports + 1)) {
-		pci_disable_msix(adap->pdev);
-		err = -1;
-	}
+	vectors = pci_enable_msix_range(adap->pdev, entries,
+					adap->params.nports + 1, vectors);
+	if (vectors < 0)
+		return vectors;
 
-	if (!err) {
-		for (i = 0; i < vectors; ++i)
-			adap->msix_info[i].vec = entries[i].vector;
-		adap->msix_nvectors = vectors;
-	}
+	for (i = 0; i < vectors; ++i)
+		adap->msix_info[i].vec = entries[i].vector;
+	adap->msix_nvectors = vectors;
 
-	return err;
+	return 0;
 }
 
 static void print_port_info(struct adapter *adap, const struct adapter_info *ai)
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 07/35] cxgb4: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (6 preceding siblings ...)
  (?)
@ 2014-02-18 10:07 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Dimitris Michailidis, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Dimitris Michailidis <dm@chelsio.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |   50 +++++++++++------------
 1 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index 43ab35f..bd0321d 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -5737,7 +5737,7 @@ static void reduce_ethqs(struct adapter *adap, int n)
 static int enable_msix(struct adapter *adap)
 {
 	int ofld_need = 0;
-	int i, err, want, need;
+	int i, want, need;
 	struct sge *s = &adap->sge;
 	unsigned int nchan = adap->params.nports;
 	struct msix_entry entries[MAX_INGQ + 1];
@@ -5753,32 +5753,30 @@ static int enable_msix(struct adapter *adap)
 	}
 	need = adap->params.nports + EXTRA_VECS + ofld_need;
 
-	while ((err = pci_enable_msix(adap->pdev, entries, want)) >= need)
-		want = err;
+	want = pci_enable_msix_range(adap->pdev, entries, need, want);
+	if (want < 0)
+		return want;
 
-	if (!err) {
-		/*
-		 * Distribute available vectors to the various queue groups.
-		 * Every group gets its minimum requirement and NIC gets top
-		 * priority for leftovers.
-		 */
-		i = want - EXTRA_VECS - ofld_need;
-		if (i < s->max_ethqsets) {
-			s->max_ethqsets = i;
-			if (i < s->ethqsets)
-				reduce_ethqs(adap, i);
-		}
-		if (is_offload(adap)) {
-			i = want - EXTRA_VECS - s->max_ethqsets;
-			i -= ofld_need - nchan;
-			s->ofldqsets = (i / nchan) * nchan;  /* round down */
-		}
-		for (i = 0; i < want; ++i)
-			adap->msix_info[i].vec = entries[i].vector;
-	} else if (err > 0)
-		dev_info(adap->pdev_dev,
-			 "only %d MSI-X vectors left, not using MSI-X\n", err);
-	return err;
+	/*
+	 * Distribute available vectors to the various queue groups.
+	 * Every group gets its minimum requirement and NIC gets top
+	 * priority for leftovers.
+	 */
+	i = want - EXTRA_VECS - ofld_need;
+	if (i < s->max_ethqsets) {
+		s->max_ethqsets = i;
+		if (i < s->ethqsets)
+			reduce_ethqs(adap, i);
+	}
+	if (is_offload(adap)) {
+		i = want - EXTRA_VECS - s->max_ethqsets;
+		i -= ofld_need - nchan;
+		s->ofldqsets = (i / nchan) * nchan;  /* round down */
+	}
+	for (i = 0; i < want; ++i)
+		adap->msix_info[i].vec = entries[i].vector;
+
+	return 0;
 }
 
 #undef EXTRA_VECS
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 08/35] cxgb4vf: Remove superfluous call to pci_disable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (7 preceding siblings ...)
  (?)
@ 2014-02-18 10:08 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Casey Leedom, netdev, linux-pci

There is no need to call pci_disable_msix() in case
the previous call to pci_enable_msix() failed

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Casey Leedom <leedom@chelsio.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 .../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c    |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
index 0899c09..509fed9 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
@@ -2475,7 +2475,6 @@ static int enable_msix(struct adapter *adapter)
 		for (i = 0; i < want; ++i)
 			adapter->msix_info[i].vec = entries[i].vector;
 	} else if (err > 0) {
-		pci_disable_msix(adapter->pdev);
 		dev_info(adapter->pdev_dev, "only %d MSI-X vectors left,"
 			 " not using MSI-X\n", err);
 	}
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 09/35] cxgb4vf: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (8 preceding siblings ...)
  (?)
@ 2014-02-18 10:08 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Casey Leedom, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Casey Leedom <leedom@chelsio.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 .../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c    |   34 +++++++++----------
 1 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
index 509fed9..1d0fe9b 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
@@ -2444,7 +2444,7 @@ static void reduce_ethqs(struct adapter *adapter, int n)
  */
 static int enable_msix(struct adapter *adapter)
 {
-	int i, err, want, need;
+	int i, want, need, nqsets;
 	struct msix_entry entries[MSIX_ENTRIES];
 	struct sge *s = &adapter->sge;
 
@@ -2460,25 +2460,23 @@ static int enable_msix(struct adapter *adapter)
 	 */
 	want = s->max_ethqsets + MSIX_EXTRAS;
 	need = adapter->params.nports + MSIX_EXTRAS;
-	while ((err = pci_enable_msix(adapter->pdev, entries, want)) >= need)
-		want = err;
 
-	if (err == 0) {
-		int nqsets = want - MSIX_EXTRAS;
-		if (nqsets < s->max_ethqsets) {
-			dev_warn(adapter->pdev_dev, "only enough MSI-X vectors"
-				 " for %d Queue Sets\n", nqsets);
-			s->max_ethqsets = nqsets;
-			if (nqsets < s->ethqsets)
-				reduce_ethqs(adapter, nqsets);
-		}
-		for (i = 0; i < want; ++i)
-			adapter->msix_info[i].vec = entries[i].vector;
-	} else if (err > 0) {
-		dev_info(adapter->pdev_dev, "only %d MSI-X vectors left,"
-			 " not using MSI-X\n", err);
+	want = pci_enable_msix_range(adapter->pdev, entries, need, want);
+	if (want < 0)
+		return want;
+
+	nqsets = want - MSIX_EXTRAS;
+	if (nqsets < s->max_ethqsets) {
+		dev_warn(adapter->pdev_dev, "only enough MSI-X vectors"
+			 " for %d Queue Sets\n", nqsets);
+		s->max_ethqsets = nqsets;
+		if (nqsets < s->ethqsets)
+			reduce_ethqs(adapter, nqsets);
 	}
-	return err;
+	for (i = 0; i < want; ++i)
+		adapter->msix_info[i].vec = entries[i].vector;
+
+	return 0;
 }
 
 static const struct net_device_ops cxgb4vf_netdev_ops	= {
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 10/35] enic: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (9 preceding siblings ...)
  (?)
@ 2014-02-18 10:08 ` Alexander Gordeev
  2014-02-18 10:18   ` Govindarajulu Varadarajan
  -1 siblings, 1 reply; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:08 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Christian Benvenuti, Sujith Sankar,
	Govindarajulu Varadarajan, Neel Patel, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Christian Benvenuti <benve@cisco.com>
Cc: Sujith Sankar <ssujith@cisco.com>
Cc: Govindarajulu Varadarajan <govindarajulu90@gmail.com>
Cc: Neel Patel <neepatel@cisco.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/cisco/enic/enic_main.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index b740bfc..dcd58f2 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -1796,7 +1796,8 @@ static int enic_set_intr_mode(struct enic *enic)
 	    enic->cq_count >= n + m &&
 	    enic->intr_count >= n + m + 2) {
 
-		if (!pci_enable_msix(enic->pdev, enic->msix_entry, n + m + 2)) {
+		if (pci_enable_msix_range(enic->pdev, enic->msix_entry,
+					  n + m + 2, n + m + 2) > 0) {
 
 			enic->rq_count = n;
 			enic->wq_count = m;
@@ -1815,7 +1816,8 @@ static int enic_set_intr_mode(struct enic *enic)
 	    enic->wq_count >= m &&
 	    enic->cq_count >= 1 + m &&
 	    enic->intr_count >= 1 + m + 2) {
-		if (!pci_enable_msix(enic->pdev, enic->msix_entry, 1 + m + 2)) {
+		if (pci_enable_msix_range(enic->pdev, enic->msix_entry,
+					  1 + m + 2, 1 + m + 2) > 0) {
 
 			enic->rq_count = 1;
 			enic->wq_count = m;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 11/35] benet: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (10 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Sathya Perla, Subbu Seetharaman,
	Ajit Khaparde, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Sathya Perla <sathya.perla@emulex.com>
Cc: Subbu Seetharaman <subbu.seetharaman@emulex.com>
Cc: Ajit Khaparde <ajit.khaparde@emulex.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Acked-by: Sathya Perla <sathya.perla@emulex.com>
---
 drivers/net/ethernet/emulex/benet/be_main.c |   31 +++++++++++---------------
 1 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index a8cf03e..4f87f5c 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2507,7 +2507,7 @@ static void be_msix_disable(struct be_adapter *adapter)
 
 static int be_msix_enable(struct be_adapter *adapter)
 {
-	int i, status, num_vec;
+	int i, num_vec;
 	struct device *dev = &adapter->pdev->dev;
 
 	/* If RoCE is supported, program the max number of NIC vectors that
@@ -2523,24 +2523,11 @@ static int be_msix_enable(struct be_adapter *adapter)
 	for (i = 0; i < num_vec; i++)
 		adapter->msix_entries[i].entry = i;
 
-	status = pci_enable_msix(adapter->pdev, adapter->msix_entries, num_vec);
-	if (status == 0) {
-		goto done;
-	} else if (status >= MIN_MSIX_VECTORS) {
-		num_vec = status;
-		status = pci_enable_msix(adapter->pdev, adapter->msix_entries,
-					 num_vec);
-		if (!status)
-			goto done;
-	}
+	num_vec = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
+					MIN_MSIX_VECTORS, num_vec);
+	if (num_vec < 0)
+		goto fail;
 
-	dev_warn(dev, "MSIx enable failed\n");
-
-	/* INTx is not supported in VFs, so fail probe if enable_msix fails */
-	if (!be_physfn(adapter))
-		return status;
-	return 0;
-done:
 	if (be_roce_supported(adapter) && num_vec > MIN_MSIX_VECTORS) {
 		adapter->num_msix_roce_vec = num_vec / 2;
 		dev_info(dev, "enabled %d MSI-x vector(s) for RoCE\n",
@@ -2552,6 +2539,14 @@ done:
 	dev_info(dev, "enabled %d MSI-x vector(s) for NIC\n",
 		 adapter->num_msix_vec);
 	return 0;
+
+fail:
+	dev_warn(dev, "MSIx enable failed\n");
+
+	/* INTx is not supported in VFs, so fail probe if enable_msix fails */
+	if (!be_physfn(adapter))
+		return num_vec;
+	return 0;
 }
 
 static inline int be_msix_vec_get(struct be_adapter *adapter,
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 12/35] e1000e: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
@ 2014-02-18 10:11   ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Jeff Kirsher, Jesse Brandeburg, Bruce Allan,
	e1000-devel, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/e1000e/netdev.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 6d91933..e6f8961d 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -2038,13 +2038,16 @@ void e1000e_set_interrupt_capability(struct e1000_adapter *adapter)
 							       msix_entry),
 							GFP_KERNEL);
 			if (adapter->msix_entries) {
+				struct e1000_adapter *a = adapter;
+
 				for (i = 0; i < adapter->num_vectors; i++)
 					adapter->msix_entries[i].entry = i;
 
-				err = pci_enable_msix(adapter->pdev,
-						      adapter->msix_entries,
-						      adapter->num_vectors);
-				if (err == 0)
+				err = pci_enable_msix_range(a->pdev,
+							    a->msix_entries,
+							    a->num_vectors,
+							    a->num_vectors);
+				if (err > 0)
 					return;
 			}
 			/* MSI-X failed, so fall through and try MSI */
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 12/35] e1000e: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 10:11   ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: e1000-devel, netdev, Bruce Allan, Jesse Brandeburg,
	Alexander Gordeev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/e1000e/netdev.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 6d91933..e6f8961d 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -2038,13 +2038,16 @@ void e1000e_set_interrupt_capability(struct e1000_adapter *adapter)
 							       msix_entry),
 							GFP_KERNEL);
 			if (adapter->msix_entries) {
+				struct e1000_adapter *a = adapter;
+
 				for (i = 0; i < adapter->num_vectors; i++)
 					adapter->msix_entries[i].entry = i;
 
-				err = pci_enable_msix(adapter->pdev,
-						      adapter->msix_entries,
-						      adapter->num_vectors);
-				if (err == 0)
+				err = pci_enable_msix_range(a->pdev,
+							    a->msix_entries,
+							    a->num_vectors,
+							    a->num_vectors);
+				if (err > 0)
 					return;
 			}
 			/* MSI-X failed, so fall through and try MSI */
-- 
1.7.7.6


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 13/35] i40e: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
@ 2014-02-18 10:11   ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Jeff Kirsher, Jesse Brandeburg, e1000-devel,
	netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/i40e/i40e_main.c |   33 +++++----------------------
 1 files changed, 6 insertions(+), 27 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 628e917..3116861 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -5856,37 +5856,16 @@ err_out:
  **/
 static int i40e_reserve_msix_vectors(struct i40e_pf *pf, int vectors)
 {
-	int err = 0;
-
-	pf->num_msix_entries = 0;
-	while (vectors >= I40E_MIN_MSIX) {
-		err = pci_enable_msix(pf->pdev, pf->msix_entries, vectors);
-		if (err == 0) {
-			/* good to go */
-			pf->num_msix_entries = vectors;
-			break;
-		} else if (err < 0) {
-			/* total failure */
-			dev_info(&pf->pdev->dev,
-				 "MSI-X vector reservation failed: %d\n", err);
-			vectors = 0;
-			break;
-		} else {
-			/* err > 0 is the hint for retry */
-			dev_info(&pf->pdev->dev,
-				 "MSI-X vectors wanted %d, retrying with %d\n",
-				 vectors, err);
-			vectors = err;
-		}
-	}
-
-	if (vectors > 0 && vectors < I40E_MIN_MSIX) {
+	vectors = pci_enable_msix_range(pf->pdev, pf->msix_entries,
+					I40E_MIN_MSIX, vectors);
+	if (vectors < 0) {
 		dev_info(&pf->pdev->dev,
-			 "Couldn't get enough vectors, only %d available\n",
-			 vectors);
+			 "MSI-X vector reservation failed: %d\n", vectors);
 		vectors = 0;
 	}
 
+	pf->num_msix_entries = vectors;
+
 	return vectors;
 }
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 13/35] i40e: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 10:11   ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: e1000-devel, netdev, Jesse Brandeburg, Alexander Gordeev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/i40e/i40e_main.c |   33 +++++----------------------
 1 files changed, 6 insertions(+), 27 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 628e917..3116861 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -5856,37 +5856,16 @@ err_out:
  **/
 static int i40e_reserve_msix_vectors(struct i40e_pf *pf, int vectors)
 {
-	int err = 0;
-
-	pf->num_msix_entries = 0;
-	while (vectors >= I40E_MIN_MSIX) {
-		err = pci_enable_msix(pf->pdev, pf->msix_entries, vectors);
-		if (err == 0) {
-			/* good to go */
-			pf->num_msix_entries = vectors;
-			break;
-		} else if (err < 0) {
-			/* total failure */
-			dev_info(&pf->pdev->dev,
-				 "MSI-X vector reservation failed: %d\n", err);
-			vectors = 0;
-			break;
-		} else {
-			/* err > 0 is the hint for retry */
-			dev_info(&pf->pdev->dev,
-				 "MSI-X vectors wanted %d, retrying with %d\n",
-				 vectors, err);
-			vectors = err;
-		}
-	}
-
-	if (vectors > 0 && vectors < I40E_MIN_MSIX) {
+	vectors = pci_enable_msix_range(pf->pdev, pf->msix_entries,
+					I40E_MIN_MSIX, vectors);
+	if (vectors < 0) {
 		dev_info(&pf->pdev->dev,
-			 "Couldn't get enough vectors, only %d available\n",
-			 vectors);
+			 "MSI-X vector reservation failed: %d\n", vectors);
 		vectors = 0;
 	}
 
+	pf->num_msix_entries = vectors;
+
 	return vectors;
 }
 
-- 
1.7.7.6


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 14/35] igb: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
@ 2014-02-18 10:11   ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Jeff Kirsher, Jesse Brandeburg, e1000-devel,
	netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/igb/igb_main.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 46d31a4..84dfa3f 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1111,10 +1111,11 @@ static void igb_set_interrupt_capability(struct igb_adapter *adapter, bool msix)
 	for (i = 0; i < numvecs; i++)
 		adapter->msix_entries[i].entry = i;
 
-	err = pci_enable_msix(adapter->pdev,
-			      adapter->msix_entries,
-			      numvecs);
-	if (err == 0)
+	err = pci_enable_msix_range(adapter->pdev,
+				    adapter->msix_entries,
+				    numvecs,
+				    numvecs);
+	if (err > 0)
 		return;
 
 	igb_reset_interrupt_capability(adapter);
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 14/35] igb: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 10:11   ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: e1000-devel, netdev, Jesse Brandeburg, Alexander Gordeev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/igb/igb_main.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 46d31a4..84dfa3f 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1111,10 +1111,11 @@ static void igb_set_interrupt_capability(struct igb_adapter *adapter, bool msix)
 	for (i = 0; i < numvecs; i++)
 		adapter->msix_entries[i].entry = i;
 
-	err = pci_enable_msix(adapter->pdev,
-			      adapter->msix_entries,
-			      numvecs);
-	if (err == 0)
+	err = pci_enable_msix_range(adapter->pdev,
+				    adapter->msix_entries,
+				    numvecs,
+				    numvecs);
+	if (err > 0)
 		return;
 
 	igb_reset_interrupt_capability(adapter);
-- 
1.7.7.6


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 15/35] igbvf: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
@ 2014-02-18 10:11   ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Jeff Kirsher, Jesse Brandeburg, Bruce Allan,
	e1000-devel, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/igbvf/netdev.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index 675435f..e2c6d80 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -1043,11 +1043,11 @@ static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter)
 		for (i = 0; i < 3; i++)
 			adapter->msix_entries[i].entry = i;
 
-		err = pci_enable_msix(adapter->pdev,
-		                      adapter->msix_entries, 3);
+		err = pci_enable_msix_range(adapter->pdev,
+		                            adapter->msix_entries, 3, 3);
 	}
 
-	if (err) {
+	if (err < 0) {
 		/* MSI-X failed */
 		dev_err(&adapter->pdev->dev,
 		        "Failed to initialize MSI-X interrupts.\n");
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 15/35] igbvf: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 10:11   ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: e1000-devel, netdev, Bruce Allan, Jesse Brandeburg,
	Alexander Gordeev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/igbvf/netdev.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index 675435f..e2c6d80 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -1043,11 +1043,11 @@ static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter)
 		for (i = 0; i < 3; i++)
 			adapter->msix_entries[i].entry = i;
 
-		err = pci_enable_msix(adapter->pdev,
-		                      adapter->msix_entries, 3);
+		err = pci_enable_msix_range(adapter->pdev,
+		                            adapter->msix_entries, 3, 3);
 	}
 
-	if (err) {
+	if (err < 0) {
 		/* MSI-X failed */
 		dev_err(&adapter->pdev->dev,
 		        "Failed to initialize MSI-X interrupts.\n");
-- 
1.7.7.6


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 16/35] ixgbe: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
@ 2014-02-18 10:11   ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Jeff Kirsher, Jesse Brandeburg, Bruce Allan,
	e1000-devel, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c |   16 ++++------------
 1 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c
index 32e3eaa..0834e1e 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c
@@ -698,7 +698,7 @@ static void ixgbe_set_num_queues(struct ixgbe_adapter *adapter)
 static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter,
 				       int vectors)
 {
-	int err, vector_threshold;
+	int vector_threshold;
 
 	/* We'll want at least 2 (vector_threshold):
 	 * 1) TxQ[0] + RxQ[0] handler
@@ -712,18 +712,10 @@ static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter,
 	 * Right now, we simply care about how many we'll get; we'll
 	 * set them up later while requesting irq's.
 	 */
-	while (vectors >= vector_threshold) {
-		err = pci_enable_msix(adapter->pdev, adapter->msix_entries,
-				      vectors);
-		if (!err) /* Success in acquiring all requested vectors. */
-			break;
-		else if (err < 0)
-			vectors = 0; /* Nasty failure, quit now */
-		else /* err == number of vectors we should try again with */
-			vectors = err;
-	}
+	vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
+					vector_threshold, vectors);
 
-	if (vectors < vector_threshold) {
+	if (vectors < 0) {
 		/* Can't allocate enough MSI-X interrupts?  Oh well.
 		 * This just means we'll go with either a single MSI
 		 * vector or fall back to legacy interrupts.
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 16/35] ixgbe: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 10:11   ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: e1000-devel, netdev, Bruce Allan, Jesse Brandeburg,
	Alexander Gordeev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c |   16 ++++------------
 1 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c
index 32e3eaa..0834e1e 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c
@@ -698,7 +698,7 @@ static void ixgbe_set_num_queues(struct ixgbe_adapter *adapter)
 static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter,
 				       int vectors)
 {
-	int err, vector_threshold;
+	int vector_threshold;
 
 	/* We'll want at least 2 (vector_threshold):
 	 * 1) TxQ[0] + RxQ[0] handler
@@ -712,18 +712,10 @@ static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter,
 	 * Right now, we simply care about how many we'll get; we'll
 	 * set them up later while requesting irq's.
 	 */
-	while (vectors >= vector_threshold) {
-		err = pci_enable_msix(adapter->pdev, adapter->msix_entries,
-				      vectors);
-		if (!err) /* Success in acquiring all requested vectors. */
-			break;
-		else if (err < 0)
-			vectors = 0; /* Nasty failure, quit now */
-		else /* err == number of vectors we should try again with */
-			vectors = err;
-	}
+	vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
+					vector_threshold, vectors);
 
-	if (vectors < vector_threshold) {
+	if (vectors < 0) {
 		/* Can't allocate enough MSI-X interrupts?  Oh well.
 		 * This just means we'll go with either a single MSI
 		 * vector or fall back to legacy interrupts.
-- 
1.7.7.6


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 17/35] ixgbevf: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
@ 2014-02-18 10:11   ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Jeff Kirsher, Jesse Brandeburg, Bruce Allan,
	e1000-devel, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c |   32 +++++++-------------
 1 files changed, 11 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 9df2898..a6af7b7 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -1817,7 +1817,6 @@ void ixgbevf_reset(struct ixgbevf_adapter *adapter)
 static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
 					int vectors)
 {
-	int err = 0;
 	int vector_threshold;
 
 	/* We'll want at least 2 (vector_threshold):
@@ -1831,33 +1830,24 @@ static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
 	 * Right now, we simply care about how many we'll get; we'll
 	 * set them up later while requesting irq's.
 	 */
-	while (vectors >= vector_threshold) {
-		err = pci_enable_msix(adapter->pdev, adapter->msix_entries,
-				      vectors);
-		if (!err || err < 0) /* Success or a nasty failure. */
-			break;
-		else /* err == number of vectors we should try again with */
-			vectors = err;
-	}
+	vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
+					vector_threshold, vectors);
 
-	if (vectors < vector_threshold)
-		err = -ENOMEM;
-
-	if (err) {
+	if (vectors < 0) {
 		dev_err(&adapter->pdev->dev,
 			"Unable to allocate MSI-X interrupts\n");
 		kfree(adapter->msix_entries);
 		adapter->msix_entries = NULL;
-	} else {
-		/*
-		 * Adjust for only the vectors we'll use, which is minimum
-		 * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
-		 * vectors we were allocated.
-		 */
-		adapter->num_msix_vectors = vectors;
+		return vectors;
 	}
 
-	return err;
+	/* Adjust for only the vectors we'll use, which is minimum
+	 * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
+	 * vectors we were allocated.
+	 */
+	adapter->num_msix_vectors = vectors;
+
+	return 0;
 }
 
 /**
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 17/35] ixgbevf: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 10:11   ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: e1000-devel, netdev, Bruce Allan, Jesse Brandeburg,
	Alexander Gordeev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: e1000-devel@lists.sourceforge.net
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c |   32 +++++++-------------
 1 files changed, 11 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 9df2898..a6af7b7 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -1817,7 +1817,6 @@ void ixgbevf_reset(struct ixgbevf_adapter *adapter)
 static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
 					int vectors)
 {
-	int err = 0;
 	int vector_threshold;
 
 	/* We'll want at least 2 (vector_threshold):
@@ -1831,33 +1830,24 @@ static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
 	 * Right now, we simply care about how many we'll get; we'll
 	 * set them up later while requesting irq's.
 	 */
-	while (vectors >= vector_threshold) {
-		err = pci_enable_msix(adapter->pdev, adapter->msix_entries,
-				      vectors);
-		if (!err || err < 0) /* Success or a nasty failure. */
-			break;
-		else /* err == number of vectors we should try again with */
-			vectors = err;
-	}
+	vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
+					vector_threshold, vectors);
 
-	if (vectors < vector_threshold)
-		err = -ENOMEM;
-
-	if (err) {
+	if (vectors < 0) {
 		dev_err(&adapter->pdev->dev,
 			"Unable to allocate MSI-X interrupts\n");
 		kfree(adapter->msix_entries);
 		adapter->msix_entries = NULL;
-	} else {
-		/*
-		 * Adjust for only the vectors we'll use, which is minimum
-		 * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
-		 * vectors we were allocated.
-		 */
-		adapter->num_msix_vectors = vectors;
+		return vectors;
 	}
 
-	return err;
+	/* Adjust for only the vectors we'll use, which is minimum
+	 * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
+	 * vectors we were allocated.
+	 */
+	adapter->num_msix_vectors = vectors;
+
+	return 0;
 }
 
 /**
-- 
1.7.7.6


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 18/35] mlx4: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (17 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, David S. Miller, Amir Vadai, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Amir Vadai <amirv@mellanox.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Acked-by: Amir Vadai <amirv@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx4/main.c |   21 +++++----------------
 1 files changed, 5 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index d711158..218b759 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -1976,7 +1976,6 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev)
 	int nreq = min_t(int, dev->caps.num_ports *
 			 min_t(int, netif_get_num_default_rss_queues() + 1,
 			       MAX_MSIX_P_PORT) + MSIX_LEGACY_SZ, MAX_MSIX);
-	int err;
 	int i;
 
 	if (msi_x) {
@@ -1990,23 +1989,13 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev)
 		for (i = 0; i < nreq; ++i)
 			entries[i].entry = i;
 
-	retry:
-		err = pci_enable_msix(dev->pdev, entries, nreq);
-		if (err) {
-			/* Try again if at least 2 vectors are available */
-			if (err > 1) {
-				mlx4_info(dev, "Requested %d vectors, "
-					  "but only %d MSI-X vectors available, "
-					  "trying again\n", nreq, err);
-				nreq = err;
-				goto retry;
-			}
+		nreq = pci_enable_msix_range(dev->pdev, entries, 2, nreq);
+
+		if (nreq < 0) {
 			kfree(entries);
 			goto no_msi;
-		}
-
-		if (nreq <
-		    MSIX_LEGACY_SZ + dev->caps.num_ports * MIN_MSIX_P_PORT) {
+		} else if (nreq < MSIX_LEGACY_SZ +
+				  dev->caps.num_ports * MIN_MSIX_P_PORT) {
 			/*Working in legacy mode , all EQ's shared*/
 			dev->caps.comp_pool           = 0;
 			dev->caps.num_comp_vectors = nreq - 1;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 19/35] mlx5: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (18 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Eli Cohen, linux-rdma, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Eli Cohen <eli@mellanox.com>
Cc: linux-rdma@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/mellanox/mlx5/core/main.c |   16 +++++-----------
 1 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index a064f06..81df046 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -116,7 +116,6 @@ static int mlx5_enable_msix(struct mlx5_core_dev *dev)
 	struct mlx5_eq_table *table = &dev->priv.eq_table;
 	int num_eqs = 1 << dev->caps.log_max_eq;
 	int nvec;
-	int err;
 	int i;
 
 	nvec = dev->caps.num_ports * num_online_cpus() + MLX5_EQ_VEC_COMP_BASE;
@@ -131,17 +130,12 @@ static int mlx5_enable_msix(struct mlx5_core_dev *dev)
 	for (i = 0; i < nvec; i++)
 		table->msix_arr[i].entry = i;
 
-retry:
-	table->num_comp_vectors = nvec - MLX5_EQ_VEC_COMP_BASE;
-	err = pci_enable_msix(dev->pdev, table->msix_arr, nvec);
-	if (err <= 0) {
-		return err;
-	} else if (err > 2) {
-		nvec = err;
-		goto retry;
-	}
+	nvec = pci_enable_msix_range(dev->pdev, table->msix_arr,
+				     MLX5_EQ_VEC_COMP_BASE, nvec);
+	if (nvec < 0)
+		return nvec;
 
-	mlx5_core_dbg(dev, "received %d MSI vectors out of %d requested\n", err, nvec);
+	table->num_comp_vectors = nvec - MLX5_EQ_VEC_COMP_BASE;
 
 	return 0;
 }
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 20/35] myri10ge: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (19 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  2014-02-19 15:14   ` Sergei Shtylyov
  -1 siblings, 1 reply; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Hyong-Youb Kim, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Hyong-Youb Kim <hykim@myri.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c |   40 +++++++++++-----------
 1 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
index 68026f7..130f6b2 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -2329,16 +2329,14 @@ static int myri10ge_request_irq(struct myri10ge_priv *mgp)
 	status = 0;
 	if (myri10ge_msi) {
 		if (mgp->num_slices > 1) {
-			status =
-			    pci_enable_msix(pdev, mgp->msix_vectors,
-					    mgp->num_slices);
-			if (status == 0) {
-				mgp->msix_enabled = 1;
-			} else {
+			status = pci_enable_msix_range(pdev, mgp->msix_vectors,
+					mgp->num_slices, mgp->num_slices);
+			if (status < 0) {
 				dev_err(&pdev->dev,
 					"Error %d setting up MSI-X\n", status);
 				return status;
 			}
+			mgp->msix_enabled = 1;
 		}
 		if (mgp->msix_enabled == 0) {
 			status = pci_enable_msi(pdev);
@@ -3895,32 +3893,34 @@ static void myri10ge_probe_slices(struct myri10ge_priv *mgp)
 	mgp->msix_vectors = kcalloc(mgp->num_slices, sizeof(*mgp->msix_vectors),
 				    GFP_KERNEL);
 	if (mgp->msix_vectors == NULL)
-		goto disable_msix;
+		goto no_msix;
 	for (i = 0; i < mgp->num_slices; i++) {
 		mgp->msix_vectors[i].entry = i;
 	}
 
 	while (mgp->num_slices > 1) {
-		/* make sure it is a power of two */
-		while (!is_power_of_2(mgp->num_slices))
-			mgp->num_slices--;
+		mgp->num_slices = rounddown_pow_of_two(mgp->num_slices);
 		if (mgp->num_slices == 1)
-			goto disable_msix;
-		status = pci_enable_msix(pdev, mgp->msix_vectors,
-					 mgp->num_slices);
-		if (status == 0) {
-			pci_disable_msix(pdev);
+			goto no_msix;
+		status = pci_enable_msix_range(pdev,
+					       mgp->msix_vectors,
+					       mgp->num_slices,
+					       mgp->num_slices);
+		if (status < 0)
+			goto no_msix;
+
+		pci_disable_msix(pdev);
+
+		if (status == mgp->num_slices) {
 			if (old_allocated)
 				kfree(old_fw);
 			return;
-		}
-		if (status > 0)
+		} else {
 			mgp->num_slices = status;
-		else
-			goto disable_msix;
+		}
 	}
 
-disable_msix:
+no_msix:
 	if (mgp->msix_vectors != NULL) {
 		kfree(mgp->msix_vectors);
 		mgp->msix_vectors = NULL;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 21/35] s2io: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (20 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Jon Mason, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jon Mason <jdmason@kudzu.us>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/neterion/s2io.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
index 9eeddbd..56e3a9d 100644
--- a/drivers/net/ethernet/neterion/s2io.c
+++ b/drivers/net/ethernet/neterion/s2io.c
@@ -3792,9 +3792,10 @@ static int s2io_enable_msi_x(struct s2io_nic *nic)
 	writeq(rx_mat, &bar0->rx_mat);
 	readq(&bar0->rx_mat);
 
-	ret = pci_enable_msix(nic->pdev, nic->entries, nic->num_entries);
+	ret = pci_enable_msix_range(nic->pdev, nic->entries,
+				    nic->num_entries, nic->num_entries);
 	/* We fail init if error or we get less vectors than min required */
-	if (ret) {
+	if (ret < 0) {
 		DBG_PRINT(ERR_DBG, "Enabling MSI-X failed\n");
 		kfree(nic->entries);
 		swstats->mem_freed += nic->num_entries *
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 22/35] vxge: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (21 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Jon Mason, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jon Mason <jdmason@kudzu.us>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/neterion/vxge/vxge-main.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index e46e869..c83cedd 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -2349,12 +2349,18 @@ start:
 	vdev->vxge_entries[j].entry = VXGE_ALARM_MSIX_ID;
 	vdev->vxge_entries[j].in_use = 0;
 
-	ret = pci_enable_msix(vdev->pdev, vdev->entries, vdev->intr_cnt);
-	if (ret > 0) {
+	ret = pci_enable_msix_range(vdev->pdev,
+				    vdev->entries, 3, vdev->intr_cnt);
+	if (ret < 0) {
+		ret = -ENODEV;
+		goto enable_msix_failed;
+	} else if (ret < vdev->intr_cnt) {
+		pci_disable_msix(vdev->pdev);
+
 		vxge_debug_init(VXGE_ERR,
 			"%s: MSI-X enable failed for %d vectors, ret: %d",
 			VXGE_DRIVER_NAME, vdev->intr_cnt, ret);
-		if ((max_config_vpath != VXGE_USE_DEFAULT) || (ret < 3)) {
+		if (max_config_vpath != VXGE_USE_DEFAULT) {
 			ret = -ENODEV;
 			goto enable_msix_failed;
 		}
@@ -2368,9 +2374,6 @@ start:
 		vxge_close_vpaths(vdev, temp);
 		vdev->no_of_vpath = temp;
 		goto start;
-	} else if (ret < 0) {
-		ret = -ENODEV;
-		goto enable_msix_failed;
 	}
 	return 0;
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 23/35] forcedeth: Fix invalid errno reporting in nv_request_irq()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (22 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, David S. Miller, Patrick McHardy, netdev, linux-pci

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Patrick McHardy <kaber@trash.net>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/nvidia/forcedeth.c |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index 70cf97f..f4270b8 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -3952,8 +3952,9 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 			if (optimization_mode == NV_OPTIMIZATION_MODE_THROUGHPUT && !intr_test) {
 				/* Request irq for rx handling */
 				sprintf(np->name_rx, "%s-rx", dev->name);
-				if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector,
-						nv_nic_irq_rx, IRQF_SHARED, np->name_rx, dev) != 0) {
+				ret = request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector,
+						  nv_nic_irq_rx, IRQF_SHARED, np->name_rx, dev);
+				if (ret) {
 					netdev_info(dev,
 						    "request_irq failed for rx %d\n",
 						    ret);
@@ -3963,8 +3964,9 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 				}
 				/* Request irq for tx handling */
 				sprintf(np->name_tx, "%s-tx", dev->name);
-				if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector,
-						nv_nic_irq_tx, IRQF_SHARED, np->name_tx, dev) != 0) {
+				ret = request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector,
+						  nv_nic_irq_tx, IRQF_SHARED, np->name_tx, dev);
+				if (ret) {
 					netdev_info(dev,
 						    "request_irq failed for tx %d\n",
 						    ret);
@@ -3974,8 +3976,9 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 				}
 				/* Request irq for link and timer handling */
 				sprintf(np->name_other, "%s-other", dev->name);
-				if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector,
-						nv_nic_irq_other, IRQF_SHARED, np->name_other, dev) != 0) {
+				ret = request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector,
+						  nv_nic_irq_other, IRQF_SHARED, np->name_other, dev);
+				if (ret) {
 					netdev_info(dev,
 						    "request_irq failed for link %d\n",
 						    ret);
@@ -3991,7 +3994,9 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 				set_msix_vector_map(dev, NV_MSI_X_VECTOR_OTHER, NVREG_IRQ_OTHER);
 			} else {
 				/* Request irq for all interrupts */
-				if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector, handler, IRQF_SHARED, dev->name, dev) != 0) {
+				ret = request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector,
+						  handler, IRQF_SHARED, dev->name, dev);
+				if (ret) {
 					netdev_info(dev,
 						    "request_irq failed %d\n",
 						    ret);
@@ -4011,7 +4016,8 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 		ret = pci_enable_msi(np->pci_dev);
 		if (ret == 0) {
 			np->msi_flags |= NV_MSI_ENABLED;
-			if (request_irq(np->pci_dev->irq, handler, IRQF_SHARED, dev->name, dev) != 0) {
+			ret = request_irq(np->pci_dev->irq, handler, IRQF_SHARED, dev->name, dev);
+			if (ret) {
 				netdev_info(dev, "request_irq failed %d\n",
 					    ret);
 				pci_disable_msi(np->pci_dev);
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 24/35] forcedeth: Cleanup MSI-X to MSI to INTx fallback code
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (23 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, David S. Miller, Patrick McHardy, netdev, linux-pci

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Patrick McHardy <kaber@trash.net>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/nvidia/forcedeth.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index f4270b8..74da489 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -3930,7 +3930,7 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 {
 	struct fe_priv *np = get_nvpriv(dev);
 	u8 __iomem *base = get_hwbase(dev);
-	int ret = 1;
+	int ret;
 	int i;
 	irqreturn_t (*handler)(int foo, void *data);
 
@@ -4010,9 +4010,10 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 				writel(0, base + NvRegMSIXMap1);
 			}
 			netdev_info(dev, "MSI-X enabled\n");
+			return 0;
 		}
 	}
-	if (ret != 0 && np->msi_flags & NV_MSI_CAPABLE) {
+	if (np->msi_flags & NV_MSI_CAPABLE) {
 		ret = pci_enable_msi(np->pci_dev);
 		if (ret == 0) {
 			np->msi_flags |= NV_MSI_ENABLED;
@@ -4031,13 +4032,12 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 			/* enable msi vector 0 */
 			writel(NVREG_MSI_VECTOR_0_ENABLED, base + NvRegMSIIrqMask);
 			netdev_info(dev, "MSI enabled\n");
+			return 0;
 		}
 	}
-	if (ret != 0) {
-		if (request_irq(np->pci_dev->irq, handler, IRQF_SHARED, dev->name, dev) != 0)
-			goto out_err;
 
-	}
+	if (request_irq(np->pci_dev->irq, handler, IRQF_SHARED, dev->name, dev) != 0)
+		goto out_err;
 
 	return 0;
 out_free_tx:
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 25/35] forcedeth: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (24 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, David S. Miller, Patrick McHardy, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Patrick McHardy <kaber@trash.net>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/nvidia/forcedeth.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index 74da489..bad3c05 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -3946,8 +3946,11 @@ static int nv_request_irq(struct net_device *dev, int intr_test)
 	if (np->msi_flags & NV_MSI_X_CAPABLE) {
 		for (i = 0; i < (np->msi_flags & NV_MSI_X_VECTORS_MASK); i++)
 			np->msi_x_entry[i].entry = i;
-		ret = pci_enable_msix(np->pci_dev, np->msi_x_entry, (np->msi_flags & NV_MSI_X_VECTORS_MASK));
-		if (ret == 0) {
+		ret = pci_enable_msix_range(np->pci_dev,
+					    np->msi_x_entry,
+					    np->msi_flags & NV_MSI_X_VECTORS_MASK,
+					    np->msi_flags & NV_MSI_X_VECTORS_MASK);
+		if (ret > 0) {
 			np->msi_flags |= NV_MSI_X_ENABLED;
 			if (optimization_mode == NV_OPTIMIZATION_MODE_THROUGHPUT && !intr_test) {
 				/* Request irq for rx handling */
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 26/35] netxen: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (25 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Manish Chopra, Sony Chacko, Rajesh Borundia,
	netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Manish Chopra <manish.chopra@qlogic.com>
Cc: Sony Chacko <sony.chacko@qlogic.com>
Cc: Rajesh Borundia <rajesh.borundia@qlogic.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 .../net/ethernet/qlogic/netxen/netxen_nic_main.c   |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index 70849de..f09c35d 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -643,8 +643,9 @@ static int netxen_setup_msi_interrupts(struct netxen_adapter *adapter,
 
 	if (adapter->msix_supported) {
 		netxen_init_msix_entries(adapter, num_msix);
-		err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
-		if (err == 0) {
+		err = pci_enable_msix_range(pdev, adapter->msix_entries,
+					    num_msix, num_msix);
+		if (err > 0) {
 			adapter->flags |= NETXEN_NIC_MSIX_ENABLED;
 			netxen_set_msix_bit(pdev, 1);
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 27/35] qlcnic: Cleanup qlcnic_enable_msix() return values
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (26 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Himanshu Madhani, Rajesh Borundia,
	Shahed Shaikh, linux-driver, netdev, linux-pci

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Himanshu Madhani <himanshu.madhani@qlogic.com>
Cc: Rajesh Borundia <rajesh.borundia@qlogic.com>
Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
Cc: linux-driver@qlogic.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index ba78c74..0c077cf 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -684,7 +684,7 @@ restore:
 int qlcnic_enable_msix(struct qlcnic_adapter *adapter, u32 num_msix)
 {
 	struct pci_dev *pdev = adapter->pdev;
-	int err = -1, vector;
+	int err, vector;
 
 	if (!adapter->msix_entries) {
 		adapter->msix_entries = kcalloc(num_msix,
@@ -706,7 +706,7 @@ enable_msix:
 			adapter->flags |= QLCNIC_MSIX_ENABLED;
 			adapter->ahw->num_msix = num_msix;
 			dev_info(&pdev->dev, "using msi-x interrupts\n");
-			return err;
+			return 0;
 		} else if (err > 0) {
 			dev_info(&pdev->dev,
 				 "Unable to allocate %d MSI-X vectors, Available vectors %d\n",
@@ -715,12 +715,12 @@ enable_msix:
 			if (qlcnic_82xx_check(adapter)) {
 				num_msix = rounddown_pow_of_two(err);
 				if (err < QLCNIC_82XX_MINIMUM_VECTOR)
-					return -EIO;
+					return -ENOSPC;
 			} else {
 				num_msix = rounddown_pow_of_two(err - 1);
 				num_msix += 1;
 				if (err < QLCNIC_83XX_MINIMUM_VECTOR)
-					return -EIO;
+					return -ENOSPC;
 			}
 
 			if (qlcnic_82xx_check(adapter) &&
@@ -747,7 +747,7 @@ enable_msix:
 		}
 	}
 
-	return err;
+	return -EIO;
 }
 
 static int qlcnic_82xx_calculate_msix_vector(struct qlcnic_adapter *adapter)
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (27 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  2014-02-22  0:44   ` Ben Hutchings
  -1 siblings, 1 reply; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Himanshu Madhani, Rajesh Borundia,
	Shahed Shaikh, linux-driver, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Himanshu Madhani <himanshu.madhani@qlogic.com>
Cc: Rajesh Borundia <rajesh.borundia@qlogic.com>
Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
Cc: linux-driver@qlogic.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 0c077cf..e07fd94 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -701,13 +701,17 @@ enable_msix:
 		for (vector = 0; vector < num_msix; vector++)
 			adapter->msix_entries[vector].entry = vector;
 
-		err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
-		if (err == 0) {
+		err = pci_enable_msix_range(pdev,
+					    adapter->msix_entries, 1, num_msix);
+
+		if (err == num_msix) {
 			adapter->flags |= QLCNIC_MSIX_ENABLED;
 			adapter->ahw->num_msix = num_msix;
 			dev_info(&pdev->dev, "using msi-x interrupts\n");
 			return 0;
 		} else if (err > 0) {
+			pci_disable_msix(pdev);
+
 			dev_info(&pdev->dev,
 				 "Unable to allocate %d MSI-X vectors, Available vectors %d\n",
 				 num_msix, err);
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 29/35] qlge: Get rid of an redundant assignment
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (28 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  2014-02-18 19:19     ` Jitendra Kalsaria
  -1 siblings, 1 reply; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Shahed Shaikh, Jitendra Kalsaria, Ron Mercer,
	linux-driver, netdev, linux-pci

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
Cc: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Cc: Ron Mercer <ron.mercer@qlogic.com>
Cc: linux-driver@qlogic.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/qlogic/qlge/qlge_main.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index ce2cfdd..82bace5 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -3346,7 +3346,6 @@ static void ql_enable_msix(struct ql_adapter *qdev)
 			qdev->msi_x_entry = NULL;
 			netif_warn(qdev, ifup, qdev->ndev,
 				   "MSI-X Enable failed, trying MSI.\n");
-			qdev->intr_count = 1;
 			qlge_irq_type = MSI_IRQ;
 		} else if (err == 0) {
 			set_bit(QL_MSIX_ENABLED, &qdev->flags);
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 30/35] qlge: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (29 preceding siblings ...)
  (?)
@ 2014-02-18 10:11 ` Alexander Gordeev
  2014-02-18 19:20     ` Jitendra Kalsaria
  -1 siblings, 1 reply; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Shahed Shaikh, Jitendra Kalsaria, Ron Mercer,
	linux-driver, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
Cc: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Cc: Ron Mercer <ron.mercer@qlogic.com>
Cc: linux-driver@qlogic.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/qlogic/qlge/qlge_main.c |   15 ++++-----------
 1 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index 82bace5..adf87d2 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -3331,23 +3331,16 @@ static void ql_enable_msix(struct ql_adapter *qdev)
 		for (i = 0; i < qdev->intr_count; i++)
 			qdev->msi_x_entry[i].entry = i;
 
-		/* Loop to get our vectors.  We start with
-		 * what we want and settle for what we get.
-		 */
-		do {
-			err = pci_enable_msix(qdev->pdev,
-				qdev->msi_x_entry, qdev->intr_count);
-			if (err > 0)
-				qdev->intr_count = err;
-		} while (err > 0);
-
+		err = pci_enable_msix_range(qdev->pdev, qdev->msi_x_entry,
+					    1, qdev->intr_count);
 		if (err < 0) {
 			kfree(qdev->msi_x_entry);
 			qdev->msi_x_entry = NULL;
 			netif_warn(qdev, ifup, qdev->ndev,
 				   "MSI-X Enable failed, trying MSI.\n");
 			qlge_irq_type = MSI_IRQ;
-		} else if (err == 0) {
+		} else {
+			qdev->intr_count = err;
 			set_bit(QL_MSIX_ENABLED, &qdev->flags);
 			netif_info(qdev, ifup, qdev->ndev,
 				   "MSI-X Enabled, got %d vectors.\n",
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 31/35] sfc: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (30 preceding siblings ...)
  (?)
@ 2014-02-18 10:12 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:12 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Shradha Shah, linux-net-drivers, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Shradha Shah <sshah@solarflare.com>
Cc: linux-net-drivers@solarflare.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Acked-by: Shradha Shah <sshah@solarflare.com>
---
 drivers/net/ethernet/sfc/efx.c |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index 62d1a78..d72e003 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -1344,20 +1344,23 @@ static int efx_probe_interrupts(struct efx_nic *efx)
 
 		for (i = 0; i < n_channels; i++)
 			xentries[i].entry = i;
-		rc = pci_enable_msix(efx->pci_dev, xentries, n_channels);
-		if (rc > 0) {
+		rc = pci_enable_msix_range(efx->pci_dev,
+					   xentries, 1, n_channels);
+		if (rc < 0) {
+			/* Fall back to single channel MSI */
+			efx->interrupt_mode = EFX_INT_MODE_MSI;
+			netif_err(efx, drv, efx->net_dev,
+				  "could not enable MSI-X\n");
+		} else if (rc < n_channels) {
 			netif_err(efx, drv, efx->net_dev,
 				  "WARNING: Insufficient MSI-X vectors"
 				  " available (%d < %u).\n", rc, n_channels);
 			netif_err(efx, drv, efx->net_dev,
 				  "WARNING: Performance may be reduced.\n");
-			EFX_BUG_ON_PARANOID(rc >= n_channels);
 			n_channels = rc;
-			rc = pci_enable_msix(efx->pci_dev, xentries,
-					     n_channels);
 		}
 
-		if (rc == 0) {
+		if (rc > 0) {
 			efx->n_channels = n_channels;
 			if (n_channels > extra_channels)
 				n_channels -= extra_channels;
@@ -1373,11 +1376,6 @@ static int efx_probe_interrupts(struct efx_nic *efx)
 			for (i = 0; i < efx->n_channels; i++)
 				efx_get_channel(efx, i)->irq =
 					xentries[i].vector;
-		} else {
-			/* Fall back to single channel MSI */
-			efx->interrupt_mode = EFX_INT_MODE_MSI;
-			netif_err(efx, drv, efx->net_dev,
-				  "could not enable MSI-X\n");
 		}
 	}
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 32/35] niu: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (31 preceding siblings ...)
  (?)
@ 2014-02-18 10:12 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:12 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, David S. Miller, Jingoo Han, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jingoo Han <jg1.han@samsung.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/ethernet/sun/niu.c |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index 8e2266e..79606f47a 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -9041,7 +9041,7 @@ static void niu_try_msix(struct niu *np, u8 *ldg_num_map)
 	struct msix_entry msi_vec[NIU_NUM_LDG];
 	struct niu_parent *parent = np->parent;
 	struct pci_dev *pdev = np->pdev;
-	int i, num_irqs, err;
+	int i, num_irqs;
 	u8 first_ldg;
 
 	first_ldg = (NIU_NUM_LDG / parent->num_ports) * np->port;
@@ -9053,21 +9053,16 @@ static void niu_try_msix(struct niu *np, u8 *ldg_num_map)
 		    (np->port == 0 ? 3 : 1));
 	BUG_ON(num_irqs > (NIU_NUM_LDG / parent->num_ports));
 
-retry:
 	for (i = 0; i < num_irqs; i++) {
 		msi_vec[i].vector = 0;
 		msi_vec[i].entry = i;
 	}
 
-	err = pci_enable_msix(pdev, msi_vec, num_irqs);
-	if (err < 0) {
+	num_irqs = pci_enable_msix_range(pdev, msi_vec, 1, num_irqs);
+	if (num_irqs < 0) {
 		np->flags &= ~NIU_FLAGS_MSIX;
 		return;
 	}
-	if (err > 0) {
-		num_irqs = err;
-		goto retry;
-	}
 
 	np->flags |= NIU_FLAGS_MSIX;
 	for (i = 0; i < num_irqs; i++)
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 33/35] vmxnet3: Fix MSI-X/MSI enablement code
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (32 preceding siblings ...)
  (?)
@ 2014-02-18 10:12 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:12 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Shreyas Bhatewara, pv-drivers, netdev, linux-pci

This update cleans up the MSI-X/MSI enablement code, fixes
vmxnet3_acquire_msix_vectors() invalid return values and
enables a dead code in case VMXNET3_LINUX_MIN_MSIX_VECT
MSI-X vectors were allocated.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Shreyas Bhatewara <sbhatewara@vmware.com>
Cc: pv-drivers@vmware.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/vmxnet3/vmxnet3_drv.c |  101 +++++++++++++++++--------------------
 1 files changed, 46 insertions(+), 55 deletions(-)

diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 3be786f..3a17797 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -2729,47 +2729,44 @@ vmxnet3_read_mac_addr(struct vmxnet3_adapter *adapter, u8 *mac)
 /*
  * Enable MSIx vectors.
  * Returns :
- *	0 on successful enabling of required vectors,
  *	VMXNET3_LINUX_MIN_MSIX_VECT when only minimum number of vectors required
- *	 could be enabled.
- *	number of vectors which can be enabled otherwise (this number is smaller
+ *	 were enabled.
+ *	number of vectors which were enabled otherwise (this number is greater
  *	 than VMXNET3_LINUX_MIN_MSIX_VECT)
  */
 
 static int
-vmxnet3_acquire_msix_vectors(struct vmxnet3_adapter *adapter,
-			     int vectors)
+vmxnet3_acquire_msix_vectors(struct vmxnet3_adapter *adapter, int nvec)
 {
-	int err = 0, vector_threshold;
-	vector_threshold = VMXNET3_LINUX_MIN_MSIX_VECT;
-
-	while (vectors >= vector_threshold) {
-		err = pci_enable_msix(adapter->pdev, adapter->intr.msix_entries,
-				      vectors);
+	do {
+		int err = pci_enable_msix(adapter->pdev,
+					  adapter->intr.msix_entries, nvec);
 		if (!err) {
-			adapter->intr.num_intrs = vectors;
-			return 0;
+			return nvec;
 		} else if (err < 0) {
 			dev_err(&adapter->netdev->dev,
-				   "Failed to enable MSI-X, error: %d\n", err);
-			vectors = 0;
-		} else if (err < vector_threshold) {
-			break;
+				"Failed to enable MSI-X, error: %d\n", err);
+			return err;
+		} else if (err < VMXNET3_LINUX_MIN_MSIX_VECT) {
+			dev_info(&adapter->pdev->dev,
+				 "Number of MSI-X which can be allocated "
+				 "is lower than min threshold required.\n");
+			return -ENOSPC;
 		} else {
 			/* If fails to enable required number of MSI-x vectors
 			 * try enabling minimum number of vectors required.
 			 */
 			dev_err(&adapter->netdev->dev,
-				"Failed to enable %d MSI-X, trying %d instead\n",
-				    vectors, vector_threshold);
-			vectors = vector_threshold;
+				"Failed to enable %d MSI-X, trying %d\n",
+				nvec, VMXNET3_LINUX_MIN_MSIX_VECT);
+			nvec = VMXNET3_LINUX_MIN_MSIX_VECT;
 		}
-	}
+	} while (nvec >= VMXNET3_LINUX_MIN_MSIX_VECT);
 
-	dev_info(&adapter->pdev->dev,
-		 "Number of MSI-X interrupts which can be allocated "
-		 "is lower than min threshold required.\n");
-	return err;
+	/*
+	 * Should never get here
+	 */
+	return -ENOSPC;
 }
 
 
@@ -2796,56 +2793,50 @@ vmxnet3_alloc_intr_resources(struct vmxnet3_adapter *adapter)
 
 #ifdef CONFIG_PCI_MSI
 	if (adapter->intr.type == VMXNET3_IT_MSIX) {
-		int vector, err = 0;
-
-		adapter->intr.num_intrs = (adapter->share_intr ==
-					   VMXNET3_INTR_TXSHARE) ? 1 :
-					   adapter->num_tx_queues;
-		adapter->intr.num_intrs += (adapter->share_intr ==
-					   VMXNET3_INTR_BUDDYSHARE) ? 0 :
-					   adapter->num_rx_queues;
-		adapter->intr.num_intrs += 1;		/* for link event */
-
-		adapter->intr.num_intrs = (adapter->intr.num_intrs >
-					   VMXNET3_LINUX_MIN_MSIX_VECT
-					   ? adapter->intr.num_intrs :
-					   VMXNET3_LINUX_MIN_MSIX_VECT);
-
-		for (vector = 0; vector < adapter->intr.num_intrs; vector++)
-			adapter->intr.msix_entries[vector].entry = vector;
-
-		err = vmxnet3_acquire_msix_vectors(adapter,
-						   adapter->intr.num_intrs);
+		int i, nvec;
+
+		nvec  = adapter->share_intr == VMXNET3_INTR_TXSHARE ?
+			1 : adapter->num_tx_queues;
+		nvec += adapter->share_intr == VMXNET3_INTR_BUDDYSHARE ?
+			0 : adapter->num_rx_queues;
+		nvec += 1;	/* for link event */
+		nvec = nvec > VMXNET3_LINUX_MIN_MSIX_VECT ?
+		       nvec : VMXNET3_LINUX_MIN_MSIX_VECT;
+
+		for (i = 0; i < nvec; i++)
+			adapter->intr.msix_entries[i].entry = i;
+
+		nvec = vmxnet3_acquire_msix_vectors(adapter, nvec);
+		if (nvec < 0)
+			goto msix_err;
+
 		/* If we cannot allocate one MSIx vector per queue
 		 * then limit the number of rx queues to 1
 		 */
-		if (err == VMXNET3_LINUX_MIN_MSIX_VECT) {
+		if (nvec == VMXNET3_LINUX_MIN_MSIX_VECT) {
 			if (adapter->share_intr != VMXNET3_INTR_BUDDYSHARE
 			    || adapter->num_rx_queues != 1) {
 				adapter->share_intr = VMXNET3_INTR_TXSHARE;
 				netdev_err(adapter->netdev,
 					   "Number of rx queues : 1\n");
 				adapter->num_rx_queues = 1;
-				adapter->intr.num_intrs =
-						VMXNET3_LINUX_MIN_MSIX_VECT;
 			}
-			return;
 		}
-		if (!err)
-			return;
 
+		adapter->intr.num_intrs = nvec;
+		return;
+
+msix_err:
 		/* If we cannot allocate MSIx vectors use only one rx queue */
 		dev_info(&adapter->pdev->dev,
 			 "Failed to enable MSI-X, error %d. "
-			 "Limiting #rx queues to 1, try MSI.\n", err);
+			 "Limiting #rx queues to 1, try MSI.\n", nvec);
 
 		adapter->intr.type = VMXNET3_IT_MSI;
 	}
 
 	if (adapter->intr.type == VMXNET3_IT_MSI) {
-		int err;
-		err = pci_enable_msi(adapter->pdev);
-		if (!err) {
+		if (!pci_enable_msi(adapter->pdev)) {
 			adapter->num_rx_queues = 1;
 			adapter->intr.num_intrs = 1;
 			return;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 34/35] vmxnet3: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (33 preceding siblings ...)
  (?)
@ 2014-02-18 10:12 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:12 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Shreyas Bhatewara, pv-drivers, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Shreyas Bhatewara <sbhatewara@vmware.com>
Cc: pv-drivers@vmware.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/net/vmxnet3/vmxnet3_drv.c |   47 +++++++++++++++----------------------
 1 files changed, 19 insertions(+), 28 deletions(-)

diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 3a17797..9275c8c 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -2738,35 +2738,26 @@ vmxnet3_read_mac_addr(struct vmxnet3_adapter *adapter, u8 *mac)
 static int
 vmxnet3_acquire_msix_vectors(struct vmxnet3_adapter *adapter, int nvec)
 {
-	do {
-		int err = pci_enable_msix(adapter->pdev,
-					  adapter->intr.msix_entries, nvec);
-		if (!err) {
-			return nvec;
-		} else if (err < 0) {
-			dev_err(&adapter->netdev->dev,
-				"Failed to enable MSI-X, error: %d\n", err);
-			return err;
-		} else if (err < VMXNET3_LINUX_MIN_MSIX_VECT) {
-			dev_info(&adapter->pdev->dev,
-				 "Number of MSI-X which can be allocated "
-				 "is lower than min threshold required.\n");
-			return -ENOSPC;
-		} else {
-			/* If fails to enable required number of MSI-x vectors
-			 * try enabling minimum number of vectors required.
-			 */
-			dev_err(&adapter->netdev->dev,
-				"Failed to enable %d MSI-X, trying %d\n",
-				nvec, VMXNET3_LINUX_MIN_MSIX_VECT);
-			nvec = VMXNET3_LINUX_MIN_MSIX_VECT;
-		}
-	} while (nvec >= VMXNET3_LINUX_MIN_MSIX_VECT);
+	int ret = pci_enable_msix_range(adapter->pdev,
+					adapter->intr.msix_entries, nvec, nvec);
 
-	/*
-	 * Should never get here
-	 */
-	return -ENOSPC;
+	if (ret == -ENOSPC && nvec > VMXNET3_LINUX_MIN_MSIX_VECT) {
+		dev_err(&adapter->netdev->dev,
+			"Failed to enable %d MSI-X, trying %d\n",
+			nvec, VMXNET3_LINUX_MIN_MSIX_VECT);
+
+		ret = pci_enable_msix_range(adapter->pdev,
+					    adapter->intr.msix_entries,
+					    VMXNET3_LINUX_MIN_MSIX_VECT,
+					    VMXNET3_LINUX_MIN_MSIX_VECT);
+	}
+
+	if (ret < 0) {
+		dev_err(&adapter->netdev->dev,
+			"Failed to enable MSI-X, error: %d\n", ret);
+	}
+
+	return ret;
 }
 
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH net-next 35/35] wil6210: Use pci_enable_msi_range() instead of pci_enable_msi_block()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (34 preceding siblings ...)
  (?)
@ 2014-02-18 10:12 ` Alexander Gordeev
  -1 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-18 10:12 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Vladimir Kondratiev, John W. Linville,
	wil6210, netdev, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: wil6210@qca.qualcomm.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Acked-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
---
 drivers/net/wireless/ath/wil6210/pcie_bus.c |   32 ++++++++++++--------------
 1 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/drivers/net/wireless/ath/wil6210/pcie_bus.c b/drivers/net/wireless/ath/wil6210/pcie_bus.c
index eeceab3..e1c8cc4 100644
--- a/drivers/net/wireless/ath/wil6210/pcie_bus.c
+++ b/drivers/net/wireless/ath/wil6210/pcie_bus.c
@@ -41,30 +41,28 @@ static int wil_if_pcie_enable(struct wil6210_priv *wil)
 	switch (use_msi) {
 	case 3:
 	case 1:
+		wil_dbg_misc(wil, "Setup %d MSI interrupts\n", use_msi);
+		break;
 	case 0:
+		wil_dbg_misc(wil, "MSI interrupts disabled, use INTx\n");
 		break;
 	default:
-		wil_err(wil, "Invalid use_msi=%d, default to 1\n",
-			use_msi);
+		wil_err(wil, "Invalid use_msi=%d, default to 1\n", use_msi);
 		use_msi = 1;
 	}
-	wil->n_msi = use_msi;
-	if (wil->n_msi) {
-		wil_dbg_misc(wil, "Setup %d MSI interrupts\n", use_msi);
-		rc = pci_enable_msi_block(pdev, wil->n_msi);
-		if (rc && (wil->n_msi == 3)) {
-			wil_err(wil, "3 MSI mode failed, try 1 MSI\n");
-			wil->n_msi = 1;
-			rc = pci_enable_msi_block(pdev, wil->n_msi);
-		}
-		if (rc) {
-			wil_err(wil, "pci_enable_msi failed, use INTx\n");
-			wil->n_msi = 0;
-		}
-	} else {
-		wil_dbg_misc(wil, "MSI interrupts disabled, use INTx\n");
+
+	if (use_msi == 3 && pci_enable_msi_range(pdev, 3, 3) < 0) {
+		wil_err(wil, "3 MSI mode failed, try 1 MSI\n");
+		use_msi = 1;
+	}
+
+	if (use_msi == 1 && pci_enable_msi(pdev)) {
+		wil_err(wil, "pci_enable_msi failed, use INTx\n");
+		use_msi = 0;
 	}
 
+	wil->n_msi = use_msi;
+
 	rc = wil6210_init_irq(wil, pdev->irq);
 	if (rc)
 		goto stop_master;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 10/35] enic: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:08 ` [PATCH net-next 10/35] enic: " Alexander Gordeev
@ 2014-02-18 10:18   ` Govindarajulu Varadarajan
  0 siblings, 0 replies; 60+ messages in thread
From: Govindarajulu Varadarajan @ 2014-02-18 10:18 UTC (permalink / raw)
  To: Alexander Gordeev
  Cc: linux-kernel, Christian Benvenuti, Sujith Sankar,
	Govindarajulu Varadarajan, Neel Patel, netdev, linux-pci



On Tue, 18 Feb 2014, Alexander Gordeev wrote:

> As result of deprecation of MSI-X/MSI enablement functions
> pci_enable_msix() and pci_enable_msi_block() all drivers
> using these two interfaces need to be updated to use the
> new pci_enable_msi_range() and pci_enable_msix_range()
> interfaces.
>
looks good, thanks

Acked-by: Govindarajulu Varadarajan <govindarajulu90@gmail.com>



> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> Cc: Christian Benvenuti <benve@cisco.com>
> Cc: Sujith Sankar <ssujith@cisco.com>
> Cc: Govindarajulu Varadarajan <govindarajulu90@gmail.com>
> Cc: Neel Patel <neepatel@cisco.com>
> Cc: netdev@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> ---
> drivers/net/ethernet/cisco/enic/enic_main.c |    6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
> index b740bfc..dcd58f2 100644
> --- a/drivers/net/ethernet/cisco/enic/enic_main.c
> +++ b/drivers/net/ethernet/cisco/enic/enic_main.c
> @@ -1796,7 +1796,8 @@ static int enic_set_intr_mode(struct enic *enic)
> 	    enic->cq_count >= n + m &&
> 	    enic->intr_count >= n + m + 2) {
>
> -		if (!pci_enable_msix(enic->pdev, enic->msix_entry, n + m + 2)) {
> +		if (pci_enable_msix_range(enic->pdev, enic->msix_entry,
> +					  n + m + 2, n + m + 2) > 0) {
>
> 			enic->rq_count = n;
> 			enic->wq_count = m;
> @@ -1815,7 +1816,8 @@ static int enic_set_intr_mode(struct enic *enic)
> 	    enic->wq_count >= m &&
> 	    enic->cq_count >= 1 + m &&
> 	    enic->intr_count >= 1 + m + 2) {
> -		if (!pci_enable_msix(enic->pdev, enic->msix_entry, 1 + m + 2)) {
> +		if (pci_enable_msix_range(enic->pdev, enic->msix_entry,
> +					  1 + m + 2, 1 + m + 2) > 0) {
>
> 			enic->rq_count = 1;
> 			enic->wq_count = m;
> -- 
> 1.7.7.6
>
>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ixgbevf: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:11   ` Alexander Gordeev
  (?)
@ 2014-02-18 12:01   ` Amir Vadai
  2014-02-18 12:14     ` Amir Vadai
  2014-02-18 20:56     ` David Miller
  -1 siblings, 2 replies; 60+ messages in thread
From: Amir Vadai @ 2014-02-18 12:01 UTC (permalink / raw)
  To: Alexander Gordeev
  Cc: linux-kernel, Jeff Kirsher, Jesse Brandeburg, Bruce Allan,
	e1000-devel, netdev, linux-pci

On 18/02/14 11:11 +0100, Alexander Gordeev wrote:
> As result of deprecation of MSI-X/MSI enablement functions
> pci_enable_msix() and pci_enable_msi_block() all drivers
> using these two interfaces need to be updated to use the
> new pci_enable_msi_range() and pci_enable_msix_range()
> interfaces.
> 
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Cc: Bruce Allan <bruce.w.allan@intel.com>
> Cc: e1000-devel@lists.sourceforge.net
> Cc: netdev@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> ---

Acked-By: Amir Vadai <amirv@mellanox.com>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ixgbevf: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 12:01   ` Amir Vadai
@ 2014-02-18 12:14     ` Amir Vadai
  2014-02-18 20:56     ` David Miller
  1 sibling, 0 replies; 60+ messages in thread
From: Amir Vadai @ 2014-02-18 12:14 UTC (permalink / raw)
  To: Alexander Gordeev
  Cc: linux-kernel, Jeff Kirsher, Jesse Brandeburg, Bruce Allan,
	e1000-devel, netdev, linux-pci

On 18/02/14 14:01 +0200, Amir Vadai wrote:
> On 18/02/14 11:11 +0100, Alexander Gordeev wrote:
> > As result of deprecation of MSI-X/MSI enablement functions
> > pci_enable_msix() and pci_enable_msi_block() all drivers
> > using these two interfaces need to be updated to use the
> > new pci_enable_msi_range() and pci_enable_msix_range()
> > interfaces.
> > 
> > Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> > Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> > Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > Cc: Bruce Allan <bruce.w.allan@intel.com>
> > Cc: e1000-devel@lists.sourceforge.net
> > Cc: netdev@vger.kernel.org
> > Cc: linux-pci@vger.kernel.org
> > ---
> 
> Acked-By: Amir Vadai <amirv@mellanox.com>
Oh, I'm still working for Mellanox - just replied to the wrong mail :)

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 29/35] qlge: Get rid of an redundant assignment
  2014-02-18 10:11 ` [PATCH net-next 29/35] qlge: Get rid of an redundant assignment Alexander Gordeev
@ 2014-02-18 19:19     ` Jitendra Kalsaria
  0 siblings, 0 replies; 60+ messages in thread
From: Jitendra Kalsaria @ 2014-02-18 19:19 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel
  Cc: Shahed Shaikh, Ron Mercer, Dept-Eng Linux Driver, netdev, linux-pci


On 2/18/14 2:11 AM, "Alexander Gordeev" <agordeev@redhat.com> wrote:

>Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
>Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
>Cc: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
>Cc: Ron Mercer <ron.mercer@qlogic.com>
>Cc: linux-driver@qlogic.com
>Cc: netdev@vger.kernel.org
>Cc: linux-pci@vger.kernel.org
>---
> drivers/net/ethernet/qlogic/qlge/qlge_main.c |    1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)

Acked-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
>
>diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
>b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
>index ce2cfdd..82bace5 100644
>--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
>+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
>@@ -3346,7 +3346,6 @@ static void ql_enable_msix(struct ql_adapter *qdev)
> 			qdev->msi_x_entry = NULL;
> 			netif_warn(qdev, ifup, qdev->ndev,
> 				   "MSI-X Enable failed, trying MSI.\n");
>-			qdev->intr_count = 1;
> 			qlge_irq_type = MSI_IRQ;
> 		} else if (err == 0) {
> 			set_bit(QL_MSIX_ENABLED, &qdev->flags);
>-- 
>1.7.7.6
>

Thanks

-Jiten


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 29/35] qlge: Get rid of an redundant assignment
@ 2014-02-18 19:19     ` Jitendra Kalsaria
  0 siblings, 0 replies; 60+ messages in thread
From: Jitendra Kalsaria @ 2014-02-18 19:19 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel
  Cc: Shahed Shaikh, Ron Mercer, Dept-Eng Linux Driver, netdev, linux-pci

[-- Attachment #1: Type: text/plain, Size: 1164 bytes --]


On 2/18/14 2:11 AM, "Alexander Gordeev" <agordeev@redhat.com> wrote:

>Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
>Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
>Cc: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
>Cc: Ron Mercer <ron.mercer@qlogic.com>
>Cc: linux-driver@qlogic.com
>Cc: netdev@vger.kernel.org
>Cc: linux-pci@vger.kernel.org
>---
> drivers/net/ethernet/qlogic/qlge/qlge_main.c |    1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)

Acked-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
>
>diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
>b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
>index ce2cfdd..82bace5 100644
>--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
>+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
>@@ -3346,7 +3346,6 @@ static void ql_enable_msix(struct ql_adapter *qdev)
> 			qdev->msi_x_entry = NULL;
> 			netif_warn(qdev, ifup, qdev->ndev,
> 				   "MSI-X Enable failed, trying MSI.\n");
>-			qdev->intr_count = 1;
> 			qlge_irq_type = MSI_IRQ;
> 		} else if (err == 0) {
> 			set_bit(QL_MSIX_ENABLED, &qdev->flags);
>-- 
>1.7.7.6
>

Thanks

-Jiten


[-- Attachment #2: winmail.dat --]
[-- Type: application/ms-tnef, Size: 4756 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 30/35] qlge: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:11 ` [PATCH net-next 30/35] qlge: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-18 19:20     ` Jitendra Kalsaria
  0 siblings, 0 replies; 60+ messages in thread
From: Jitendra Kalsaria @ 2014-02-18 19:20 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel
  Cc: Shahed Shaikh, Ron Mercer, Dept-Eng Linux Driver, netdev, linux-pci


On 2/18/14 2:11 AM, "Alexander Gordeev" <agordeev@redhat.com> wrote:

>As result of deprecation of MSI-X/MSI enablement functions
>pci_enable_msix() and pci_enable_msi_block() all drivers
>using these two interfaces need to be updated to use the
>new pci_enable_msi_range() and pci_enable_msix_range()
>interfaces.
>
>Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
>Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
>Cc: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
>Cc: Ron Mercer <ron.mercer@qlogic.com>
>Cc: linux-driver@qlogic.com
>Cc: netdev@vger.kernel.org
>Cc: linux-pci@vger.kernel.org
>---
> drivers/net/ethernet/qlogic/qlge/qlge_main.c |   15 ++++-----------
> 1 files changed, 4 insertions(+), 11 deletions(-)

Acked-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 30/35] qlge: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 19:20     ` Jitendra Kalsaria
  0 siblings, 0 replies; 60+ messages in thread
From: Jitendra Kalsaria @ 2014-02-18 19:20 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel
  Cc: Shahed Shaikh, Ron Mercer, Dept-Eng Linux Driver, netdev, linux-pci

[-- Attachment #1: Type: text/plain, Size: 812 bytes --]


On 2/18/14 2:11 AM, "Alexander Gordeev" <agordeev@redhat.com> wrote:

>As result of deprecation of MSI-X/MSI enablement functions
>pci_enable_msix() and pci_enable_msi_block() all drivers
>using these two interfaces need to be updated to use the
>new pci_enable_msi_range() and pci_enable_msix_range()
>interfaces.
>
>Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
>Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
>Cc: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
>Cc: Ron Mercer <ron.mercer@qlogic.com>
>Cc: linux-driver@qlogic.com
>Cc: netdev@vger.kernel.org
>Cc: linux-pci@vger.kernel.org
>---
> drivers/net/ethernet/qlogic/qlge/qlge_main.c |   15 ++++-----------
> 1 files changed, 4 insertions(+), 11 deletions(-)

Acked-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>


[-- Attachment #2: winmail.dat --]
[-- Type: application/ms-tnef, Size: 4634 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 00/35] net: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` Alexander Gordeev
                   ` (35 preceding siblings ...)
  (?)
@ 2014-02-18 20:34 ` David Miller
  -1 siblings, 0 replies; 60+ messages in thread
From: David Miller @ 2014-02-18 20:34 UTC (permalink / raw)
  To: agordeev
  Cc: linux-kernel, e1000-devel, linux-driver, linux-net-drivers,
	linux-pci, linux-rdma, netdev, pv-drivers, wil6210

From: Alexander Gordeev <agordeev@redhat.com>
Date: Tue, 18 Feb 2014 11:07:52 +0100

> As result of deprecation of MSI-X/MSI enablement functions
> pci_enable_msix() and pci_enable_msi_block() all drivers
> using these two interfaces need to be updated to use the
> new pci_enable_msi_range() and pci_enable_msix_range()
> interfaces.
> 
> Cc: e1000-devel@lists.sourceforge.net
> Cc: linux-driver@qlogic.com
> Cc: linux-net-drivers@solarflare.com
> Cc: linux-pci@vger.kernel.org
> Cc: linux-rdma@vger.kernel.org
> Cc: netdev@vger.kernel.org
> Cc: pv-drivers@vmware.com
> Cc: wil6210@qca.qualcomm.com

Series applied, thanks.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ixgbevf: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 12:01   ` Amir Vadai
  2014-02-18 12:14     ` Amir Vadai
@ 2014-02-18 20:56     ` David Miller
  1 sibling, 0 replies; 60+ messages in thread
From: David Miller @ 2014-02-18 20:56 UTC (permalink / raw)
  To: amirv
  Cc: agordeev, linux-kernel, jeffrey.t.kirsher, jesse.brandeburg,
	bruce.w.allan, e1000-devel, netdev, linux-pci

From: Amir Vadai <amirv@mellanox.com>
Date: Tue, 18 Feb 2014 14:01:38 +0200

> On 18/02/14 11:11 +0100, Alexander Gordeev wrote:
>> As result of deprecation of MSI-X/MSI enablement functions
>> pci_enable_msix() and pci_enable_msi_block() all drivers
>> using these two interfaces need to be updated to use the
>> new pci_enable_msi_range() and pci_enable_msix_range()
>> interfaces.
>> 
>> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
>> Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>> Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
>> Cc: Bruce Allan <bruce.w.allan@intel.com>
>> Cc: e1000-devel@lists.sourceforge.net
>> Cc: netdev@vger.kernel.org
>> Cc: linux-pci@vger.kernel.org
>> ---
> 
> Acked-By: Amir Vadai <amirv@mellanox.com>

Since you obviously didn't intend to ACK this, I removed this ACK when
I committed the series.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 20/35] myri10ge: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:11 ` [PATCH net-next 20/35] myri10ge: " Alexander Gordeev
@ 2014-02-19 15:14   ` Sergei Shtylyov
  0 siblings, 0 replies; 60+ messages in thread
From: Sergei Shtylyov @ 2014-02-19 15:14 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel; +Cc: Hyong-Youb Kim, netdev, linux-pci

Hello.

On 18-02-2014 14:11, Alexander Gordeev wrote:

> As result of deprecation of MSI-X/MSI enablement functions
> pci_enable_msix() and pci_enable_msi_block() all drivers
> using these two interfaces need to be updated to use the
> new pci_enable_msi_range() and pci_enable_msix_range()
> interfaces.

> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> Cc: Hyong-Youb Kim <hykim@myri.com>
> Cc: netdev@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> ---
>   drivers/net/ethernet/myricom/myri10ge/myri10ge.c |   40 +++++++++++-----------
>   1 files changed, 20 insertions(+), 20 deletions(-)

> diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
> index 68026f7..130f6b2 100644
> --- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
> +++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
> @@ -2329,16 +2329,14 @@ static int myri10ge_request_irq(struct myri10ge_priv *mgp)
>   	status = 0;
>   	if (myri10ge_msi) {
>   		if (mgp->num_slices > 1) {
> -			status =
> -			    pci_enable_msix(pdev, mgp->msix_vectors,
> -					    mgp->num_slices);
> -			if (status == 0) {
> -				mgp->msix_enabled = 1;
> -			} else {
> +			status = pci_enable_msix_range(pdev, mgp->msix_vectors,
> +					mgp->num_slices, mgp->num_slices);

    Networking coding style assumes that you align the function call 
continuation lines under the next character after (.

[...]
> @@ -3895,32 +3893,34 @@ static void myri10ge_probe_slices(struct myri10ge_priv *mgp)
[...]
> +			goto no_msix;
> +		status = pci_enable_msix_range(pdev,
> +					       mgp->msix_vectors,
> +					       mgp->num_slices,
> +					       mgp->num_slices);

    Here you get this right.

WBR, Sergei


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 01/35] bnx2: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:07 ` [PATCH net-next 01/35] bnx2: " Alexander Gordeev
@ 2014-02-22  0:34   ` Ben Hutchings
  2014-02-22 10:17     ` Alexander Gordeev
  0 siblings, 1 reply; 60+ messages in thread
From: Ben Hutchings @ 2014-02-22  0:34 UTC (permalink / raw)
  To: Alexander Gordeev; +Cc: linux-kernel, Michael Chan, netdev, linux-pci

[-- Attachment #1: Type: text/plain, Size: 1833 bytes --]

On Tue, 2014-02-18 at 11:07 +0100, Alexander Gordeev wrote:
> As result of deprecation of MSI-X/MSI enablement functions
> pci_enable_msix() and pci_enable_msi_block() all drivers
> using these two interfaces need to be updated to use the
> new pci_enable_msi_range() and pci_enable_msix_range()
> interfaces.
> 
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> Cc: Michael Chan <mchan@broadcom.com>
> Cc: netdev@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> ---
>  drivers/net/ethernet/broadcom/bnx2.c |   15 ++++-----------
>  1 files changed, 4 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
> index cda25ac..ca6b362 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)
>  static void
>  bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
>  {
> -	int i, total_vecs, rc;
> +	int i, total_vecs;
>  	struct msix_entry msix_ent[BNX2_MAX_MSIX_VEC];
>  	struct net_device *dev = bp->dev;
>  	const int len = sizeof(bp->irq_tbl[0].name);
> @@ -6229,16 +6229,9 @@ bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
>  #ifdef BCM_CNIC
>  	total_vecs++;
>  #endif
> -	rc = -ENOSPC;
> -	while (total_vecs >= BNX2_MIN_MSIX_VEC) {
> -		rc = pci_enable_msix(bp->pdev, msix_ent, total_vecs);
> -		if (rc <= 0)
> -			break;
> -		if (rc > 0)
> -			total_vecs = rc;
> -	}
> -
> -	if (rc != 0)
> +	total_vecs = pci_enable_msix_range(bp->pdev, msix_ent,
> +					   BNX2_MIN_MSIX_VEC, total_vecs);
> +	if (total_vecs < 0)
>  		return;

This would be better without the assignment to total_vecs.

Ben.

>  	msix_vecs = total_vecs;

-- 
Ben Hutchings
I haven't lost my mind; it's backed up on tape somewhere.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 10:11 ` [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-22  0:44   ` Ben Hutchings
  2014-02-22  0:48     ` Ben Hutchings
  0 siblings, 1 reply; 60+ messages in thread
From: Ben Hutchings @ 2014-02-22  0:44 UTC (permalink / raw)
  To: Alexander Gordeev
  Cc: linux-kernel, Himanshu Madhani, Rajesh Borundia, Shahed Shaikh,
	linux-driver, netdev, linux-pci

[-- Attachment #1: Type: text/plain, Size: 1994 bytes --]

On Tue, 2014-02-18 at 11:11 +0100, Alexander Gordeev wrote:
> As result of deprecation of MSI-X/MSI enablement functions
> pci_enable_msix() and pci_enable_msi_block() all drivers
> using these two interfaces need to be updated to use the
> new pci_enable_msi_range() and pci_enable_msix_range()
> interfaces.
> 
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> Cc: Himanshu Madhani <himanshu.madhani@qlogic.com>
> Cc: Rajesh Borundia <rajesh.borundia@qlogic.com>
> Cc: Shahed Shaikh <shahed.shaikh@qlogic.com>
> Cc: linux-driver@qlogic.com
> Cc: netdev@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> ---
>  drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c |    8 ++++++--
>  1 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> index 0c077cf..e07fd94 100644
> --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> @@ -701,13 +701,17 @@ enable_msix:
>  		for (vector = 0; vector < num_msix; vector++)
>  			adapter->msix_entries[vector].entry = vector;
>  
> -		err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
> -		if (err == 0) {
> +		err = pci_enable_msix_range(pdev,
> +					    adapter->msix_entries, 1, num_msix);
> +
> +		if (err == num_msix) {
>  			adapter->flags |= QLCNIC_MSIX_ENABLED;
>  			adapter->ahw->num_msix = num_msix;
>  			dev_info(&pdev->dev, "using msi-x interrupts\n");
>  			return 0;
>  		} else if (err > 0) {
> +			pci_disable_msix(pdev);
> +
>  			dev_info(&pdev->dev,
>  				 "Unable to allocate %d MSI-X vectors, Available vectors %d\n",
>  				 num_msix, err);

Well this log message is nonsense - we have no idea how many vectors are
available any more.

You should remove this and the retry loop that is no longer needed.

Ben.

-- 
Ben Hutchings
I haven't lost my mind; it's backed up on tape somewhere.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-22  0:44   ` Ben Hutchings
@ 2014-02-22  0:48     ` Ben Hutchings
  2014-02-22  9:24       ` Alexander Gordeev
  0 siblings, 1 reply; 60+ messages in thread
From: Ben Hutchings @ 2014-02-22  0:48 UTC (permalink / raw)
  To: Alexander Gordeev
  Cc: linux-kernel, Himanshu Madhani, Rajesh Borundia, Shahed Shaikh,
	linux-driver, netdev, linux-pci

[-- Attachment #1: Type: text/plain, Size: 1650 bytes --]

On Sat, 2014-02-22 at 00:44 +0000, Ben Hutchings wrote:
> On Tue, 2014-02-18 at 11:11 +0100, Alexander Gordeev wrote:
> > As result of deprecation of MSI-X/MSI enablement functions
> > pci_enable_msix() and pci_enable_msi_block() all drivers
> > using these two interfaces need to be updated to use the
> > new pci_enable_msi_range() and pci_enable_msix_range()
> > interfaces.
[...]
> > --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> > +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> > @@ -701,13 +701,17 @@ enable_msix:
> >  		for (vector = 0; vector < num_msix; vector++)
> >  			adapter->msix_entries[vector].entry = vector;
> >  
> > -		err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
> > -		if (err == 0) {
> > +		err = pci_enable_msix_range(pdev,
> > +					    adapter->msix_entries, 1, num_msix);
> > +
> > +		if (err == num_msix) {
> >  			adapter->flags |= QLCNIC_MSIX_ENABLED;
> >  			adapter->ahw->num_msix = num_msix;
> >  			dev_info(&pdev->dev, "using msi-x interrupts\n");
> >  			return 0;
> >  		} else if (err > 0) {
> > +			pci_disable_msix(pdev);
> > +
> >  			dev_info(&pdev->dev,
> >  				 "Unable to allocate %d MSI-X vectors, Available vectors %d\n",
> >  				 num_msix, err);
> 
> Well this log message is nonsense - we have no idea how many vectors are
> available any more.
> 
> You should remove this and the retry loop that is no longer needed.

Sorry, I'm confused and this does work.  But I wonder whether it is
really an improvement over using the old API.

Ben.

-- 
Ben Hutchings
I haven't lost my mind; it's backed up on tape somewhere.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-22  0:48     ` Ben Hutchings
@ 2014-02-22  9:24       ` Alexander Gordeev
  2014-02-22 16:18           ` Shahed Shaikh
  0 siblings, 1 reply; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-22  9:24 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: linux-kernel, Himanshu Madhani, Rajesh Borundia, Shahed Shaikh,
	linux-driver, netdev, linux-pci

On Sat, Feb 22, 2014 at 12:48:47AM +0000, Ben Hutchings wrote:
> Sorry, I'm confused and this does work.  But I wonder whether it is
> really an improvement over using the old API.

Slightly, as far as I am concerned - we just exchange tri-state oddity
to re-enable MSI-X oddity. We're not going to improve drivers that can
not work with any number of MSI-Xs from a range, like this one.

> Ben.

-- 
Regards,
Alexander Gordeev
agordeev@redhat.com

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH net-next 01/35] bnx2: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-22  0:34   ` Ben Hutchings
@ 2014-02-22 10:17     ` Alexander Gordeev
  0 siblings, 0 replies; 60+ messages in thread
From: Alexander Gordeev @ 2014-02-22 10:17 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: linux-kernel, Michael Chan, netdev, linux-pci

On Sat, Feb 22, 2014 at 12:34:34AM +0000, Ben Hutchings wrote:
> > diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
> > index cda25ac..ca6b362 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)
> >  static void
> >  bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
> >  {
> > -	int i, total_vecs, rc;
> > +	int i, total_vecs;
> >  	struct msix_entry msix_ent[BNX2_MAX_MSIX_VEC];
> >  	struct net_device *dev = bp->dev;
> >  	const int len = sizeof(bp->irq_tbl[0].name);
> > @@ -6229,16 +6229,9 @@ bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
> >  #ifdef BCM_CNIC
> >  	total_vecs++;
> >  #endif
> > -	rc = -ENOSPC;
> > -	while (total_vecs >= BNX2_MIN_MSIX_VEC) {
> > -		rc = pci_enable_msix(bp->pdev, msix_ent, total_vecs);
> > -		if (rc <= 0)
> > -			break;
> > -		if (rc > 0)
> > -			total_vecs = rc;
> > -	}
> > -
> > -	if (rc != 0)
> > +	total_vecs = pci_enable_msix_range(bp->pdev, msix_ent,
> > +					   BNX2_MIN_MSIX_VEC, total_vecs);
> > +	if (total_vecs < 0)
> >  		return;
> 
> This would be better without the assignment to total_vecs.

total_vecs is used as a loop limit few lines below.

> Ben.
> 
> >  	msix_vecs = total_vecs;
> 
> -- 
> Ben Hutchings
> I haven't lost my mind; it's backed up on tape somewhere.



-- 
Regards,
Alexander Gordeev
agordeev@redhat.com

^ permalink raw reply	[flat|nested] 60+ messages in thread

* RE: [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-22  9:24       ` Alexander Gordeev
@ 2014-02-22 16:18           ` Shahed Shaikh
  0 siblings, 0 replies; 60+ messages in thread
From: Shahed Shaikh @ 2014-02-22 16:18 UTC (permalink / raw)
  To: Alexander Gordeev, Ben Hutchings
  Cc: linux-kernel, Himanshu Madhani, Rajesh Borundia,
	Dept-Eng Linux Driver, netdev, linux-pci

> -----Original Message-----
> From: Alexander Gordeev [mailto:agordeev@redhat.com]
> Sent: Saturday, February 22, 2014 2:54 PM
> To: Ben Hutchings
> Cc: linux-kernel; Himanshu Madhani; Rajesh Borundia; Shahed Shaikh; Dept-
> Eng Linux Driver; netdev; linux-pci
> Subject: Re: [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range()
> instead of pci_enable_msix()
> 
> On Sat, Feb 22, 2014 at 12:48:47AM +0000, Ben Hutchings wrote:
> > Sorry, I'm confused and this does work.  But I wonder whether it is
> > really an improvement over using the old API.
> 
> Slightly, as far as I am concerned - we just exchange tri-state oddity to re-
> enable MSI-X oddity. We're not going to improve drivers that can not work
> with any number of MSI-Xs from a range, like this one.

I will send a patch which will make use of available MSI-X number and remove the retry logic.

Thanks,
Shahed

^ permalink raw reply	[flat|nested] 60+ messages in thread

* RE: [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-22 16:18           ` Shahed Shaikh
  0 siblings, 0 replies; 60+ messages in thread
From: Shahed Shaikh @ 2014-02-22 16:18 UTC (permalink / raw)
  To: Alexander Gordeev, Ben Hutchings
  Cc: linux-kernel, Himanshu Madhani, Rajesh Borundia,
	Dept-Eng Linux Driver, netdev, linux-pci

[-- Attachment #1: Type: text/plain, Size: 905 bytes --]

> -----Original Message-----
> From: Alexander Gordeev [mailto:agordeev@redhat.com]
> Sent: Saturday, February 22, 2014 2:54 PM
> To: Ben Hutchings
> Cc: linux-kernel; Himanshu Madhani; Rajesh Borundia; Shahed Shaikh; Dept-
> Eng Linux Driver; netdev; linux-pci
> Subject: Re: [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range()
> instead of pci_enable_msix()
> 
> On Sat, Feb 22, 2014 at 12:48:47AM +0000, Ben Hutchings wrote:
> > Sorry, I'm confused and this does work.  But I wonder whether it is
> > really an improvement over using the old API.
> 
> Slightly, as far as I am concerned - we just exchange tri-state oddity to re-
> enable MSI-X oddity. We're not going to improve drivers that can not work
> with any number of MSI-Xs from a range, like this one.

I will send a patch which will make use of available MSI-X number and remove the retry logic.

Thanks,
Shahed

[-- Attachment #2: winmail.dat --]
[-- Type: application/ms-tnef, Size: 4656 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

end of thread, other threads:[~2014-02-22 16:18 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-18 10:07 [PATCH net-next 00/35] net: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-18 10:07 ` Alexander Gordeev
2014-02-18 10:07 ` [PATCH net-next 01/35] bnx2: " Alexander Gordeev
2014-02-22  0:34   ` Ben Hutchings
2014-02-22 10:17     ` Alexander Gordeev
2014-02-18 10:07 ` [PATCH net-next 02/35] bnx2x: " Alexander Gordeev
2014-02-18 10:07 ` [PATCH net-next 03/35] tg3: " Alexander Gordeev
2014-02-18 10:07 ` [PATCH net-next 04/35] bna: " Alexander Gordeev
2014-02-18 10:07 ` [PATCH net-next 05/35] cxgb3: Remove superfluous call to pci_disable_msix() Alexander Gordeev
2014-02-18 10:07 ` [PATCH net-next 06/35] cxgb3: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-18 10:07 ` [PATCH net-next 07/35] cxgb4: " Alexander Gordeev
2014-02-18 10:08 ` [PATCH net-next 08/35] cxgb4vf: Remove superfluous call to pci_disable_msix() Alexander Gordeev
2014-02-18 10:08 ` [PATCH net-next 09/35] cxgb4vf: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-18 10:08 ` [PATCH net-next 10/35] enic: " Alexander Gordeev
2014-02-18 10:18   ` Govindarajulu Varadarajan
2014-02-18 10:11 ` [PATCH net-next 11/35] benet: " Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 12/35] e1000e: " Alexander Gordeev
2014-02-18 10:11   ` Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 13/35] i40e: " Alexander Gordeev
2014-02-18 10:11   ` Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 14/35] igb: " Alexander Gordeev
2014-02-18 10:11   ` Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 15/35] igbvf: " Alexander Gordeev
2014-02-18 10:11   ` Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 16/35] ixgbe: " Alexander Gordeev
2014-02-18 10:11   ` Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 17/35] ixgbevf: " Alexander Gordeev
2014-02-18 10:11   ` Alexander Gordeev
2014-02-18 12:01   ` Amir Vadai
2014-02-18 12:14     ` Amir Vadai
2014-02-18 20:56     ` David Miller
2014-02-18 10:11 ` [PATCH net-next 18/35] mlx4: " Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 19/35] mlx5: " Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 20/35] myri10ge: " Alexander Gordeev
2014-02-19 15:14   ` Sergei Shtylyov
2014-02-18 10:11 ` [PATCH net-next 21/35] s2io: " Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 22/35] vxge: " Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 23/35] forcedeth: Fix invalid errno reporting in nv_request_irq() Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 24/35] forcedeth: Cleanup MSI-X to MSI to INTx fallback code Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 25/35] forcedeth: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 26/35] netxen: " Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 27/35] qlcnic: Cleanup qlcnic_enable_msix() return values Alexander Gordeev
2014-02-18 10:11 ` [PATCH net-next 28/35] qlcnic: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-22  0:44   ` Ben Hutchings
2014-02-22  0:48     ` Ben Hutchings
2014-02-22  9:24       ` Alexander Gordeev
2014-02-22 16:18         ` Shahed Shaikh
2014-02-22 16:18           ` Shahed Shaikh
2014-02-18 10:11 ` [PATCH net-next 29/35] qlge: Get rid of an redundant assignment Alexander Gordeev
2014-02-18 19:19   ` Jitendra Kalsaria
2014-02-18 19:19     ` Jitendra Kalsaria
2014-02-18 10:11 ` [PATCH net-next 30/35] qlge: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-18 19:20   ` Jitendra Kalsaria
2014-02-18 19:20     ` Jitendra Kalsaria
2014-02-18 10:12 ` [PATCH net-next 31/35] sfc: " Alexander Gordeev
2014-02-18 10:12 ` [PATCH net-next 32/35] niu: " Alexander Gordeev
2014-02-18 10:12 ` [PATCH net-next 33/35] vmxnet3: Fix MSI-X/MSI enablement code Alexander Gordeev
2014-02-18 10:12 ` [PATCH net-next 34/35] vmxnet3: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-18 10:12 ` [PATCH net-next 35/35] wil6210: Use pci_enable_msi_range() instead of pci_enable_msi_block() Alexander Gordeev
2014-02-18 20:34 ` [PATCH net-next 00/35] net: Use pci_enable_msix_range() instead of pci_enable_msix() David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.