• Hadar Hen Zion's avatar
    net/mlx5e: Add basic TC tunnel set action for SRIOV offloads · a54e20b4
    Hadar Hen Zion authored
    
    
    In mlx5 HW, encapsulation is offloaded by the steering rule having
    index into an encapsulation table containing the entire set of headers
    to be added by the HW. The driver sets these headers in a buffer when we
    are offloading the action.
    
    The code maintains mlx5_encap_entry for each encap header it has
    encountered when attempted to offload TC tunnel set action.
    
    This entry maintains a linked list of all the flows sharing the same
    encap header, when the last flow is removed from the list the encap
    entry is removed.
    
    The actual encap_header is allocated by the driver in the hardware only
    if we have layer two neighbour info when the encap entry is created.
    While the flow is in the driver, the driver holds a reference on the
    neighbour.
    
    When a new flow with encap action is inserted, the code first checks if
    the required encap entry exists according to the tunnel set parameters.
    If it does the encap is shared, otherwise a new mlx5_encap_entry is
    created.
    
    TC action parsing implementation in the driver assumes that tunnel set
    action is provided in the same order set by the user, e.g before the
    mirred_redirect action.
    Signed-off-by: default avatarHadar Hen Zion <hadarh@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a54e20b4