diff options
-rw-r--r-- | drivers/net/ethernet/neterion/vxge/vxge-main.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c index e46e8698e630..c83cedd26dec 100644 --- a/drivers/net/ethernet/neterion/vxge/vxge-main.c +++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c | |||
@@ -2349,12 +2349,18 @@ start: | |||
2349 | vdev->vxge_entries[j].entry = VXGE_ALARM_MSIX_ID; | 2349 | vdev->vxge_entries[j].entry = VXGE_ALARM_MSIX_ID; |
2350 | vdev->vxge_entries[j].in_use = 0; | 2350 | vdev->vxge_entries[j].in_use = 0; |
2351 | 2351 | ||
2352 | ret = pci_enable_msix(vdev->pdev, vdev->entries, vdev->intr_cnt); | 2352 | ret = pci_enable_msix_range(vdev->pdev, |
2353 | if (ret > 0) { | 2353 | vdev->entries, 3, vdev->intr_cnt); |
2354 | if (ret < 0) { | ||
2355 | ret = -ENODEV; | ||
2356 | goto enable_msix_failed; | ||
2357 | } else if (ret < vdev->intr_cnt) { | ||
2358 | pci_disable_msix(vdev->pdev); | ||
2359 | |||
2354 | vxge_debug_init(VXGE_ERR, | 2360 | vxge_debug_init(VXGE_ERR, |
2355 | "%s: MSI-X enable failed for %d vectors, ret: %d", | 2361 | "%s: MSI-X enable failed for %d vectors, ret: %d", |
2356 | VXGE_DRIVER_NAME, vdev->intr_cnt, ret); | 2362 | VXGE_DRIVER_NAME, vdev->intr_cnt, ret); |
2357 | if ((max_config_vpath != VXGE_USE_DEFAULT) || (ret < 3)) { | 2363 | if (max_config_vpath != VXGE_USE_DEFAULT) { |
2358 | ret = -ENODEV; | 2364 | ret = -ENODEV; |
2359 | goto enable_msix_failed; | 2365 | goto enable_msix_failed; |
2360 | } | 2366 | } |
@@ -2368,9 +2374,6 @@ start: | |||
2368 | vxge_close_vpaths(vdev, temp); | 2374 | vxge_close_vpaths(vdev, temp); |
2369 | vdev->no_of_vpath = temp; | 2375 | vdev->no_of_vpath = temp; |
2370 | goto start; | 2376 | goto start; |
2371 | } else if (ret < 0) { | ||
2372 | ret = -ENODEV; | ||
2373 | goto enable_msix_failed; | ||
2374 | } | 2377 | } |
2375 | return 0; | 2378 | return 0; |
2376 | 2379 | ||