mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-04 16:25:34 +00:00
i40e: Fix VF set max MTU size
Max MTU sent to VF is set to 0 during memory allocation. It cause
that max MTU on VF is changed to IAVF_MAX_RXBUFFER and does not
depend on data from HW.
Set max_mtu field in virtchnl_vf_resource struct to inform
VF in GET_VF_RESOURCES msg what size should be max frame.
Fixes: dab86afdbb
("i40e/i40evf: Change the way we limit the maximum frame size for Rx")
Signed-off-by: Michal Jaron <michalx.jaron@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
399c98c4dc
commit
372539def2
1 changed files with 20 additions and 0 deletions
|
@ -2038,6 +2038,25 @@ static void i40e_del_qch(struct i40e_vf *vf)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_vc_get_max_frame_size
|
||||
* @vf: pointer to the VF
|
||||
*
|
||||
* Max frame size is determined based on the current port's max frame size and
|
||||
* whether a port VLAN is configured on this VF. The VF is not aware whether
|
||||
* it's in a port VLAN so the PF needs to account for this in max frame size
|
||||
* checks and sending the max frame size to the VF.
|
||||
**/
|
||||
static u16 i40e_vc_get_max_frame_size(struct i40e_vf *vf)
|
||||
{
|
||||
u16 max_frame_size = vf->pf->hw.phy.link_info.max_frame_size;
|
||||
|
||||
if (vf->port_vlan_id)
|
||||
max_frame_size -= VLAN_HLEN;
|
||||
|
||||
return max_frame_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_vc_get_vf_resources_msg
|
||||
* @vf: pointer to the VF info
|
||||
|
@ -2139,6 +2158,7 @@ static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf, u8 *msg)
|
|||
vfres->max_vectors = pf->hw.func_caps.num_msix_vectors_vf;
|
||||
vfres->rss_key_size = I40E_HKEY_ARRAY_SIZE;
|
||||
vfres->rss_lut_size = I40E_VF_HLUT_ARRAY_SIZE;
|
||||
vfres->max_mtu = i40e_vc_get_max_frame_size(vf);
|
||||
|
||||
if (vf->lan_vsi_idx) {
|
||||
vfres->vsi_res[0].vsi_id = vf->lan_vsi_id;
|
||||
|
|
Loading…
Add table
Reference in a new issue