Skip to contentSkip to conversation

Use pci_enable_msix_range() instead of pci_enable_msix()

PATCH In review Alexander Gordeev 4 participants 10 messages Apr 25, 2014 – Apr 28, 2014

Subsystems (5)
lore
Share & tools
lore
#0 lore raw

cover Use pci_enable_msix_range() instead of pci_enable_msix()

Hello,

The series completes converison of network drivers to the new MSI initialization API.

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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

Thanks!

Alexander Gordeev (2):
i40evf: Use pci_enable_msix_range() instead of pci_enable_msix()
qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

 drivers/net/ethernet/intel/i40evf/i40evf_main.c  |   31 ++++++++--------------
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c |    4 +-
 2 files changed, 13 insertions(+), 22 deletions(-)
Signature · 1 line
1.7.7.6
#1 lore raw

PATCH 1/2 i40evf: Use pci_enable_msix_range() instead of pci_enable_msix()

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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c |   31 ++++++++--------------
 1 files changed, 11 insertions(+), 20 deletions(-)
drivers/net/ethernet/intel/i40evf/i40evf_main.c +11 -20
index da6054c..78f1859 100644
@@ -1027,30 +1027,21 @@ i40evf_acquire_msix_vectors(struct i40evf_adapter *adapter, int vectors)
 	 * 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;
-	}
-
-	if (vectors < vector_threshold) {
+	err = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
+				    vector_threshold, vectors);
+	if (err < 0) {
 		dev_err(&adapter->pdev->dev, "Unable to allocate MSI-X interrupts.\n");
 		kfree(adapter->msix_entries);
 		adapter->msix_entries = NULL;
-		err = -EIO;
-	} else {
-		/* Adjust for only the vectors we'll use, which is minimum
-		 * of max_msix_q_vectors + NONQ_VECS, or the number of
-		 * vectors we were allocated.
-		 */
-		adapter->num_msix_vectors = vectors;
+		return err;
 	}
