mlxsw: spectrum_router: Split nexthop finalization to two stages
Nexthop finalization consists of two steps: the part where the offload is removed, because the backing RIF is now gone; and the part where the association to the RIF is severed. Extract from mlxsw_sp_nexthop_type_fini() a helper that covers the unoffloading part, mlxsw_sp_nexthop_type_rif_gone(), so that it can later be called independently. Note that this swaps around the ordering of mlxsw_sp_nexthop_ipip_fini() vs. mlxsw_sp_nexthop_rif_fini(). The current ordering is more of a historical happenstance than a conscious decision. The two cleanups do not depend on each other, and this change should have no observable effects. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Danielle Ratson <danieller@nvidia.com> Link: https://lore.kernel.org/r/7134559534c5f5c4807c3a1569fae56f8887e763.1687438411.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
bdc0b78e79
commit
a285d66423
@ -4369,21 +4369,26 @@ err_neigh_init:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void mlxsw_sp_nexthop_type_fini(struct mlxsw_sp *mlxsw_sp,
|
||||
struct mlxsw_sp_nexthop *nh)
|
||||
static void mlxsw_sp_nexthop_type_rif_gone(struct mlxsw_sp *mlxsw_sp,
|
||||
struct mlxsw_sp_nexthop *nh)
|
||||
{
|
||||
switch (nh->type) {
|
||||
case MLXSW_SP_NEXTHOP_TYPE_ETH:
|
||||
mlxsw_sp_nexthop_neigh_fini(mlxsw_sp, nh);
|
||||
mlxsw_sp_nexthop_rif_fini(nh);
|
||||
break;
|
||||
case MLXSW_SP_NEXTHOP_TYPE_IPIP:
|
||||
mlxsw_sp_nexthop_rif_fini(nh);
|
||||
mlxsw_sp_nexthop_ipip_fini(mlxsw_sp, nh);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void mlxsw_sp_nexthop_type_fini(struct mlxsw_sp *mlxsw_sp,
|
||||
struct mlxsw_sp_nexthop *nh)
|
||||
{
|
||||
mlxsw_sp_nexthop_type_rif_gone(mlxsw_sp, nh);
|
||||
mlxsw_sp_nexthop_rif_fini(nh);
|
||||
}
|
||||
|
||||
static int mlxsw_sp_nexthop4_init(struct mlxsw_sp *mlxsw_sp,
|
||||
struct mlxsw_sp_nexthop_group *nh_grp,
|
||||
struct mlxsw_sp_nexthop *nh,
|
||||
|
Loading…
Reference in New Issue
Block a user