|
@@ -7185,7 +7185,7 @@ static int i40e_set_num_rings_in_vsi(struct i40e_vsi *vsi)
|
|
|
vsi->alloc_queue_pairs = 1;
|
|
|
vsi->num_desc = ALIGN(I40E_FDIR_RING_COUNT,
|
|
|
I40E_REQ_DESCRIPTOR_MULTIPLE);
|
|
|
- vsi->num_q_vectors = 1;
|
|
|
+ vsi->num_q_vectors = pf->num_fdsb_msix;
|
|
|
break;
|
|
|
|
|
|
case I40E_VSI_VMDQ2:
|
|
@@ -7569,9 +7569,11 @@ static int i40e_init_msix(struct i40e_pf *pf)
|
|
|
/* reserve one vector for sideband flow director */
|
|
|
if (pf->flags & I40E_FLAG_FD_SB_ENABLED) {
|
|
|
if (vectors_left) {
|
|
|
+ pf->num_fdsb_msix = 1;
|
|
|
v_budget++;
|
|
|
vectors_left--;
|
|
|
} else {
|
|
|
+ pf->num_fdsb_msix = 0;
|
|
|
pf->flags &= ~I40E_FLAG_FD_SB_ENABLED;
|
|
|
}
|
|
|
}
|
|
@@ -8590,7 +8592,9 @@ bool i40e_set_ntuple(struct i40e_pf *pf, netdev_features_t features)
|
|
|
/* Enable filters and mark for reset */
|
|
|
if (!(pf->flags & I40E_FLAG_FD_SB_ENABLED))
|
|
|
need_reset = true;
|
|
|
- pf->flags |= I40E_FLAG_FD_SB_ENABLED;
|
|
|
+ /* enable FD_SB only if there is MSI-X vector */
|
|
|
+ if (pf->num_fdsb_msix > 0)
|
|
|
+ pf->flags |= I40E_FLAG_FD_SB_ENABLED;
|
|
|
} else {
|
|
|
/* turn off filters, mark for reset and clear SW filter list */
|
|
|
if (pf->flags & I40E_FLAG_FD_SB_ENABLED) {
|