Lines Matching refs:fib4_entry
3971 struct mlxsw_sp_fib4_entry *fib4_entry; in mlxsw_sp_fib4_entry_should_offload() local
3973 fib4_entry = container_of(fib_entry, struct mlxsw_sp_fib4_entry, in mlxsw_sp_fib4_entry_should_offload()
3975 return !fib4_entry->tos; in mlxsw_sp_fib4_entry_should_offload()
4394 struct mlxsw_sp_fib4_entry *fib4_entry; in mlxsw_sp_fib4_entry_create() local
4398 fib4_entry = kzalloc(sizeof(*fib4_entry), GFP_KERNEL); in mlxsw_sp_fib4_entry_create()
4399 if (!fib4_entry) in mlxsw_sp_fib4_entry_create()
4401 fib_entry = &fib4_entry->common; in mlxsw_sp_fib4_entry_create()
4411 fib4_entry->prio = fen_info->fi->fib_priority; in mlxsw_sp_fib4_entry_create()
4412 fib4_entry->tb_id = fen_info->tb_id; in mlxsw_sp_fib4_entry_create()
4413 fib4_entry->type = fen_info->type; in mlxsw_sp_fib4_entry_create()
4414 fib4_entry->tos = fen_info->tos; in mlxsw_sp_fib4_entry_create()
4418 return fib4_entry; in mlxsw_sp_fib4_entry_create()
4422 kfree(fib4_entry); in mlxsw_sp_fib4_entry_create()
4427 struct mlxsw_sp_fib4_entry *fib4_entry) in mlxsw_sp_fib4_entry_destroy() argument
4429 mlxsw_sp_nexthop4_group_put(mlxsw_sp, &fib4_entry->common); in mlxsw_sp_fib4_entry_destroy()
4430 kfree(fib4_entry); in mlxsw_sp_fib4_entry_destroy()
4437 struct mlxsw_sp_fib4_entry *fib4_entry; in mlxsw_sp_fib4_entry_lookup() local
4453 list_for_each_entry(fib4_entry, &fib_node->entry_list, common.list) { in mlxsw_sp_fib4_entry_lookup()
4454 if (fib4_entry->tb_id == fen_info->tb_id && in mlxsw_sp_fib4_entry_lookup()
4455 fib4_entry->tos == fen_info->tos && in mlxsw_sp_fib4_entry_lookup()
4456 fib4_entry->type == fen_info->type && in mlxsw_sp_fib4_entry_lookup()
4457 mlxsw_sp_nexthop4_group_fi(fib4_entry->common.nh_group) == in mlxsw_sp_fib4_entry_lookup()
4459 return fib4_entry; in mlxsw_sp_fib4_entry_lookup()
4682 struct mlxsw_sp_fib4_entry *fib4_entry; in mlxsw_sp_fib4_node_entry_find() local
4684 list_for_each_entry(fib4_entry, &fib_node->entry_list, common.list) { in mlxsw_sp_fib4_node_entry_find()
4685 if (fib4_entry->tb_id > new4_entry->tb_id) in mlxsw_sp_fib4_node_entry_find()
4687 if (fib4_entry->tb_id != new4_entry->tb_id) in mlxsw_sp_fib4_node_entry_find()
4689 if (fib4_entry->tos > new4_entry->tos) in mlxsw_sp_fib4_node_entry_find()
4691 if (fib4_entry->prio >= new4_entry->prio || in mlxsw_sp_fib4_node_entry_find()
4692 fib4_entry->tos < new4_entry->tos) in mlxsw_sp_fib4_node_entry_find()
4693 return fib4_entry; in mlxsw_sp_fib4_node_entry_find()
4700 mlxsw_sp_fib4_node_list_append(struct mlxsw_sp_fib4_entry *fib4_entry, in mlxsw_sp_fib4_node_list_append() argument
4705 if (WARN_ON(!fib4_entry)) in mlxsw_sp_fib4_node_list_append()
4708 fib_node = fib4_entry->common.fib_node; in mlxsw_sp_fib4_node_list_append()
4709 list_for_each_entry_from(fib4_entry, &fib_node->entry_list, in mlxsw_sp_fib4_node_list_append()
4711 if (fib4_entry->tb_id != new4_entry->tb_id || in mlxsw_sp_fib4_node_list_append()
4712 fib4_entry->tos != new4_entry->tos || in mlxsw_sp_fib4_node_list_append()
4713 fib4_entry->prio != new4_entry->prio) in mlxsw_sp_fib4_node_list_append()
4717 list_add_tail(&new4_entry->common.list, &fib4_entry->common.list); in mlxsw_sp_fib4_node_list_append()
4726 struct mlxsw_sp_fib4_entry *fib4_entry; in mlxsw_sp_fib4_node_list_insert() local
4728 fib4_entry = mlxsw_sp_fib4_node_entry_find(fib_node, new4_entry); in mlxsw_sp_fib4_node_list_insert()
4731 return mlxsw_sp_fib4_node_list_append(fib4_entry, new4_entry); in mlxsw_sp_fib4_node_list_insert()
4732 if (replace && WARN_ON(!fib4_entry)) in mlxsw_sp_fib4_node_list_insert()
4738 if (fib4_entry) { in mlxsw_sp_fib4_node_list_insert()
4740 &fib4_entry->common.list); in mlxsw_sp_fib4_node_list_insert()
4747 fib4_entry = last; in mlxsw_sp_fib4_node_list_insert()
4750 if (fib4_entry) in mlxsw_sp_fib4_node_list_insert()
4752 &fib4_entry->common.list); in mlxsw_sp_fib4_node_list_insert()
4762 mlxsw_sp_fib4_node_list_remove(struct mlxsw_sp_fib4_entry *fib4_entry) in mlxsw_sp_fib4_node_list_remove() argument
4764 list_del(&fib4_entry->common.list); in mlxsw_sp_fib4_node_list_remove()
4810 struct mlxsw_sp_fib4_entry *fib4_entry, in mlxsw_sp_fib4_node_entry_link() argument
4815 err = mlxsw_sp_fib4_node_list_insert(fib4_entry, replace, append); in mlxsw_sp_fib4_node_entry_link()
4819 err = mlxsw_sp_fib_node_entry_add(mlxsw_sp, &fib4_entry->common); in mlxsw_sp_fib4_node_entry_link()
4826 mlxsw_sp_fib4_node_list_remove(fib4_entry); in mlxsw_sp_fib4_node_entry_link()
4832 struct mlxsw_sp_fib4_entry *fib4_entry) in mlxsw_sp_fib4_node_entry_unlink() argument
4834 mlxsw_sp_fib_node_entry_del(mlxsw_sp, &fib4_entry->common); in mlxsw_sp_fib4_node_entry_unlink()
4835 mlxsw_sp_fib4_node_list_remove(fib4_entry); in mlxsw_sp_fib4_node_entry_unlink()
4837 if (fib4_entry->common.type == MLXSW_SP_FIB_ENTRY_TYPE_IPIP_DECAP) in mlxsw_sp_fib4_node_entry_unlink()
4838 mlxsw_sp_fib_entry_decap_fini(mlxsw_sp, &fib4_entry->common); in mlxsw_sp_fib4_node_entry_unlink()
4842 struct mlxsw_sp_fib4_entry *fib4_entry, in mlxsw_sp_fib4_entry_replace() argument
4845 struct mlxsw_sp_fib_node *fib_node = fib4_entry->common.fib_node; in mlxsw_sp_fib4_entry_replace()
4852 replaced = list_next_entry(fib4_entry, common.list); in mlxsw_sp_fib4_entry_replace()
4864 struct mlxsw_sp_fib4_entry *fib4_entry; in mlxsw_sp_router_fib4_add() local
4880 fib4_entry = mlxsw_sp_fib4_entry_create(mlxsw_sp, fib_node, fen_info); in mlxsw_sp_router_fib4_add()
4881 if (IS_ERR(fib4_entry)) { in mlxsw_sp_router_fib4_add()
4883 err = PTR_ERR(fib4_entry); in mlxsw_sp_router_fib4_add()
4887 err = mlxsw_sp_fib4_node_entry_link(mlxsw_sp, fib4_entry, replace, in mlxsw_sp_router_fib4_add()
4894 mlxsw_sp_fib4_entry_replace(mlxsw_sp, fib4_entry, replace); in mlxsw_sp_router_fib4_add()
4899 mlxsw_sp_fib4_entry_destroy(mlxsw_sp, fib4_entry); in mlxsw_sp_router_fib4_add()
4908 struct mlxsw_sp_fib4_entry *fib4_entry; in mlxsw_sp_router_fib4_del() local
4914 fib4_entry = mlxsw_sp_fib4_entry_lookup(mlxsw_sp, fen_info); in mlxsw_sp_router_fib4_del()
4915 if (WARN_ON(!fib4_entry)) in mlxsw_sp_router_fib4_del()
4917 fib_node = fib4_entry->common.fib_node; in mlxsw_sp_router_fib4_del()
4919 mlxsw_sp_fib4_node_entry_unlink(mlxsw_sp, fib4_entry); in mlxsw_sp_router_fib4_del()
4920 mlxsw_sp_fib4_entry_destroy(mlxsw_sp, fib4_entry); in mlxsw_sp_router_fib4_del()
5809 struct mlxsw_sp_fib4_entry *fib4_entry, *tmp; in mlxsw_sp_fib4_node_flush() local
5811 list_for_each_entry_safe(fib4_entry, tmp, &fib_node->entry_list, in mlxsw_sp_fib4_node_flush()
5815 mlxsw_sp_fib4_node_entry_unlink(mlxsw_sp, fib4_entry); in mlxsw_sp_fib4_node_flush()
5816 mlxsw_sp_fib4_entry_destroy(mlxsw_sp, fib4_entry); in mlxsw_sp_fib4_node_flush()