• Brett Creeley's avatar
    iavf: Add support VIRTCHNL_VF_OFFLOAD_VLAN_V2 during netdev config · 48ccc43e
    Brett Creeley authored
    Based on VIRTCHNL_VF_OFFLOAD_VLAN_V2, the VF can now support more VLAN
    capabilities (i.e. 802.1AD offloads and filtering). In order to
    communicate these capabilities to the netdev layer, the VF needs to
    parse its VLAN capabilities based on whether it was able to negotiation
    VIRTCHNL_VF_OFFLOAD_VLAN or VIRTCHNL_VF_OFFLOAD_VLAN_V2 or neither of
    these.
    
    In order to support this, add the following functionality:
    
    iavf_get_netdev_vlan_hw_features() - This is used to determine the VLAN
    features that the underlying hardware supports and that can be toggled
    off/on based on the negotiated capabiltiies. For example, if
    VIRTCHNL_VF_OFFLOAD_VLAN_V2 was negotiated, then any capability marked
    with VIRTCHNL_VLAN_TOGGLE can be toggled on/off by the VF. If
    VIRTCHNL_VF_OFFLOAD_VLAN was negotiated, then only VLAN insertion and/or
    stripping can be toggled on/off.
    
    iavf_get_netdev_vlan_features() - This is used to determine the VLAN
    features that the underlying hardware supports and that should be
    enabled by default. For example, if VIRTHCNL_VF_OFFLOAD_VLAN_V2 was
    negotiated, then any supported capability that has its ethertype_init
    filed set should be enabled by default. If VIRTCHNL_VF_OFFLOAD_VLAN was
    negotiated, then filtering, stripping, and insertion should be enabled
    by default.
    
    Also, refactor iavf_fix_features() to take into account the new
    capabilities. To do this, query all the supported features (enabled by
    default and toggleable) and make sure the requested change is supported.
    If VIRTCHNL_VF_OFFLOAD_VLAN_V2 is successfully negotiated, there is no
    need to check VIRTCHNL_VLAN_TOGGLE here because the driver already told
    the netdev layer which features can be toggled via netdev->hw_features
    during iavf_process_config(), so only those features will be requested
    to change.
    Signed-off-by: default avatarBrett Creeley <brett.creeley@intel.com>
    Tested-by: default avatarKonrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    48ccc43e
iavf_main.c 123 KB