From 29017c643476daf57495c2ccd1a5fdc8dc5186ea Mon Sep 17 00:00:00 2001 From: Ido Schimmel Date: Mon, 22 Mar 2021 17:58:50 +0200 Subject: [PATCH] mlxsw: spectrum_router: Encapsulate nexthop update in a function Encapsulate this functionality in a separate function, so that it could be invoked by follow-up patches, when replacing a nexthop bucket that is part of a resilient nexthop group. Signed-off-by: Ido Schimmel Reviewed-by: Petr Machata Signed-off-by: David S. Miller --- .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 28 ++++++++++++---------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 1f1f8af6..6be225e 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -3491,6 +3491,20 @@ static int mlxsw_sp_nexthop_ipip_update(struct mlxsw_sp *mlxsw_sp, return 0; } +static int mlxsw_sp_nexthop_update(struct mlxsw_sp *mlxsw_sp, u32 adj_index, + struct mlxsw_sp_nexthop *nh) +{ + /* When action is discard or trap, the nexthop must be + * programmed as an Ethernet nexthop. + */ + if (nh->type == MLXSW_SP_NEXTHOP_TYPE_ETH || + nh->action == MLXSW_SP_NEXTHOP_ACTION_DISCARD || + nh->action == MLXSW_SP_NEXTHOP_ACTION_TRAP) + return mlxsw_sp_nexthop_eth_update(mlxsw_sp, adj_index, nh); + else + return mlxsw_sp_nexthop_ipip_update(mlxsw_sp, adj_index, nh); +} + static int mlxsw_sp_nexthop_group_update(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_nexthop_group_info *nhgi, @@ -3511,19 +3525,7 @@ mlxsw_sp_nexthop_group_update(struct mlxsw_sp *mlxsw_sp, if (nh->update || reallocate) { int err = 0; - /* When action is discard or trap, the nexthop must be - * programmed as an Ethernet nexthop. - */ - if (nh->type == MLXSW_SP_NEXTHOP_TYPE_ETH || - nh->action == MLXSW_SP_NEXTHOP_ACTION_DISCARD || - nh->action == MLXSW_SP_NEXTHOP_ACTION_TRAP) - err = mlxsw_sp_nexthop_eth_update(mlxsw_sp, - adj_index, - nh); - else - err = mlxsw_sp_nexthop_ipip_update(mlxsw_sp, - adj_index, - nh); + err = mlxsw_sp_nexthop_update(mlxsw_sp, adj_index, nh); if (err) return err; nh->update = 0; -- 2.7.4