Lines Matching refs:fib_entry
1096 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_decap_init() argument
1107 ipip_entry->decap_fib_entry = fib_entry; in mlxsw_sp_fib_entry_decap_init()
1108 fib_entry->decap.ipip_entry = ipip_entry; in mlxsw_sp_fib_entry_decap_init()
1109 fib_entry->decap.tunnel_index = tunnel_index; in mlxsw_sp_fib_entry_decap_init()
1114 struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_entry_decap_fini() argument
1117 fib_entry->decap.ipip_entry->decap_fib_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1118 fib_entry->decap.ipip_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1120 1, fib_entry->decap.tunnel_index); in mlxsw_sp_fib_entry_decap_fini()
1127 struct mlxsw_sp_fib_entry *fib_entry);
1133 struct mlxsw_sp_fib_entry *fib_entry = ipip_entry->decap_fib_entry; in mlxsw_sp_ipip_entry_demote_decap() local
1135 mlxsw_sp_fib_entry_decap_fini(mlxsw_sp, fib_entry); in mlxsw_sp_ipip_entry_demote_decap()
1136 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_TRAP; in mlxsw_sp_ipip_entry_demote_decap()
1138 mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry); in mlxsw_sp_ipip_entry_demote_decap()
1161 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_router_ip2me_fib_entry_find() local
1193 fib_entry = list_first_entry(&fib_node->entry_list, in mlxsw_sp_router_ip2me_fib_entry_find()
1195 if (fib_entry->type != type) in mlxsw_sp_router_ip2me_fib_entry_find()
1198 return fib_entry; in mlxsw_sp_router_ip2me_fib_entry_find()
1208 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_ipip_entry_find_decap() local
1246 fib_entry = list_first_entry(&fib_node->entry_list, in mlxsw_sp_ipip_entry_find_decap()
1248 if (fib_entry->type != MLXSW_SP_FIB_ENTRY_TYPE_TRAP) in mlxsw_sp_ipip_entry_find_decap()
1251 return fib_entry; in mlxsw_sp_ipip_entry_find_decap()
1823 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_router_nve_promote_decap() local
1829 fib_entry = mlxsw_sp_router_ip2me_fib_entry_find(mlxsw_sp, ul_tb_id, in mlxsw_sp_router_nve_promote_decap()
1832 if (!fib_entry) in mlxsw_sp_router_nve_promote_decap()
1835 fib_entry->decap.tunnel_index = tunnel_index; in mlxsw_sp_router_nve_promote_decap()
1836 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_NVE_DECAP; in mlxsw_sp_router_nve_promote_decap()
1838 err = mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry); in mlxsw_sp_router_nve_promote_decap()
1845 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_TRAP; in mlxsw_sp_router_nve_promote_decap()
1846 mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry); in mlxsw_sp_router_nve_promote_decap()
1855 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_router_nve_demote_decap() local
1857 fib_entry = mlxsw_sp_router_ip2me_fib_entry_find(mlxsw_sp, ul_tb_id, in mlxsw_sp_router_nve_demote_decap()
1860 if (!fib_entry) in mlxsw_sp_router_nve_demote_decap()
1863 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_TRAP; in mlxsw_sp_router_nve_demote_decap()
1864 mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry); in mlxsw_sp_router_nve_demote_decap()
3073 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_adj_index_mass_update() local
3077 list_for_each_entry(fib_entry, &nh_grp->fib_list, nexthop_group_node) { in mlxsw_sp_adj_index_mass_update()
3078 if (fib == fib_entry->fib_node->fib) in mlxsw_sp_adj_index_mass_update()
3080 fib = fib_entry->fib_node->fib; in mlxsw_sp_adj_index_mass_update()
3195 const struct mlxsw_sp_fib_entry *fib_entry);
3201 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_nexthop_fib_entries_update() local
3204 list_for_each_entry(fib_entry, &nh_grp->fib_list, nexthop_group_node) { in mlxsw_sp_nexthop_fib_entries_update()
3205 if (!mlxsw_sp_fib_node_entry_is_first(fib_entry->fib_node, in mlxsw_sp_nexthop_fib_entries_update()
3206 fib_entry)) in mlxsw_sp_nexthop_fib_entries_update()
3208 err = mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry); in mlxsw_sp_nexthop_fib_entries_update()
3216 mlxsw_sp_fib_entry_offload_refresh(struct mlxsw_sp_fib_entry *fib_entry,
3223 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_nexthop_fib_entries_refresh() local
3225 list_for_each_entry(fib_entry, &nh_grp->fib_list, nexthop_group_node) { in mlxsw_sp_nexthop_fib_entries_refresh()
3226 if (!mlxsw_sp_fib_node_entry_is_first(fib_entry->fib_node, in mlxsw_sp_nexthop_fib_entries_refresh()
3227 fib_entry)) in mlxsw_sp_nexthop_fib_entries_refresh()
3229 mlxsw_sp_fib_entry_offload_refresh(fib_entry, op, 0); in mlxsw_sp_nexthop_fib_entries_refresh()
3941 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_nexthop4_group_get() argument
3952 list_add_tail(&fib_entry->nexthop_group_node, &nh_grp->fib_list); in mlxsw_sp_nexthop4_group_get()
3953 fib_entry->nh_group = nh_grp; in mlxsw_sp_nexthop4_group_get()
3958 struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_nexthop4_group_put() argument
3960 struct mlxsw_sp_nexthop_group *nh_grp = fib_entry->nh_group; in mlxsw_sp_nexthop4_group_put()
3962 list_del(&fib_entry->nexthop_group_node); in mlxsw_sp_nexthop4_group_put()
3969 mlxsw_sp_fib4_entry_should_offload(const struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib4_entry_should_offload() argument
3973 fib4_entry = container_of(fib_entry, struct mlxsw_sp_fib4_entry, in mlxsw_sp_fib4_entry_should_offload()
3979 mlxsw_sp_fib_entry_should_offload(const struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_entry_should_offload() argument
3981 struct mlxsw_sp_nexthop_group *nh_group = fib_entry->nh_group; in mlxsw_sp_fib_entry_should_offload()
3983 switch (fib_entry->fib_node->fib->proto) { in mlxsw_sp_fib_entry_should_offload()
3985 if (!mlxsw_sp_fib4_entry_should_offload(fib_entry)) in mlxsw_sp_fib_entry_should_offload()
3992 switch (fib_entry->type) { in mlxsw_sp_fib_entry_should_offload()
4027 mlxsw_sp_fib4_entry_offload_set(struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib4_entry_offload_set() argument
4029 struct mlxsw_sp_nexthop_group *nh_grp = fib_entry->nh_group; in mlxsw_sp_fib4_entry_offload_set()
4032 if (fib_entry->type == MLXSW_SP_FIB_ENTRY_TYPE_LOCAL || in mlxsw_sp_fib4_entry_offload_set()
4033 fib_entry->type == MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE || in mlxsw_sp_fib4_entry_offload_set()
4034 fib_entry->type == MLXSW_SP_FIB_ENTRY_TYPE_IPIP_DECAP || in mlxsw_sp_fib4_entry_offload_set()
4035 fib_entry->type == MLXSW_SP_FIB_ENTRY_TYPE_NVE_DECAP) { in mlxsw_sp_fib4_entry_offload_set()
4051 mlxsw_sp_fib4_entry_offload_unset(struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib4_entry_offload_unset() argument
4053 struct mlxsw_sp_nexthop_group *nh_grp = fib_entry->nh_group; in mlxsw_sp_fib4_entry_offload_unset()
4067 mlxsw_sp_fib6_entry_offload_set(struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib6_entry_offload_set() argument
4072 fib6_entry = container_of(fib_entry, struct mlxsw_sp_fib6_entry, in mlxsw_sp_fib6_entry_offload_set()
4075 if (fib_entry->type == MLXSW_SP_FIB_ENTRY_TYPE_LOCAL || in mlxsw_sp_fib6_entry_offload_set()
4076 fib_entry->type == MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE) { in mlxsw_sp_fib6_entry_offload_set()
4083 struct mlxsw_sp_nexthop_group *nh_grp = fib_entry->nh_group; in mlxsw_sp_fib6_entry_offload_set()
4096 mlxsw_sp_fib6_entry_offload_unset(struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib6_entry_offload_unset() argument
4101 fib6_entry = container_of(fib_entry, struct mlxsw_sp_fib6_entry, in mlxsw_sp_fib6_entry_offload_unset()
4110 static void mlxsw_sp_fib_entry_offload_set(struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_entry_offload_set() argument
4112 switch (fib_entry->fib_node->fib->proto) { in mlxsw_sp_fib_entry_offload_set()
4114 mlxsw_sp_fib4_entry_offload_set(fib_entry); in mlxsw_sp_fib_entry_offload_set()
4117 mlxsw_sp_fib6_entry_offload_set(fib_entry); in mlxsw_sp_fib_entry_offload_set()
4123 mlxsw_sp_fib_entry_offload_unset(struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_entry_offload_unset() argument
4125 switch (fib_entry->fib_node->fib->proto) { in mlxsw_sp_fib_entry_offload_unset()
4127 mlxsw_sp_fib4_entry_offload_unset(fib_entry); in mlxsw_sp_fib_entry_offload_unset()
4130 mlxsw_sp_fib6_entry_offload_unset(fib_entry); in mlxsw_sp_fib_entry_offload_unset()
4136 mlxsw_sp_fib_entry_offload_refresh(struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_offload_refresh() argument
4141 return mlxsw_sp_fib_entry_offload_unset(fib_entry); in mlxsw_sp_fib_entry_offload_refresh()
4145 if (mlxsw_sp_fib_entry_should_offload(fib_entry)) in mlxsw_sp_fib_entry_offload_refresh()
4146 mlxsw_sp_fib_entry_offload_set(fib_entry); in mlxsw_sp_fib_entry_offload_refresh()
4148 mlxsw_sp_fib_entry_offload_unset(fib_entry); in mlxsw_sp_fib_entry_offload_refresh()
4157 const struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_ralue_pack() argument
4160 struct mlxsw_sp_fib *fib = fib_entry->fib_node->fib; in mlxsw_sp_fib_entry_ralue_pack()
4168 p_dip = (u32 *) fib_entry->fib_node->key.addr; in mlxsw_sp_fib_entry_ralue_pack()
4170 fib_entry->fib_node->key.prefix_len, in mlxsw_sp_fib_entry_ralue_pack()
4175 fib_entry->fib_node->key.prefix_len, in mlxsw_sp_fib_entry_ralue_pack()
4176 fib_entry->fib_node->key.addr); in mlxsw_sp_fib_entry_ralue_pack()
4182 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_op_remote() argument
4195 if (mlxsw_sp_fib_entry_should_offload(fib_entry)) { in mlxsw_sp_fib_entry_op_remote()
4197 adjacency_index = fib_entry->nh_group->adj_index; in mlxsw_sp_fib_entry_op_remote()
4198 ecmp_size = fib_entry->nh_group->ecmp_size; in mlxsw_sp_fib_entry_op_remote()
4204 mlxsw_sp_fib_entry_ralue_pack(ralue_pl, fib_entry, op); in mlxsw_sp_fib_entry_op_remote()
4211 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_op_local() argument
4214 struct mlxsw_sp_rif *rif = fib_entry->nh_group->nh_rif; in mlxsw_sp_fib_entry_op_local()
4220 if (mlxsw_sp_fib_entry_should_offload(fib_entry)) { in mlxsw_sp_fib_entry_op_local()
4228 mlxsw_sp_fib_entry_ralue_pack(ralue_pl, fib_entry, op); in mlxsw_sp_fib_entry_op_local()
4235 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_op_trap() argument
4240 mlxsw_sp_fib_entry_ralue_pack(ralue_pl, fib_entry, op); in mlxsw_sp_fib_entry_op_trap()
4246 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_op_blackhole() argument
4253 mlxsw_sp_fib_entry_ralue_pack(ralue_pl, fib_entry, op); in mlxsw_sp_fib_entry_op_blackhole()
4260 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_op_ipip_decap() argument
4263 struct mlxsw_sp_ipip_entry *ipip_entry = fib_entry->decap.ipip_entry; in mlxsw_sp_fib_entry_op_ipip_decap()
4271 fib_entry->decap.tunnel_index); in mlxsw_sp_fib_entry_op_ipip_decap()
4275 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_op_nve_decap() argument
4280 mlxsw_sp_fib_entry_ralue_pack(ralue_pl, fib_entry, op); in mlxsw_sp_fib_entry_op_nve_decap()
4282 fib_entry->decap.tunnel_index); in mlxsw_sp_fib_entry_op_nve_decap()
4287 struct mlxsw_sp_fib_entry *fib_entry, in __mlxsw_sp_fib_entry_op() argument
4290 switch (fib_entry->type) { in __mlxsw_sp_fib_entry_op()
4292 return mlxsw_sp_fib_entry_op_remote(mlxsw_sp, fib_entry, op); in __mlxsw_sp_fib_entry_op()
4294 return mlxsw_sp_fib_entry_op_local(mlxsw_sp, fib_entry, op); in __mlxsw_sp_fib_entry_op()
4296 return mlxsw_sp_fib_entry_op_trap(mlxsw_sp, fib_entry, op); in __mlxsw_sp_fib_entry_op()
4298 return mlxsw_sp_fib_entry_op_blackhole(mlxsw_sp, fib_entry, op); in __mlxsw_sp_fib_entry_op()
4301 fib_entry, op); in __mlxsw_sp_fib_entry_op()
4303 return mlxsw_sp_fib_entry_op_nve_decap(mlxsw_sp, fib_entry, op); in __mlxsw_sp_fib_entry_op()
4309 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib_entry_op() argument
4312 int err = __mlxsw_sp_fib_entry_op(mlxsw_sp, fib_entry, op); in mlxsw_sp_fib_entry_op()
4314 mlxsw_sp_fib_entry_offload_refresh(fib_entry, op, err); in mlxsw_sp_fib_entry_op()
4320 struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_entry_update() argument
4322 return mlxsw_sp_fib_entry_op(mlxsw_sp, fib_entry, in mlxsw_sp_fib_entry_update()
4327 struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_entry_del() argument
4329 return mlxsw_sp_fib_entry_op(mlxsw_sp, fib_entry, in mlxsw_sp_fib_entry_del()
4336 struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib4_entry_type_set() argument
4349 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_IPIP_DECAP; in mlxsw_sp_fib4_entry_type_set()
4351 fib_entry, in mlxsw_sp_fib4_entry_type_set()
4359 fib_entry->decap.tunnel_index = t_index; in mlxsw_sp_fib4_entry_type_set()
4360 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_NVE_DECAP; in mlxsw_sp_fib4_entry_type_set()
4365 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_TRAP; in mlxsw_sp_fib4_entry_type_set()
4368 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE; in mlxsw_sp_fib4_entry_type_set()
4376 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_LOCAL; in mlxsw_sp_fib4_entry_type_set()
4380 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_REMOTE; in mlxsw_sp_fib4_entry_type_set()
4382 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_LOCAL; in mlxsw_sp_fib4_entry_type_set()
4395 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_fib4_entry_create() local
4401 fib_entry = &fib4_entry->common; in mlxsw_sp_fib4_entry_create()
4403 err = mlxsw_sp_fib4_entry_type_set(mlxsw_sp, fen_info, fib_entry); in mlxsw_sp_fib4_entry_create()
4407 err = mlxsw_sp_nexthop4_group_get(mlxsw_sp, fib_entry, fen_info->fi); in mlxsw_sp_fib4_entry_create()
4416 fib_entry->fib_node = fib_node; in mlxsw_sp_fib4_entry_create()
4526 const struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_node_entry_is_first() argument
4529 struct mlxsw_sp_fib_entry, list) == fib_entry; in mlxsw_sp_fib_node_entry_is_first()
4768 struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_node_entry_add() argument
4770 struct mlxsw_sp_fib_node *fib_node = fib_entry->fib_node; in mlxsw_sp_fib_node_entry_add()
4772 if (!mlxsw_sp_fib_node_entry_is_first(fib_node, fib_entry)) in mlxsw_sp_fib_node_entry_add()
4780 struct mlxsw_sp_fib_entry *n = list_next_entry(fib_entry, list); in mlxsw_sp_fib_node_entry_add()
4785 return mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry); in mlxsw_sp_fib_node_entry_add()
4789 struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_fib_node_entry_del() argument
4791 struct mlxsw_sp_fib_node *fib_node = fib_entry->fib_node; in mlxsw_sp_fib_node_entry_del()
4793 if (!mlxsw_sp_fib_node_entry_is_first(fib_node, fib_entry)) in mlxsw_sp_fib_node_entry_del()
4798 struct mlxsw_sp_fib_entry *n = list_next_entry(fib_entry, list); in mlxsw_sp_fib_node_entry_del()
4802 mlxsw_sp_fib_entry_offload_refresh(fib_entry, op, 0); in mlxsw_sp_fib_node_entry_del()
4806 mlxsw_sp_fib_entry_del(mlxsw_sp, fib_entry); in mlxsw_sp_fib_node_entry_del()
5215 struct mlxsw_sp_fib_entry *fib_entry) in mlxsw_sp_nexthop6_group_put() argument
5217 struct mlxsw_sp_nexthop_group *nh_grp = fib_entry->nh_group; in mlxsw_sp_nexthop6_group_put()
5219 list_del(&fib_entry->nexthop_group_node); in mlxsw_sp_nexthop6_group_put()
5322 struct mlxsw_sp_fib_entry *fib_entry, in mlxsw_sp_fib6_entry_type_set() argument
5332 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_TRAP; in mlxsw_sp_fib6_entry_type_set()
5334 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE; in mlxsw_sp_fib6_entry_type_set()
5336 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_LOCAL; in mlxsw_sp_fib6_entry_type_set()
5338 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_REMOTE; in mlxsw_sp_fib6_entry_type_set()
5340 fib_entry->type = MLXSW_SP_FIB_ENTRY_TYPE_LOCAL; in mlxsw_sp_fib6_entry_type_set()
5362 struct mlxsw_sp_fib_entry *fib_entry; in mlxsw_sp_fib6_entry_create() local
5369 fib_entry = &fib6_entry->common; in mlxsw_sp_fib6_entry_create()
5383 mlxsw_sp_fib6_entry_type_set(mlxsw_sp, fib_entry, rt_arr[0]); in mlxsw_sp_fib6_entry_create()
5389 fib_entry->fib_node = fib_node; in mlxsw_sp_fib6_entry_create()