Commit abd97a94 authored by Stefan Assmann's avatar Stefan Assmann Committed by Jeff Kirsher

i40e: fix sideband flow director vector allocation

Currently if the MSI-X vector limit is reached the sideband flow
director gets disabled. A bit too early to make that decision, as
vectors may get re-distributed. So move the check further back.
Signed-off-by: default avatarStefan Assmann <sassmann@kpanic.de>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 4ce20abc
...@@ -7641,7 +7641,6 @@ static int i40e_init_msix(struct i40e_pf *pf) ...@@ -7641,7 +7641,6 @@ static int i40e_init_msix(struct i40e_pf *pf)
vectors_left--; vectors_left--;
} else { } else {
pf->num_fdsb_msix = 0; pf->num_fdsb_msix = 0;
pf->flags &= ~I40E_FLAG_FD_SB_ENABLED;
} }
} }
...@@ -7738,7 +7737,6 @@ static int i40e_init_msix(struct i40e_pf *pf) ...@@ -7738,7 +7737,6 @@ static int i40e_init_msix(struct i40e_pf *pf)
pf->num_fcoe_qps = 0; pf->num_fcoe_qps = 0;
pf->num_fcoe_msix = 0; pf->num_fcoe_msix = 0;
#endif #endif
pf->flags &= ~I40E_FLAG_FD_SB_ENABLED;
/* partition out the remaining vectors */ /* partition out the remaining vectors */
switch (vec) { switch (vec) {
...@@ -7770,6 +7768,10 @@ static int i40e_init_msix(struct i40e_pf *pf) ...@@ -7770,6 +7768,10 @@ static int i40e_init_msix(struct i40e_pf *pf)
pf->num_vmdq_vsis = min_t(int, (vec / 2), pf->num_vmdq_vsis = min_t(int, (vec / 2),
I40E_DEFAULT_NUM_VMDQ_VSI); I40E_DEFAULT_NUM_VMDQ_VSI);
} }
if (pf->flags & I40E_FLAG_FD_SB_ENABLED) {
pf->num_fdsb_msix = 1;
vec--;
}
pf->num_lan_msix = min_t(int, pf->num_lan_msix = min_t(int,
(vec - (pf->num_iwarp_msix + pf->num_vmdq_vsis)), (vec - (pf->num_iwarp_msix + pf->num_vmdq_vsis)),
pf->num_lan_msix); pf->num_lan_msix);
...@@ -7785,6 +7787,11 @@ static int i40e_init_msix(struct i40e_pf *pf) ...@@ -7785,6 +7787,11 @@ static int i40e_init_msix(struct i40e_pf *pf)
} }
} }
if ((pf->flags & I40E_FLAG_FD_SB_ENABLED) &&
(pf->num_fdsb_msix == 0)) {
dev_info(&pf->pdev->dev, "Sideband Flowdir disabled, not enough MSI-X vectors\n");
pf->flags &= ~I40E_FLAG_FD_SB_ENABLED;
}
if ((pf->flags & I40E_FLAG_VMDQ_ENABLED) && if ((pf->flags & I40E_FLAG_VMDQ_ENABLED) &&
(pf->num_vmdq_msix == 0)) { (pf->num_vmdq_msix == 0)) {
dev_info(&pf->pdev->dev, "VMDq disabled, not enough MSI-X vectors\n"); dev_info(&pf->pdev->dev, "VMDq disabled, not enough MSI-X vectors\n");
......
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