|
@@ -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),
|