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);