linux/drivers/net/ethernet/intel/iavf
Brett Creeley ccd219d2ea iavf: Add support for VIRTCHNL_VF_OFFLOAD_VLAN_V2 hotpath
The new VIRTCHNL_VF_OFFLOAD_VLAN_V2 capability added support that allows
the PF to set the location of the Tx and Rx VLAN tag for insertion and
stripping offloads. In order to support this functionality a few changes
are needed.

1. Add a new method to cache the VLAN tag location based on negotiated
   capabilities for the Tx and Rx ring flags. This needs to be called in
   the initialization and reset paths.

2. Refactor the transmit hotpath to account for the new Tx ring flags.
   When IAVF_TXR_FLAGS_VLAN_LOC_L2TAG2 is set, then the driver needs to
   insert the VLAN tag in the L2TAG2 field of the transmit descriptor.
   When the IAVF_TXRX_FLAGS_VLAN_LOC_L2TAG1 is set, then the driver needs
   to use the l2tag1 field of the data descriptor (same behavior as
   before).

3. Refactor the iavf_tx_prepare_vlan_flags() function to simplify
   transmit hardware VLAN offload functionality by only depending on the
   skb_vlan_tag_present() function. This can be done because the OS
   won't request transmit offload for a VLAN unless the driver told the
   OS it's supported and enabled.

4. Refactor the receive hotpath to account for the new Rx ring flags and
   VLAN ethertypes. This requires checking the Rx ring flags and
   descriptor status bits to determine the location of the VLAN tag.
   Also, since only a single ethertype can be supported at a time, check
   the enabled netdev features before specifying a VLAN ethertype in
   __vlan_hwaccel_put_tag().

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2021-12-17 12:37:19 -08:00
..
iavf.h iavf: Add support for VIRTCHNL_VF_OFFLOAD_VLAN_V2 hotpath 2021-12-17 12:37:19 -08:00
iavf_adminq.c
iavf_adminq.h
iavf_adminq_cmd.h
iavf_adv_rss.c iavf: Support for modifying SCTP RSS flow hashing 2021-04-22 09:26:23 -07:00
iavf_adv_rss.h iavf: Support for modifying SCTP RSS flow hashing 2021-04-22 09:26:23 -07:00
iavf_alloc.h
iavf_client.c
iavf_client.h
iavf_common.c iavf: clean up packet type lookup table 2021-06-18 09:04:44 -07:00
iavf_devids.h
iavf_ethtool.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-12-09 13:23:02 -08:00
iavf_fdir.c iavf: redefine the magic number for FDIR GTP-U header fields 2021-04-23 09:34:19 -07:00
iavf_fdir.h iavf: change the flex-byte support number to macro definition 2021-04-23 09:03:56 -07:00
iavf_main.c iavf: Add support for VIRTCHNL_VF_OFFLOAD_VLAN_V2 hotpath 2021-12-17 12:37:19 -08:00
iavf_osdep.h
iavf_prototype.h
iavf_register.h
iavf_status.h
iavf_trace.h
iavf_txrx.c iavf: Add support for VIRTCHNL_VF_OFFLOAD_VLAN_V2 hotpath 2021-12-17 12:37:19 -08:00
iavf_txrx.h iavf: Add support for VIRTCHNL_VF_OFFLOAD_VLAN_V2 hotpath 2021-12-17 12:37:19 -08:00
iavf_type.h iavf: clean up packet type lookup table 2021-06-18 09:04:44 -07:00
iavf_virtchnl.c iavf: Add support for VIRTCHNL_VF_OFFLOAD_VLAN_V2 hotpath 2021-12-17 12:37:19 -08:00
Makefile iavf: Support for modifying TCP RSS flow hashing 2021-04-22 09:26:23 -07:00