]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i40evf: allocate queues before we setup the interrupts and q_vectors
authorJacob Keller <jacob.e.keller@intel.com>
Wed, 19 Apr 2017 13:25:59 +0000 (09:25 -0400)
committerJack Vogel <jack.vogel@oracle.com>
Tue, 10 Oct 2017 21:15:23 +0000 (14:15 -0700)
This matches the ordering of how we free stuff during reset and remove.
It also makes logical sense because we set the interrupts based on the
number of queues. Currently this doesn't really matter in practice.
However a future patch moves the assignment of num_active_queues into
i40evf_alloc_queues, which is required by
i40evf_set_interrupt_capability.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Orabug: 26785018
(cherry picked from commit 283aeafe6bf06af48068478eaf332f7a227e9af4)
Signed-off-by: Jack Vogel <jack.vogel@oracle.com>
Reviewed-by: Kyle Fortin <kyle.fortin@oracle.com>
drivers/net/ethernet/intel/i40evf/i40evf_main.c

index b10f7daafe653a035fef9b28903ca54f1e036ae6..522e4f48183f230c967fecab88f484e5c12985a8 100644 (file)
@@ -1498,6 +1498,13 @@ int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter)
 {
        int err;
 
+       err = i40evf_alloc_queues(adapter);
+       if (err) {
+               dev_err(&adapter->pdev->dev,
+                       "Unable to allocate memory for queues\n");
+               goto err_alloc_queues;
+       }
+
        rtnl_lock();
        err = i40evf_set_interrupt_capability(adapter);
        rtnl_unlock();
@@ -1514,23 +1521,16 @@ int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter)
                goto err_alloc_q_vectors;
        }
 
-       err = i40evf_alloc_queues(adapter);
-       if (err) {
-               dev_err(&adapter->pdev->dev,
-                       "Unable to allocate memory for queues\n");
-               goto err_alloc_queues;
-       }
-
        dev_info(&adapter->pdev->dev, "Multiqueue %s: Queue pair count = %u",
                 (adapter->num_active_queues > 1) ? "Enabled" : "Disabled",
                 adapter->num_active_queues);
 
        return 0;
-err_alloc_queues:
-       i40evf_free_q_vectors(adapter);
 err_alloc_q_vectors:
        i40evf_reset_interrupt_capability(adapter);
 err_set_interrupt:
+       i40evf_free_queues(adapter);
+err_alloc_queues:
        return err;
 }