• Petr Machata's avatar
    mlxsw: spectrum_router: Support IPv4 overlay encap · 1012b9ac
    Petr Machata authored
    This introduces some common code for tracking of offloaded IP-in-IP
    tunnels, and support for offloading IPv4 overlay encapsulating routes in
    particular. A follow-up patch will introduce IPv6 overlay as well.
    
    Offloaded tunnels are kept in a linked list of mlxsw_sp_ipip_entry
    objects hooked up in mlxsw_sp_router. A network device that represents
    the tunnel is used as a key to look up the corresponding IPIP entry.
    Note that in the future, more general keying mechanism will be needed,
    because parts of the tunnel information can be provided by the route.
    
    IPIP entries are reference counted, because several next hops may end up
    using the same tunnel, and we only want to offload it once.
    
    Encapsulation path hooks into next hop handling. Routes that forward to
    a tunnel are now considered gateway routes, thus giving them the same
    treatment that other remote routes get. An IPIP next hop type is
    introduced.
    
    Details of individual tunnel types are kept in an array of
    mlxsw_sp_ipip_ops objects. If a tunnel type doesn't match any of the
    known tunnel types, the next-hop is not considered an IPIP next hop.
    
    The list of IPIP tunnel types is currently empty, follow-up patches will
    add support for GRE. Traffic to IPIP tunnel types that are not
    explicitly recognized by the driver traps and is handled in slow path.
    Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
    Reviewed-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1012b9ac
spectrum_router.c 151 KB