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);