Lines Matching refs:fib_work

7614 	struct mlxsw_sp_fib_event_work *fib_work =  in mlxsw_sp_router_fib4_event_work()  local
7616 struct mlxsw_sp *mlxsw_sp = fib_work->mlxsw_sp; in mlxsw_sp_router_fib4_event_work()
7622 switch (fib_work->event) { in mlxsw_sp_router_fib4_event_work()
7625 &fib_work->fen_info); in mlxsw_sp_router_fib4_event_work()
7629 &fib_work->fen_info); in mlxsw_sp_router_fib4_event_work()
7631 fib_info_put(fib_work->fen_info.fi); in mlxsw_sp_router_fib4_event_work()
7634 mlxsw_sp_router_fib4_del(mlxsw_sp, &fib_work->fen_info); in mlxsw_sp_router_fib4_event_work()
7635 fib_info_put(fib_work->fen_info.fi); in mlxsw_sp_router_fib4_event_work()
7639 mlxsw_sp_nexthop4_event(mlxsw_sp, fib_work->event, in mlxsw_sp_router_fib4_event_work()
7640 fib_work->fnh_info.fib_nh); in mlxsw_sp_router_fib4_event_work()
7641 fib_info_put(fib_work->fnh_info.fib_nh->nh_parent); in mlxsw_sp_router_fib4_event_work()
7645 kfree(fib_work); in mlxsw_sp_router_fib4_event_work()
7650 struct mlxsw_sp_fib_event_work *fib_work = in mlxsw_sp_router_fib6_event_work() local
7652 struct mlxsw_sp_fib6_event_work *fib6_work = &fib_work->fib6_work; in mlxsw_sp_router_fib6_event_work()
7653 struct mlxsw_sp *mlxsw_sp = fib_work->mlxsw_sp; in mlxsw_sp_router_fib6_event_work()
7659 switch (fib_work->event) { in mlxsw_sp_router_fib6_event_work()
7692 kfree(fib_work); in mlxsw_sp_router_fib6_event_work()
7697 struct mlxsw_sp_fib_event_work *fib_work = in mlxsw_sp_router_fibmr_event_work() local
7699 struct mlxsw_sp *mlxsw_sp = fib_work->mlxsw_sp; in mlxsw_sp_router_fibmr_event_work()
7705 switch (fib_work->event) { in mlxsw_sp_router_fibmr_event_work()
7708 replace = fib_work->event == FIB_EVENT_ENTRY_REPLACE; in mlxsw_sp_router_fibmr_event_work()
7710 err = mlxsw_sp_router_fibmr_add(mlxsw_sp, &fib_work->men_info, in mlxsw_sp_router_fibmr_event_work()
7714 mr_cache_put(fib_work->men_info.mfc); in mlxsw_sp_router_fibmr_event_work()
7717 mlxsw_sp_router_fibmr_del(mlxsw_sp, &fib_work->men_info); in mlxsw_sp_router_fibmr_event_work()
7718 mr_cache_put(fib_work->men_info.mfc); in mlxsw_sp_router_fibmr_event_work()
7722 &fib_work->ven_info); in mlxsw_sp_router_fibmr_event_work()
7725 netdev_put(fib_work->ven_info.dev, &fib_work->dev_tracker); in mlxsw_sp_router_fibmr_event_work()
7729 &fib_work->ven_info); in mlxsw_sp_router_fibmr_event_work()
7730 netdev_put(fib_work->ven_info.dev, &fib_work->dev_tracker); in mlxsw_sp_router_fibmr_event_work()
7735 kfree(fib_work); in mlxsw_sp_router_fibmr_event_work()
7738 static void mlxsw_sp_router_fib4_event(struct mlxsw_sp_fib_event_work *fib_work, in mlxsw_sp_router_fib4_event() argument
7744 switch (fib_work->event) { in mlxsw_sp_router_fib4_event()
7749 fib_work->fen_info = *fen_info; in mlxsw_sp_router_fib4_event()
7753 fib_info_hold(fib_work->fen_info.fi); in mlxsw_sp_router_fib4_event()
7759 fib_work->fnh_info = *fnh_info; in mlxsw_sp_router_fib4_event()
7760 fib_info_hold(fib_work->fnh_info.fib_nh->nh_parent); in mlxsw_sp_router_fib4_event()
7765 static int mlxsw_sp_router_fib6_event(struct mlxsw_sp_fib_event_work *fib_work, in mlxsw_sp_router_fib6_event() argument
7771 switch (fib_work->event) { in mlxsw_sp_router_fib6_event()
7777 err = mlxsw_sp_router_fib6_work_init(&fib_work->fib6_work, in mlxsw_sp_router_fib6_event()
7788 mlxsw_sp_router_fibmr_event(struct mlxsw_sp_fib_event_work *fib_work, in mlxsw_sp_router_fibmr_event() argument
7791 switch (fib_work->event) { in mlxsw_sp_router_fibmr_event()
7795 memcpy(&fib_work->men_info, info, sizeof(fib_work->men_info)); in mlxsw_sp_router_fibmr_event()
7796 mr_cache_hold(fib_work->men_info.mfc); in mlxsw_sp_router_fibmr_event()
7800 memcpy(&fib_work->ven_info, info, sizeof(fib_work->ven_info)); in mlxsw_sp_router_fibmr_event()
7801 netdev_hold(fib_work->ven_info.dev, &fib_work->dev_tracker, in mlxsw_sp_router_fibmr_event()
7856 struct mlxsw_sp_fib_event_work *fib_work; in mlxsw_sp_router_fib_event() local
7888 fib_work = kzalloc(sizeof(*fib_work), GFP_ATOMIC); in mlxsw_sp_router_fib_event()
7889 if (!fib_work) in mlxsw_sp_router_fib_event()
7892 fib_work->mlxsw_sp = router->mlxsw_sp; in mlxsw_sp_router_fib_event()
7893 fib_work->event = event; in mlxsw_sp_router_fib_event()
7897 INIT_WORK(&fib_work->work, mlxsw_sp_router_fib4_event_work); in mlxsw_sp_router_fib_event()
7898 mlxsw_sp_router_fib4_event(fib_work, info); in mlxsw_sp_router_fib_event()
7901 INIT_WORK(&fib_work->work, mlxsw_sp_router_fib6_event_work); in mlxsw_sp_router_fib_event()
7902 err = mlxsw_sp_router_fib6_event(fib_work, info); in mlxsw_sp_router_fib_event()
7908 INIT_WORK(&fib_work->work, mlxsw_sp_router_fibmr_event_work); in mlxsw_sp_router_fib_event()
7909 mlxsw_sp_router_fibmr_event(fib_work, info); in mlxsw_sp_router_fib_event()
7913 mlxsw_core_schedule_work(&fib_work->work); in mlxsw_sp_router_fib_event()
7918 kfree(fib_work); in mlxsw_sp_router_fib_event()