ice: Account for port VLAN in VF max packet size calculation
authorBrett Creeley <brett.creeley@intel.com>
Thu, 17 Sep 2020 20:13:38 +0000 (13:13 -0700)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 22 Feb 2021 19:19:15 +0000 (11:19 -0800)
commita6aa7c8f998f4afddd73410aa043dad38162ce9e
tree056ea991eb27ee8c6cf829d5b39536c2763961f0
parent37b52be260024069f7f5bdcf304b5d72f77b022a
ice: Account for port VLAN in VF max packet size calculation

Currently if an AVF driver doesn't account for the possibility of a
port VLAN when determining its max packet size then packets at MTU will
be dropped. It is not the VF driver's responsibility to account for a
port VLAN so fix this. To fix this, do the following:

1. Add a function that determines the max packet size a VF is allowed by
   using the port's max packet size and whether the VF is in a port
   VLAN. If a port VLAN is configured then a VF's max packet size will
   always be the port's max packet size minus VLAN_HLEN. Otherwise it
   will be the port's max packet size.

2. Use this function to verify the max packet size from the VF.

3. If there is a port VLAN configured then add 4 bytes (VLAN_HLEN) to
   the VF's max packet size configuration.

Also, the VIRTCHNL_OP_GET_VF_RESOURCES message provides the capability
to communicate a VF's max packet size. Use the new function for this
purpose.

Fixes: 1071a8358a28 ("ice: Implement virtchnl commands for AVF support")
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c