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