Message ID | 20180216233044.6323-1-jiri@resnulli.us |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net] mlxsw: spectrum_router: Do not unconditionally clear route offload indication | expand |
From: Jiri Pirko <jiri@resnulli.us> Date: Sat, 17 Feb 2018 00:30:44 +0100 > From: Ido Schimmel <idosch@mellanox.com> > > When mlxsw replaces (or deletes) a route it removes the offload > indication from the replaced route. This is problematic for IPv4 routes, > as the offload indication is stored in the fib_info which is usually > shared between multiple routes. > > Instead of unconditionally clearing the offload indication, only clear > it if no other route is using the fib_info. > > Fixes: 3984d1a89fe7 ("mlxsw: spectrum_router: Provide offload indication using nexthop flags") > Signed-off-by: Ido Schimmel <idosch@mellanox.com> > Reported-by: Alexander Petrovskiy <alexpe@mellanox.com> > Tested-by: Alexander Petrovskiy <alexpe@mellanox.com> > Signed-off-by: Jiri Pirko <jiri@mellanox.com> > --- > Dave, please, push to stable. Thanks! Applied and queued up for -stable, thanks Jiri!
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index dcc6305f7c22..f7948e983637 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -3794,6 +3794,9 @@ mlxsw_sp_fib4_entry_offload_unset(struct mlxsw_sp_fib_entry *fib_entry) struct mlxsw_sp_nexthop_group *nh_grp = fib_entry->nh_group; int i; + if (!list_is_singular(&nh_grp->fib_list)) + return; + for (i = 0; i < nh_grp->count; i++) { struct mlxsw_sp_nexthop *nh = &nh_grp->nexthops[i];