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
         * 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.