aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c33
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 **/
5857static int i40e_reserve_msix_vectors(struct i40e_pf *pf, int vectors) 5857static 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