mirror of https://gitee.com/openkylin/linux.git
i40e: Fix RSS size at init since default num queue calculation has changed
With changes to default number of queue pairs that the interface comes up with from 1 per online CPU to 1 per lan_msix, we need to make sure we recalculate rss_size. We will now recalculate rss_size based on number of queues enabled in the VSI. Without this fix if the max_lan_msix < num_online_cpu we will be coming up with fewer queues but will be populating rss_size based on num_online_cpus. This will result in packets getting silently dropped because RSS LUT has queues that are not enabled. Change-ID: Ifac8796ce1be1758bb0c34f38dbf4a3a76621e76 Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
5db4cb59cd
commit
66ddcffb1a
|
@ -472,6 +472,7 @@ struct i40e_vsi {
|
|||
u16 tx_itr_setting;
|
||||
|
||||
u16 rss_table_size;
|
||||
u16 rss_size;
|
||||
|
||||
u16 max_frame;
|
||||
u16 rx_hdr_len;
|
||||
|
|
|
@ -7207,6 +7207,7 @@ static int i40e_setup_misc_vector(struct i40e_pf *pf)
|
|||
static int i40e_config_rss(struct i40e_pf *pf)
|
||||
{
|
||||
u32 rss_key[I40E_PFQF_HKEY_MAX_INDEX + 1];
|
||||
struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi];
|
||||
struct i40e_hw *hw = &pf->hw;
|
||||
u32 lut = 0;
|
||||
int i, j;
|
||||
|
@ -7224,6 +7225,8 @@ static int i40e_config_rss(struct i40e_pf *pf)
|
|||
wr32(hw, I40E_PFQF_HENA(0), (u32)hena);
|
||||
wr32(hw, I40E_PFQF_HENA(1), (u32)(hena >> 32));
|
||||
|
||||
vsi->rss_size = min_t(int, pf->rss_size, vsi->num_queue_pairs);
|
||||
|
||||
/* Check capability and Set table size and register per hw expectation*/
|
||||
reg_val = rd32(hw, I40E_PFQF_CTL_0);
|
||||
if (hw->func_caps.rss_table_size == 512) {
|
||||
|
@ -7245,7 +7248,7 @@ static int i40e_config_rss(struct i40e_pf *pf)
|
|||
* If LAN VSI is the only consumer for RSS then this requirement
|
||||
* is not necessary.
|
||||
*/
|
||||
if (j == pf->rss_size)
|
||||
if (j == vsi->rss_size)
|
||||
j = 0;
|
||||
/* lut = 4-byte sliding window of 4 lut entries */
|
||||
lut = (lut << 8) | (j &
|
||||
|
|
Loading…
Reference in New Issue