vmxnet3: Use pci_enable_msix_range() instead of pci_enable_msix()
authorAlexander Gordeev <agordeev@redhat.com>
Tue, 18 Feb 2014 10:12:03 +0000 (11:12 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 18 Feb 2014 20:33:34 +0000 (15:33 -0500)
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
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vmxnet3/vmxnet3_drv.c

index 3a17797e08171cd8aae3ccc5fb65b0acee1abdb4..9275c8c423b14e70382b92020d5617462c03e8d2 100644 (file)
@@ -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;
 }