• Paul Blakey's avatar
    net/mlx5e: Support inner header rewrite with goto action · 0a7fcb78
    Paul Blakey authored
    The hardware supports header rewrite of outer headers only.
    To perform header rewrite on inner headers, we must first
    decapsulate the packet.
    
    Currently, the hardware decap action is explicitly set by the tc
    tunnel_key unset action. However, with goto action the user won't
    use the tunnel_key unset action. In addition, header rewrites actions
    will not apply to the inner header as done by the software model.
    
    To support this, we will map each tunnel matches seen on a tc rule to
    a unique tunnel id, implicity add a decap action on tc chain 0 flows,
    and mark the packets with this unique tunnel id. Tunnel matches on
    the decapsulated tunnel on later chains will match on this unique id
    instead of the actual packet.
    
    We will also use this mapping to restore the tunnel info metadata
    on miss.
    Signed-off-by: default avatarPaul Blakey <paulb@mellanox.com>
    Reviewed-by: default avatarRoi Dayan <roid@mellanox.com>
    Reviewed-by: default avatarOz Shlomo <ozsh@mellanox.com>
    Reviewed-by: default avatarMark Bloch <markb@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    0a7fcb78
en_tc.c 128 KB