mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 05:56:08 +07:00
i40e: fix RSS queues only operating on PF0
This patch fixes the issue that RSS offloading only works on PF0 by using the direct register writing of the hash keys for the VFs instead of using the admin queue command to do so. Change-ID: Ia02cda7dbaa23def342e8786097a2c03db6f580b Signed-off-by: Lihong Yang <lihong.yang@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
c271dd6c39
commit
26f77e53cf
@ -8394,13 +8394,10 @@ static int i40e_config_rss_reg(struct i40e_vsi *vsi, const u8 *seed,
|
||||
|
||||
if (vsi->type == I40E_VSI_MAIN) {
|
||||
for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++)
|
||||
i40e_write_rx_ctl(hw, I40E_PFQF_HKEY(i),
|
||||
seed_dw[i]);
|
||||
wr32(hw, I40E_PFQF_HKEY(i), seed_dw[i]);
|
||||
} else if (vsi->type == I40E_VSI_SRIOV) {
|
||||
for (i = 0; i <= I40E_VFQF_HKEY1_MAX_INDEX; i++)
|
||||
i40e_write_rx_ctl(hw,
|
||||
I40E_VFQF_HKEY1(i, vf_id),
|
||||
seed_dw[i]);
|
||||
wr32(hw, I40E_VFQF_HKEY1(i, vf_id), seed_dw[i]);
|
||||
} else {
|
||||
dev_err(&pf->pdev->dev, "Cannot set RSS seed - invalid VSI type\n");
|
||||
}
|
||||
@ -8418,9 +8415,7 @@ static int i40e_config_rss_reg(struct i40e_vsi *vsi, const u8 *seed,
|
||||
if (lut_size != I40E_VF_HLUT_ARRAY_SIZE)
|
||||
return -EINVAL;
|
||||
for (i = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++)
|
||||
i40e_write_rx_ctl(hw,
|
||||
I40E_VFQF_HLUT1(i, vf_id),
|
||||
lut_dw[i]);
|
||||
wr32(hw, I40E_VFQF_HLUT1(i, vf_id), lut_dw[i]);
|
||||
} else {
|
||||
dev_err(&pf->pdev->dev, "Cannot set RSS LUT - invalid VSI type\n");
|
||||
}
|
||||
|
@ -702,10 +702,8 @@ static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)
|
||||
dev_info(&pf->pdev->dev,
|
||||
"Could not allocate VF broadcast filter\n");
|
||||
spin_unlock_bh(&vsi->mac_filter_hash_lock);
|
||||
i40e_write_rx_ctl(&pf->hw, I40E_VFQF_HENA1(0, vf->vf_id),
|
||||
(u32)hena);
|
||||
i40e_write_rx_ctl(&pf->hw, I40E_VFQF_HENA1(1, vf->vf_id),
|
||||
(u32)(hena >> 32));
|
||||
wr32(&pf->hw, I40E_VFQF_HENA1(0, vf->vf_id), (u32)hena);
|
||||
wr32(&pf->hw, I40E_VFQF_HENA1(1, vf->vf_id), (u32)(hena >> 32));
|
||||
}
|
||||
|
||||
/* program mac filter */
|
||||
|
Loading…
Reference in New Issue
Block a user