spectrum: Convert fib event handlers to use container_of on info arg
Subsystems (3)
PATCH 1/1 spectrum: Convert fib event handlers to use container_of on info arg
Use container_of to convert the generic fib_notifier_info into the event specific data structure.
Signed-off-by David Ahern <[email protected]>
Reviewed-by Ido Schimmel <[email protected]>
--- .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 29 +++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +23 -6
@@ -5209,25 +5209,35 @@ static void mlxsw_sp_router_fibmr_event_work(struct work_struct *work)static void mlxsw_sp_router_fib4_event (struct mlxsw_sp_fib_event_work *fib_work,struct fib_notifier_info *info) { +struct fib_entry_notifier_info *fen_info; +struct fib_rule_notifier_info *fr_info; +struct fib_nh_notifier_info *fnh_info; +switch (fib_work->event) {case FIB_EVENT_ENTRY_REPLACE :/* fall through */ case FIB_EVENT_ENTRY_APPEND :/* fall through */ case FIB_EVENT_ENTRY_ADD :/* fall through */ case FIB_EVENT_ENTRY_DEL : -memcpy (&fib_work->fen_info, info,sizeof (fib_work->fen_info)); -/* Take referece on fib_info to prevent it from being + fen_info = container_of(info, struct fib_entry_notifier_info, + info); + fib_work->fen_info = *fen_info; +/* Take reference on fib_info to prevent it from being * freed while work is queued. Release it afterwards. */ fib_info_hold (fib_work->fen_info.fi);break ;case FIB_EVENT_RULE_ADD :/* fall through */ case FIB_EVENT_RULE_DEL : -memcpy (&fib_work->fr_info, info,sizeof (fib_work->fr_info)); + fr_info = container_of(info, struct fib_rule_notifier_info, + info); + fib_work->fr_info = *fr_info;fib_rule_get (fib_work->fr_info.rule);break ;case FIB_EVENT_NH_ADD :/* fall through */ case FIB_EVENT_NH_DEL : -memcpy (&fib_work->fnh_info, info,sizeof (fib_work->fnh_info)); + fnh_info = container_of(info, struct fib_nh_notifier_info, + info); + fib_work->fnh_info = *fnh_info;fib_info_hold (fib_work->fnh_info.fib_nh->nh_parent);break ; }
@@ -5236,16 +5246,23 @@ static void mlxsw_sp_router_fib4_event(struct mlxsw_sp_fib_event_work *fib_work,static void mlxsw_sp_router_fib6_event (struct mlxsw_sp_fib_event_work *fib_work,struct fib_notifier_info *info) { +struct fib6_entry_notifier_info *fen6_info; +struct fib_rule_notifier_info *fr_info; +switch (fib_work->event) {case FIB_EVENT_ENTRY_REPLACE :/* fall through */ case FIB_EVENT_ENTRY_ADD :/* fall through */ case FIB_EVENT_ENTRY_DEL : -memcpy (&fib_work->fen6_info, info,sizeof (fib_work->fen6_info)); + fen6_info = container_of(info, struct fib6_entry_notifier_info, + info); + fib_work->fen6_info = *fen6_info;rt6_hold (fib_work->fen6_info.rt);break ;case FIB_EVENT_RULE_ADD :/* fall through */ case FIB_EVENT_RULE_DEL : -memcpy (&fib_work->fr_info, info,sizeof (fib_work->fr_info)); + fr_info = container_of(info, struct fib_rule_notifier_info, + info); + fib_work->fr_info = *fr_info;fib_rule_get (fib_work->fr_info.rule);break ; }
Signature · 1 line
2.1.4
Quoted 5 lines · Thu, Oct 19, 2017 at 12:01:38AM CEST, [email protected] wrote:
Use
container_ofto convert the genericfib_notifier_infointo the event specific data structure.Signed-off-by David Ahern <[email protected]>Reviewed-by Ido Schimmel <[email protected]>
Acked-by Jiri Pirko <[email protected]>
From: David Ahern <[email protected]>
Date: Wed, 18 Oct 2017 15:01:38 -0700
Quoted 5 lines
Use
container_ofto convert the genericfib_notifier_infointo the event specific data structure.Signed-off-by David Ahern <[email protected]>Reviewed-by Ido Schimmel <[email protected]>
Applied.