forked from luck/tmp_suning_uos_patched
i40e: check if vectors are already depleted when doing VMDq allocation
During MSI-X vector allocation for VMDq, a check for "no vectors left" was missing, add it. This prevents more vectors to be allocated than available. Signed-off-by: Stefan Assmann <sassmann@kpanic.de> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
b9118b7221
commit
9ca57e97a7
|
@ -7674,18 +7674,23 @@ static int i40e_init_msix(struct i40e_pf *pf)
|
|||
int vmdq_vecs_wanted = pf->num_vmdq_vsis * pf->num_vmdq_qps;
|
||||
int vmdq_vecs = min_t(int, vectors_left, vmdq_vecs_wanted);
|
||||
|
||||
/* if we're short on vectors for what's desired, we limit
|
||||
* the queues per vmdq. If this is still more than are
|
||||
* available, the user will need to change the number of
|
||||
* queues/vectors used by the PF later with the ethtool
|
||||
* channels command
|
||||
*/
|
||||
if (vmdq_vecs < vmdq_vecs_wanted)
|
||||
pf->num_vmdq_qps = 1;
|
||||
pf->num_vmdq_msix = pf->num_vmdq_qps;
|
||||
if (!vectors_left) {
|
||||
pf->num_vmdq_msix = 0;
|
||||
pf->num_vmdq_qps = 0;
|
||||
} else {
|
||||
/* if we're short on vectors for what's desired, we limit
|
||||
* the queues per vmdq. If this is still more than are
|
||||
* available, the user will need to change the number of
|
||||
* queues/vectors used by the PF later with the ethtool
|
||||
* channels command
|
||||
*/
|
||||
if (vmdq_vecs < vmdq_vecs_wanted)
|
||||
pf->num_vmdq_qps = 1;
|
||||
pf->num_vmdq_msix = pf->num_vmdq_qps;
|
||||
|
||||
v_budget += vmdq_vecs;
|
||||
vectors_left -= vmdq_vecs;
|
||||
v_budget += vmdq_vecs;
|
||||
vectors_left -= vmdq_vecs;
|
||||
}
|
||||
}
|
||||
|
||||
pf->msix_entries = kcalloc(v_budget, sizeof(struct msix_entry),
|
||||
|
|
Loading…
Reference in New Issue
Block a user