fib6_entry 2841 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 2866 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c const struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 2870 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (nh_grp->count != fib6_entry->nrt6) fib6_entry 2873 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) { fib6_entry 2900 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c cmp_arg->fib6_entry); fib6_entry 2939 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_nexthop6_group_hash(struct mlxsw_sp_fib6_entry *fib6_entry, u32 seed) fib6_entry 2941 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c unsigned int val = fib6_entry->nrt6; fib6_entry 2945 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) { fib6_entry 2962 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return mlxsw_sp_nexthop6_group_hash(cmp_arg->fib6_entry, seed); fib6_entry 3015 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 3020 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c cmp_arg.fib6_entry = fib6_entry; fib6_entry 4069 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 4072 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry = container_of(fib_entry, struct mlxsw_sp_fib6_entry, fib6_entry 4077 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_first_entry(&fib6_entry->rt6_list, struct mlxsw_sp_rt6, fib6_entry 4082 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) { fib6_entry 4098 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 4101 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry = container_of(fib_entry, struct mlxsw_sp_fib6_entry, fib6_entry 4103 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) { fib6_entry 4989 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_rt(const struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 4991 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return list_first_entry(&fib6_entry->rt6_list, struct mlxsw_sp_rt6, fib6_entry 4999 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 5004 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry(fib6_entry, &fib_node->entry_list, common.list) { fib6_entry 5005 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct fib6_info *rt = mlxsw_sp_fib6_entry_rt(fib6_entry); fib6_entry 5018 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return fib6_entry; fib6_entry 5027 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_rt_find(const struct mlxsw_sp_fib6_entry *fib6_entry, fib6_entry 5032 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) { fib6_entry 5131 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 5139 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c nh_grp = kzalloc(struct_size(nh_grp, nexthops, fib6_entry->nrt6), fib6_entry 5147 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_rt6 = list_first_entry(&fib6_entry->rt6_list, fib6_entry 5150 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c nh_grp->count = fib6_entry->nrt6; fib6_entry 5196 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 5200 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c nh_grp = mlxsw_sp_nexthop6_group_lookup(mlxsw_sp, fib6_entry); fib6_entry 5202 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c nh_grp = mlxsw_sp_nexthop6_group_create(mlxsw_sp, fib6_entry); fib6_entry 5207 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_add_tail(&fib6_entry->common.nexthop_group_node, fib6_entry 5209 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->common.nh_group = nh_grp; fib6_entry 5227 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 5229 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_nexthop_group *old_nh_grp = fib6_entry->common.nh_group; fib6_entry 5232 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->common.nh_group = NULL; fib6_entry 5233 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_del(&fib6_entry->common.nexthop_group_node); fib6_entry 5235 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_nexthop6_group_get(mlxsw_sp, fib6_entry); fib6_entry 5243 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_fib_node_entry_add(mlxsw_sp, &fib6_entry->common); fib6_entry 5253 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_nexthop6_group_put(mlxsw_sp, &fib6_entry->common); fib6_entry 5255 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_add_tail(&fib6_entry->common.nexthop_group_node, fib6_entry 5257 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->common.nh_group = old_nh_grp; fib6_entry 5263 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry, fib6_entry 5276 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_add_tail(&mlxsw_sp_rt6->list, &fib6_entry->rt6_list); fib6_entry 5277 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->nrt6++; fib6_entry 5280 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_nexthop6_group_update(mlxsw_sp, fib6_entry); fib6_entry 5290 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->nrt6--; fib6_entry 5291 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_rt6 = list_last_entry(&fib6_entry->rt6_list, fib6_entry 5301 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry, fib6_entry 5308 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_rt6 = mlxsw_sp_fib6_entry_rt_find(fib6_entry, fib6_entry 5313 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->nrt6--; fib6_entry 5318 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_nexthop6_group_update(mlxsw_sp, fib6_entry); fib6_entry 5344 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_rt_destroy_all(struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 5348 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry_safe(mlxsw_sp_rt6, tmp, &fib6_entry->rt6_list, fib6_entry 5350 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->nrt6--; fib6_entry 5361 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 5366 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry = kzalloc(sizeof(*fib6_entry), GFP_KERNEL); fib6_entry 5367 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (!fib6_entry) fib6_entry 5369 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib_entry = &fib6_entry->common; fib6_entry 5371 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c INIT_LIST_HEAD(&fib6_entry->rt6_list); fib6_entry 5379 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_add_tail(&mlxsw_sp_rt6->list, &fib6_entry->rt6_list); fib6_entry 5380 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->nrt6++; fib6_entry 5385 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_nexthop6_group_get(mlxsw_sp, fib6_entry); fib6_entry 5391 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return fib6_entry; fib6_entry 5397 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry->nrt6--; fib6_entry 5398 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_rt6 = list_last_entry(&fib6_entry->rt6_list, fib6_entry 5403 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c kfree(fib6_entry); fib6_entry 5408 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 5410 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_nexthop6_group_put(mlxsw_sp, &fib6_entry->common); fib6_entry 5411 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_rt_destroy_all(fib6_entry); fib6_entry 5412 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c WARN_ON(fib6_entry->nrt6); fib6_entry 5413 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c kfree(fib6_entry); fib6_entry 5420 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry, *fallback = NULL; fib6_entry 5422 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry(fib6_entry, &fib_node->entry_list, common.list) { fib6_entry 5423 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct fib6_info *rt = mlxsw_sp_fib6_entry_rt(fib6_entry); fib6_entry 5432 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return fib6_entry; fib6_entry 5434 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fallback = fallback ?: fib6_entry; fib6_entry 5437 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return fallback ?: fib6_entry; fib6_entry 5449 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 5451 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry = mlxsw_sp_fib6_node_entry_find(fib_node, nrt, *p_replace); fib6_entry 5453 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (*p_replace && !fib6_entry) fib6_entry 5456 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (fib6_entry) { fib6_entry 5458 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c &fib6_entry->common.list); fib6_entry 5467 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry = last; fib6_entry 5470 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (fib6_entry) fib6_entry 5472 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c &fib6_entry->common.list); fib6_entry 5482 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_node_list_remove(struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 5484 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_del(&fib6_entry->common.list); fib6_entry 5488 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry, fib6_entry 5493 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_fib6_node_list_insert(fib6_entry, p_replace); fib6_entry 5497 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_fib_node_entry_add(mlxsw_sp, &fib6_entry->common); fib6_entry 5504 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_node_list_remove(fib6_entry); fib6_entry 5510 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry) fib6_entry 5512 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib_node_entry_del(mlxsw_sp, &fib6_entry->common); fib6_entry 5513 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_node_list_remove(fib6_entry); fib6_entry 5520 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 5536 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry(fib6_entry, &fib_node->entry_list, common.list) { fib6_entry 5537 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct fib6_info *iter_rt = mlxsw_sp_fib6_entry_rt(fib6_entry); fib6_entry 5541 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_rt_find(fib6_entry, rt)) fib6_entry 5542 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return fib6_entry; fib6_entry 5549 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry, fib6_entry 5552 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib_node *fib_node = fib6_entry->common.fib_node; fib6_entry 5558 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c replaced = list_next_entry(fib6_entry, common.list); fib6_entry 5569 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 5594 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry = mlxsw_sp_fib6_node_mp_entry_find(fib_node, rt, replace); fib6_entry 5595 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (fib6_entry) { fib6_entry 5596 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_fib6_entry_nexthop_add(mlxsw_sp, fib6_entry, fib6_entry 5603 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry = mlxsw_sp_fib6_entry_create(mlxsw_sp, fib_node, rt_arr, fib6_entry 5605 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (IS_ERR(fib6_entry)) { fib6_entry 5606 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = PTR_ERR(fib6_entry); fib6_entry 5610 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_fib6_node_entry_link(mlxsw_sp, fib6_entry, &replace); fib6_entry 5614 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_replace(mlxsw_sp, fib6_entry, replace); fib6_entry 5619 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_entry); fib6_entry 5630 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry; fib6_entry 5645 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib6_entry = mlxsw_sp_fib6_entry_lookup(mlxsw_sp, rt); fib6_entry 5646 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (!fib6_entry) fib6_entry 5652 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (nrt6 != fib6_entry->nrt6) { fib6_entry 5653 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_nexthop_del(mlxsw_sp, fib6_entry, rt_arr, fib6_entry 5658 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib_node = fib6_entry->common.fib_node; fib6_entry 5660 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_node_entry_unlink(mlxsw_sp, fib6_entry); fib6_entry 5661 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_entry); fib6_entry 5835 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_fib6_entry *fib6_entry, *tmp; fib6_entry 5837 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c list_for_each_entry_safe(fib6_entry, tmp, &fib_node->entry_list, fib6_entry 5841 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_node_entry_unlink(mlxsw_sp, fib6_entry); fib6_entry 5842 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_entry);