diff options
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 628e917f5338..3116861198f0 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
@@ -5856,37 +5856,16 @@ err_out: | |||
5856 | **/ | 5856 | **/ |
5857 | static int i40e_reserve_msix_vectors(struct i40e_pf *pf, int vectors) | 5857 | static int i40e_reserve_msix_vectors(struct i40e_pf *pf, int vectors) |
5858 | { | 5858 | { |
5859 | int err = 0; | 5859 | vectors = pci_enable_msix_range(pf->pdev, pf->msix_entries, |
5860 | 5860 | I40E_MIN_MSIX, vectors); | |
5861 | pf->num_msix_entries = 0; | 5861 | if (vectors < 0) { |
5862 | while (vectors >= I40E_MIN_MSIX) { | ||
5863 | err = pci_enable_msix(pf->pdev, pf->msix_entries, vectors); | ||
5864 | if (err == 0) { | ||
5865 | /* good to go */ | ||
5866 | pf->num_msix_entries = vectors; | ||
5867 | break; | ||
5868 | } else if (err < 0) { | ||
5869 | /* total failure */ | ||
5870 | dev_info(&pf->pdev->dev, | ||
5871 | "MSI-X vector reservation failed: %d\n", err); | ||
5872 | vectors = 0; | ||
5873 | break; | ||
5874 | } else { | ||
5875 | /* err > 0 is the hint for retry */ | ||
5876 | dev_info(&pf->pdev->dev, | ||
5877 | "MSI-X vectors wanted %d, retrying with %d\n", | ||
5878 | vectors, err); | ||
5879 | vectors = err; | ||
5880 | } | ||
5881 | } | ||
5882 | |||
5883 | if (vectors > 0 && vectors < I40E_MIN_MSIX) { | ||
5884 | dev_info(&pf->pdev->dev, | 5862 | dev_info(&pf->pdev->dev, |
5885 | "Couldn't get enough vectors, only %d available\n", | 5863 | "MSI-X vector reservation failed: %d\n", vectors); |
5886 | vectors); | ||
5887 | vectors = 0; | 5864 | vectors = 0; |
5888 | } | 5865 | } |
5889 | 5866 | ||
5867 | pf->num_msix_entries = vectors; | ||
5868 | |||
5890 | return vectors; | 5869 | return vectors; |
5891 | } | 5870 | } |
5892 | 5871 | ||