Lines Matching defs:mlxsw_sp_rt6
498 struct mlxsw_sp_rt6 {
3500 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
3505 list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) {
3506 struct fib6_nh *fib6_nh = mlxsw_sp_rt6->rt->fib6_nh;
3576 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
3578 list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) {
3579 struct fib6_nh *fib6_nh = mlxsw_sp_rt6->rt->fib6_nh;
4041 const struct mlxsw_sp_rt6 *mlxsw_sp_rt6);
4063 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
4065 list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) {
4066 struct fib6_nh *fib6_nh = mlxsw_sp_rt6->rt->fib6_nh;
4069 nh = mlxsw_sp_rt6_nexthop(nh_grp, mlxsw_sp_rt6);
5975 const struct mlxsw_sp_rt6 *mlxsw_sp_rt6)
5982 struct fib6_info *rt = mlxsw_sp_rt6->rt;
6090 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
6100 list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list)
6101 fib6_info_hw_flags_set(mlxsw_sp_net(mlxsw_sp), mlxsw_sp_rt6->rt,
6118 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
6122 list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list)
6123 fib6_info_hw_flags_set(mlxsw_sp_net(mlxsw_sp), mlxsw_sp_rt6->rt,
6904 static struct mlxsw_sp_rt6 *mlxsw_sp_rt6_create(struct fib6_info *rt)
6906 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
6908 mlxsw_sp_rt6 = kzalloc(sizeof(*mlxsw_sp_rt6), GFP_KERNEL);
6909 if (!mlxsw_sp_rt6)
6916 mlxsw_sp_rt6->rt = rt;
6919 return mlxsw_sp_rt6;
6933 static void mlxsw_sp_rt6_destroy(struct mlxsw_sp_rt6 *mlxsw_sp_rt6)
6935 struct fib6_nh *fib6_nh = mlxsw_sp_rt6->rt->fib6_nh;
6937 if (!mlxsw_sp_rt6->rt->nh)
6939 mlxsw_sp_rt6_release(mlxsw_sp_rt6->rt);
6940 kfree(mlxsw_sp_rt6);
6946 return list_first_entry(&fib6_entry->rt6_list, struct mlxsw_sp_rt6,
6950 static struct mlxsw_sp_rt6 *
6954 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
6956 list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) {
6957 if (mlxsw_sp_rt6->rt == rt)
6958 return mlxsw_sp_rt6;
7030 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
7040 mlxsw_sp_rt6 = list_first_entry(&fib6_entry->rt6_list,
7041 struct mlxsw_sp_rt6, list);
7042 nhgi->gateway = mlxsw_sp_rt6_is_gateway(mlxsw_sp, mlxsw_sp_rt6->rt);
7045 struct fib6_info *rt = mlxsw_sp_rt6->rt;
7051 mlxsw_sp_rt6 = list_next_entry(mlxsw_sp_rt6, list);
7249 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
7253 mlxsw_sp_rt6 = mlxsw_sp_rt6_create(rt_arr[i]);
7254 if (IS_ERR(mlxsw_sp_rt6)) {
7255 err = PTR_ERR(mlxsw_sp_rt6);
7259 list_add_tail(&mlxsw_sp_rt6->list, &fib6_entry->rt6_list);
7272 mlxsw_sp_rt6 = list_last_entry(&fib6_entry->rt6_list,
7273 struct mlxsw_sp_rt6, list);
7274 list_del(&mlxsw_sp_rt6->list);
7275 mlxsw_sp_rt6_destroy(mlxsw_sp_rt6);
7285 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
7289 mlxsw_sp_rt6 = mlxsw_sp_fib6_entry_rt_find(fib6_entry,
7291 if (WARN_ON_ONCE(!mlxsw_sp_rt6))
7295 list_del(&mlxsw_sp_rt6->list);
7296 mlxsw_sp_rt6_destroy(mlxsw_sp_rt6);
7360 struct mlxsw_sp_rt6 *mlxsw_sp_rt6, *tmp;
7362 list_for_each_entry_safe(mlxsw_sp_rt6, tmp, &fib6_entry->rt6_list,
7365 list_del(&mlxsw_sp_rt6->list);
7366 mlxsw_sp_rt6_destroy(mlxsw_sp_rt6);
7377 struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
7388 mlxsw_sp_rt6 = mlxsw_sp_rt6_create(rt_arr[i]);
7389 if (IS_ERR(mlxsw_sp_rt6)) {
7390 err = PTR_ERR(mlxsw_sp_rt6);
7393 list_add_tail(&mlxsw_sp_rt6->list, &fib6_entry->rt6_list);
7421 mlxsw_sp_rt6 = list_last_entry(&fib6_entry->rt6_list,
7422 struct mlxsw_sp_rt6, list);
7423 list_del(&mlxsw_sp_rt6->list);
7424 mlxsw_sp_rt6_destroy(mlxsw_sp_rt6);