• Petr Machata's avatar
    mlxsw: spectrum_router: Make nexthops typed · 35225e47
    Petr Machata authored
    In the router, some next hops may reference an encapsulating netdevice,
    such as GRE or IPIP. To properly offload these next hops, mlxsw needs to
    keep track of whether a given next hop is a regular Ethernet entry, or
    an IP-in-IP tunneling entry.
    
    To facilitate this book-keeping, add a type field to struct
    mlxsw_sp_nexthop. There is, as of this patch, only one next hop type:
    MLXSW_SP_NEXTHOP_TYPE_ETH. Follow-up patches will introduce the IP-in-IP
    variant.
    
    There are several places where next hops are initialized in the IPv4
    path. Instead of replicating the logic at every one of them, factor it
    out to a function mlxsw_sp_nexthop4_type_init(). The corresponding fini
    is actually protocol-neutral, so put it to mlxsw_sp_nexthop_type_fini(),
    but create a corresponding protocoled _fini function that dispatches to
    the protocol-neutral one.
    
    The IPv6 path is simpler, but for symmetry with IPv4, create the same
    suite of functions with corresponding logic.
    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>
    35225e47
spectrum_router.c 145 KB