Nir says: In Spectrum-2, HW implementation of layer 3 tunnels differs from Spectrum-1 when it comes to the underlay routing table selection. Spectrum-2 uses a dedicated RIF that points to the virtual router used for forwarding the encapsulated packets, while Spectrum-1 explicitly specifies the virtual router itself.
Patches #1 and #2 add additional fields in RITR - Router interface table register and RTDP - Routing tunnel decap properties respectively, the fields are required for the new underlay RIF needed for Spectrum-2. Patches #3-4 allow different set of RIF operations per ASIC type. The first patch splits the operations and the following patch sets RIF ops according to ASIC type. Patches #5-9 introduce small changes to existing code to allow existence of a dedicated underlay RIF along with the underlay virtual router, and to support that new type of RIF that has no device. Patch #10 takes care of updating the tunnel decap properties egress underlay RIF required for Spectrum-2. Patch #11 adds the implementation of Spectrum-2 specific RIF operations and essentially enables layer 3 GRE tunnels on Spectrum-2. Finally patches #12-18 add tests for GRE IP-in-IP tunnels, both in flat and hierarchical topologies. Ido Schimmel (1): mlxsw: reg: Add underlay egress RIF field in RTDP register Nir Dotan (17): mlxsw: reg: Add fields to RITR - Router Interface Table Register mlxsw: spectrum_router: Split RIF ops array for Spectrum-2 support mlxsw: spectrum: Set RIF ops per ASIC type mlxsw: spectrum_router: Adjust loopback RIF configuration mlxsw: spectrum_router: Mark RIF index as taken before creation mlxsw: spectrum_router: Add underlay RIF ID support mlxsw: spectrum_router: Change mlxsw_sp_ipip_lb_ul_vr_id() mlxsw: spectrum_router: Support RIF without device mlxsw: spectrum_router: Update tunnel decap properties mlxsw: spectrum_router: Add GRE tunnel support for Spectrum-2 selftests: forwarding: Add IP tunneling lib selftests: forwarding: Add IP-in-IP GRE flat topology test selftests: forwarding: Add IP-in-IP GRE flat topology with key test selftests: forwarding: Add IP-in-IP GRE flat topology with keys test selftests: forwarding: Add IP-in-IP GRE hierarchical topology test selftests: forwarding: Add IP-in-IP GRE hierarchical topology with key test selftests: forwarding: Add IP-in-IP GRE hierarchical topology with keys test drivers/net/ethernet/mellanox/mlxsw/reg.h | 23 +- .../net/ethernet/mellanox/mlxsw/spectrum.c | 2 + .../net/ethernet/mellanox/mlxsw/spectrum.h | 6 + .../ethernet/mellanox/mlxsw/spectrum_dpipe.c | 2 +- .../ethernet/mellanox/mlxsw/spectrum_ipip.c | 2 + .../ethernet/mellanox/mlxsw/spectrum_router.c | 221 +++++++++-- .../ethernet/mellanox/mlxsw/spectrum_router.h | 1 + .../selftests/net/forwarding/ipip_flat_gre.sh | 63 ++++ .../net/forwarding/ipip_flat_gre_key.sh | 63 ++++ .../net/forwarding/ipip_flat_gre_keys.sh | 63 ++++ .../selftests/net/forwarding/ipip_hier_gre.sh | 63 ++++ .../net/forwarding/ipip_hier_gre_key.sh | 63 ++++ .../net/forwarding/ipip_hier_gre_keys.sh | 63 ++++ .../selftests/net/forwarding/ipip_lib.sh | 349 ++++++++++++++++++ 14 files changed, 954 insertions(+), 30 deletions(-) create mode 100755 tools/testing/selftests/net/forwarding/ipip_flat_gre.sh create mode 100755 tools/testing/selftests/net/forwarding/ipip_flat_gre_key.sh create mode 100755 tools/testing/selftests/net/forwarding/ipip_flat_gre_keys.sh create mode 100755 tools/testing/selftests/net/forwarding/ipip_hier_gre.sh create mode 100755 tools/testing/selftests/net/forwarding/ipip_hier_gre_key.sh create mode 100755 tools/testing/selftests/net/forwarding/ipip_hier_gre_keys.sh create mode 100644 tools/testing/selftests/net/forwarding/ipip_lib.sh -- 2.20.1