Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4cf178d7 authored by Ido Schimmel's avatar Ido Schimmel Committed by David S. Miller
Browse files

mlxsw: spectrum_router: Configure matching local routes for NVE decap



When a local route that matches the source IP of an offloaded NVE tunnel
is notified, the driver needs to program it to perform NVE decapsulation
instead of merely trapping packets to the CPU.

This patch complements "mlxsw: spectrum_router: Enable local routes
promotion to perform NVE decap" where existing local routes were
promoted to perform NVE decapsulation.

Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Reviewed-by: default avatarPetr Machata <petrm@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 498790be
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -4247,6 +4247,7 @@ mlxsw_sp_fib4_entry_type_set(struct mlxsw_sp *mlxsw_sp,
			     struct mlxsw_sp_fib_entry *fib_entry)
{
	union mlxsw_sp_l3addr dip = { .addr4 = htonl(fen_info->dst) };
	u32 tb_id = mlxsw_sp_fix_tb_id(fen_info->tb_id);
	struct net_device *dev = fen_info->fi->fib_dev;
	struct mlxsw_sp_ipip_entry *ipip_entry;
	struct fib_info *fi = fen_info->fi;
@@ -4261,6 +4262,15 @@ mlxsw_sp_fib4_entry_type_set(struct mlxsw_sp *mlxsw_sp,
							     fib_entry,
							     ipip_entry);
		}
		if (mlxsw_sp_nve_ipv4_route_is_decap(mlxsw_sp, tb_id,
						     dip.addr4)) {
			u32 t_index;

			t_index = mlxsw_sp_nve_decap_tunnel_index_get(mlxsw_sp);
			fib_entry->decap.tunnel_index = t_index;
			fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_NVE_DECAP;
			return 0;
		}
		/* fall through */
	case RTN_BROADCAST:
		fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_TRAP;