mlxsw: spectrum_router: Update tunnel decap properties
Spectrum-2 requires to specify the egress RIF when setting tunnel decap properties. Add a method for accessing the underlay RIF index and then use it when setting decap properties. Signed-off-by: Nir Dotan <nird@mellanox.com> Reviewed-by: Petr Machata <petrm@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
73b8f493c8
commit
311596f554
|
@ -145,6 +145,7 @@ mlxsw_sp_ipip_fib_entry_op_gre4_rtdp(struct mlxsw_sp *mlxsw_sp,
|
|||
struct mlxsw_sp_ipip_entry *ipip_entry)
|
||||
{
|
||||
u16 rif_index = mlxsw_sp_ipip_lb_rif_index(ipip_entry->ol_lb);
|
||||
u16 ul_rif_id = mlxsw_sp_ipip_lb_ul_rif_id(ipip_entry->ol_lb);
|
||||
char rtdp_pl[MLXSW_REG_RTDP_LEN];
|
||||
struct ip_tunnel_parm parms;
|
||||
unsigned int type_check;
|
||||
|
@ -157,6 +158,7 @@ mlxsw_sp_ipip_fib_entry_op_gre4_rtdp(struct mlxsw_sp *mlxsw_sp,
|
|||
ikey = mlxsw_sp_ipip_parms4_ikey(parms);
|
||||
|
||||
mlxsw_reg_rtdp_pack(rtdp_pl, MLXSW_REG_RTDP_TYPE_IPIP, tunnel_index);
|
||||
mlxsw_reg_rtdp_egress_router_interface_set(rtdp_pl, ul_rif_id);
|
||||
|
||||
type_check = has_ikey ?
|
||||
MLXSW_REG_RTDP_IPIP_TYPE_CHECK_ALLOW_GRE_KEY :
|
||||
|
|
|
@ -6263,6 +6263,11 @@ u16 mlxsw_sp_ipip_lb_ul_vr_id(const struct mlxsw_sp_rif_ipip_lb *lb_rif)
|
|||
return ul_vr->id;
|
||||
}
|
||||
|
||||
u16 mlxsw_sp_ipip_lb_ul_rif_id(const struct mlxsw_sp_rif_ipip_lb *lb_rif)
|
||||
{
|
||||
return lb_rif->ul_rif_id;
|
||||
}
|
||||
|
||||
int mlxsw_sp_rif_dev_ifindex(const struct mlxsw_sp_rif *rif)
|
||||
{
|
||||
return rif->dev->ifindex;
|
||||
|
|
|
@ -29,6 +29,7 @@ struct mlxsw_sp_rif *mlxsw_sp_rif_by_index(const struct mlxsw_sp *mlxsw_sp,
|
|||
u16 mlxsw_sp_rif_index(const struct mlxsw_sp_rif *rif);
|
||||
u16 mlxsw_sp_ipip_lb_rif_index(const struct mlxsw_sp_rif_ipip_lb *rif);
|
||||
u16 mlxsw_sp_ipip_lb_ul_vr_id(const struct mlxsw_sp_rif_ipip_lb *rif);
|
||||
u16 mlxsw_sp_ipip_lb_ul_rif_id(const struct mlxsw_sp_rif_ipip_lb *lb_rif);
|
||||
u32 mlxsw_sp_ipip_dev_ul_tb_id(const struct net_device *ol_dev);
|
||||
int mlxsw_sp_rif_dev_ifindex(const struct mlxsw_sp_rif *rif);
|
||||
const struct net_device *mlxsw_sp_rif_dev(const struct mlxsw_sp_rif *rif);
|
||||
|
|
Loading…
Reference in New Issue