-	return err;
+
+	/* Adjust for only the vectors we'll use, which is minimum
+	 * of max_msix_q_vectors + NONQ_VECS, or the number of
+	 * vectors we were allocated.
+	 */
+	adapter->num_msix_vectors = err;
+	return 0;
 }
 
 /**
Signature · 1 line
1.7.7.6
maintainer
#2 lore raw

Re: [PATCH net-next 1/2] i40evf: Use pci_enable_msix_range() instead of pci_enable_msix()

From: Alexander Gordeev <[email protected]>
Date: Fri, 25 Apr 2014 10:06:24 +0200

Quoted 8 lines

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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

Jeff, I assume you will take this in via your tree.

Thanks.

#3 lore raw

Re: [E1000-devel] [PATCH net-next 1/2] i40evf: Use pci_enable_msix_range() instead of pci_enable_msix()

Quoted 10 lines · David Miller

From: Alexander Gordeev <[email protected]>
Date: Fri, 25 Apr 2014 10:06:24 +0200

Quoted 7 lines

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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

Quoted 4 lines
Quoted 1 line

Jeff, I assume you will take this in via your tree.

Yes, I have picked this up.

Signature · 2 lines
Cheers,
Jeff
#4 lore raw

PATCH 2/2 qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

In reply to Alexander Gordeev

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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

---
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +2 -2
index dbf7539..26f022b 100644
@@ -690,8 +690,8 @@ int qlcnic_setup_tss_rss_intr(struct qlcnic_adapter *adapter)
 		adapter->msix_entries[vector].entry = vector;
 
 restore:
-	err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
-	if (err > 0) {
+	err = pci_enable_msix_exact(pdev, adapter->msix_entries, num_msix);
+	if (err == -ENOSPC) {
 		if (!adapter->drv_tss_rings && !adapter->drv_rss_rings)
 			return -ENOSPC;
 
Signature · 1 line
1.7.7.6
#5 lore raw

RE: [PATCH net-next 2/2] qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

Quoted 41 lines

-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Friday, April 25, 2014 1:36 PM
To: linux-kernel
Cc: Alexander Gordeev; Shahed Shaikh; Dept-HSG Linux NIC Dev; netdev; linux-pci
Subject: [PATCH net-next 2/2] qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

---
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +2 -2
index dbf7539..26f022b 100644
@@ -690,8 +690,8 @@ int qlcnic_setup_tss_rss_intr(struct qlcnic_adapter
 *adapter)
 		adapter->msix_entries[vector].entry = vector;
 
 restore:
-	err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
-	if (err > 0) {
+	err = pci_enable_msix_exact(pdev, adapter->msix_entries,
 num_msix);
+	if (err == -ENOSPC) {
 		if (!adapter->drv_tss_rings && !adapter->drv_rss_rings)
Quoted 1 line

return -ENOSPC;

I think, it would be good if we return "err" instead of "-ENOSPC" .

                if (!adapter->drv_tss_rings && !adapter->drv_rss_rings)

- return -ENOSPC;
+ return err;

Thanks,
Shahed

#6 lore raw

Re: [PATCH net-next 2/2] qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

Quoted 21 lines · Shahed Shaikh
Quoted 16 lines
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +2 -2
index dbf7539..26f022b 100644
@@ -690,8 +690,8 @@ int qlcnic_setup_tss_rss_intr(struct qlcnic_adapter
 *adapter)
 		adapter->msix_entries[vector].entry = vector;
 
 restore:
-	err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
-	if (err > 0) {
+	err = pci_enable_msix_exact(pdev, adapter->msix_entries,
 num_msix);
+	if (err == -ENOSPC) {
 		if (!adapter->drv_tss_rings && !adapter->drv_rss_rings)
Quoted 1 line

return -ENOSPC;

I think, it would be good if we return "err" instead of "-ENOSPC" .

                if (!adapter->drv_tss_rings && !adapter->drv_rss_rings)

Review

Quoted 2 lines
(quoted diff) +1 -1
-                       return -ENOSPC;
+                       return err;

At this point "err" could only be -ENOSPC. I am not sure why returning "err" is better, but I'll repost if you insist.

Quoted 4 lines

Thanks,
Shahed

Signature · 3 lines
Regards,
Alexander Gordeev
[email protected]
#7 lore raw

RE: [PATCH net-next 2/2] qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

Quoted 30 lines

-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Friday, April 25, 2014 2:31 PM
To: Shahed Shaikh
Cc: linux-kernel; Dept-HSG Linux NIC Dev; netdev; linux-pci
Subject: Re: [PATCH net-next 2/2] qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

Quoted 21 lines · Shahed Shaikh
Quoted 15 lines
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +0 -0
index dbf7539..26f022b 100644
@@ -690,8 +690,8 @@ int qlcnic_setup_tss_rss_intr(struct

qlcnic_adapter
*adapter)

drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +1 -2
 		adapter->msix_entries[vector].entry = vector;
 
 restore:
-	err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
-	if (err > 0) {
+	err = pci_enable_msix_exact(pdev, adapter->msix_entries,

num_msix);

drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c int qlcnic_setup_tss_rss_intr(struct qlcnic_adapter *adapter) · line 696

Quoted 3 lines
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +1 -0
+	if (err == -ENOSPC) {
 		if (!adapter->drv_tss_rings && !adapter->drv_rss_rings)
 			return -ENOSPC;

I think, it would be good if we return "err" instead of "-ENOSPC" .

Quoted 6 lines

Review

Quoted 3 lines
                if (!adapter->drv_tss_rings && !adapter->drv_rss_rings)
(quoted diff) +1 -1
-                       return -ENOSPC;
+                       return err;

At this point "err" could only be -ENOSPC. I am not sure why returning "err" is better, but I'll repost if you insist.

Agree. But it will make code look cleaner.

Thanks,
Shahed

#8 lore raw

PATCH v2 2/2 qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

---
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +3 -3
index dbf7539..73f908a 100644
@@ -690,10 +690,10 @@ int qlcnic_setup_tss_rss_intr(struct qlcnic_adapter *adapter)
 		adapter->msix_entries[vector].entry = vector;
 
 restore:
-	err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
-	if (err > 0) {
+	err = pci_enable_msix_exact(pdev, adapter->msix_entries, num_msix);
+	if (err == -ENOSPC) {
 		if (!adapter->drv_tss_rings && !adapter->drv_rss_rings)
-			return -ENOSPC;
+			return err;
 
 		netdev_info(adapter->netdev,
 			    "Unable to allocate %d MSI-X vectors, Available vectors %d\n",
Signature · 6 lines
1.7.7.6

-- 
Regards,
Alexander Gordeev
[email protected]
Acked-by on v2 2/2
#9 lore raw

RE: [PATCH v2 net-next 2/2] qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

Quoted 14 lines

-----Original Message-----
From: Alexander Gordeev [mailto:[email protected]]
Sent: Friday, April 25, 2014 3:14 PM
To: Shahed Shaikh
Cc: linux-kernel; Dept-HSG Linux NIC Dev; netdev; linux-pci
Subject: [PATCH v2 net-next 2/2] qlcnic: Use pci_enable_msix_exact() instead of pci_enable_msix()

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() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

Quoted 6 lines

Thanks,
Shahed