Commit 283aeafe authored by Jacob Keller's avatar Jacob Keller Committed by Jeff Kirsher

i40evf: allocate queues before we setup the interrupts and q_vectors

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: default avatarJacob Keller <jacob.e.keller@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 707636c6
...@@ -1508,6 +1508,13 @@ int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter) ...@@ -1508,6 +1508,13 @@ int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter)
{ {
int err; 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(); rtnl_lock();
err = i40evf_set_interrupt_capability(adapter); err = i40evf_set_interrupt_capability(adapter);
rtnl_unlock(); rtnl_unlock();
...@@ -1524,23 +1531,16 @@ int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter) ...@@ -1524,23 +1531,16 @@ int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter)
goto err_alloc_q_vectors; 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", dev_info(&adapter->pdev->dev, "Multiqueue %s: Queue pair count = %u",
(adapter->num_active_queues > 1) ? "Enabled" : "Disabled", (adapter->num_active_queues > 1) ? "Enabled" : "Disabled",
adapter->num_active_queues); adapter->num_active_queues);
return 0; return 0;
err_alloc_queues:
i40evf_free_q_vectors(adapter);
err_alloc_q_vectors: err_alloc_q_vectors:
i40evf_reset_interrupt_capability(adapter); i40evf_reset_interrupt_capability(adapter);
err_set_interrupt: err_set_interrupt:
i40evf_free_queues(adapter);
err_alloc_queues:
return err; return err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment