• Brett Creeley's avatar
    iavf: Add support for VIRTCHNL_VF_OFFLOAD_VLAN_V2 negotiation · 209f2f9c
    Brett Creeley authored
    In order to support the new VIRTCHNL_VF_OFFLOAD_VLAN_V2 capability the
    VF driver needs to rework it's initialization state machine and reset
    flow. This has to be done because successful negotiation of
    VIRTCHNL_VF_OFFLOAD_VLAN_V2 requires the VF driver to perform a second
    capability request via VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS before
    configuring the adapter and its netdev.
    
    Add the VIRTCHNL_VF_OFFLOAD_VLAN_V2 bit when sending the
    VIRTHCNL_OP_GET_VF_RESOURECES message. The underlying PF will either
    support VIRTCHNL_VF_OFFLOAD_VLAN or VIRTCHNL_VF_OFFLOAD_VLAN_V2 or
    neither. Both of these offloads should never be supported together.
    
    Based on this, add 2 new states to the initialization state machine:
    
    __IAVF_INIT_GET_OFFLOAD_VLAN_V2_CAPS
    __IAVF_INIT_CONFIG_ADAPTER
    
    The __IAVF_INIT_GET_OFFLOAD_VLAN_V2_CAPS state is used to request/store
    the new VLAN capabilities if and only if VIRTCHNL_VLAN_OFFLOAD_VLAN_V2
    was successfully negotiated in the __IAVF_INIT_GET_RESOURCES state.
    
    The __IAVF_INIT_CONFIG_ADAPTER state is used to configure the
    adapter/netdev after the resource requests have finished. The VF will
    move into this state regardless of whether it successfully negotiated
    VIRTCHNL_VF_OFFLOAD_VLAN or VIRTCHNL_VF_OFFLOAD_VLAN_V2.
    
    Also, add a the new flag IAVF_FLAG_AQ_GET_OFFLOAD_VLAN_V2_CAPS and set
    it during VF reset. If VIRTCHNL_VF_OFFLOAD_VLAN_V2 was successfully
    negotiated then the VF will request its VLAN capabilities via
    VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS during the reset. This is needed
    because the PF may change/modify the VF's configuration during VF reset
    (i.e. modifying the VF's port VLAN configuration).
    
    This also, required the VF to call netdev_update_features() since its
    VLAN features may change during VF reset. Make sure to call this under
    rtnl_lock().
    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>
    209f2f9c
iavf_virtchnl.c 55.8 KB