Lines Matching refs:pcpu_rt
1366 struct rt6_info *pcpu_rt; in ip6_rt_pcpu_alloc() local
1373 pcpu_rt = ip6_dst_alloc(dev_net(dev), dev, flags | DST_NOCOUNT); in ip6_rt_pcpu_alloc()
1375 if (!pcpu_rt) { in ip6_rt_pcpu_alloc()
1379 ip6_rt_copy_init(pcpu_rt, res); in ip6_rt_pcpu_alloc()
1380 pcpu_rt->rt6i_flags |= RTF_PCPU; in ip6_rt_pcpu_alloc()
1383 pcpu_rt->sernum = rt_genid_ipv6(dev_net(dev)); in ip6_rt_pcpu_alloc()
1385 return pcpu_rt; in ip6_rt_pcpu_alloc()
1396 struct rt6_info *pcpu_rt; in rt6_get_pcpu_route() local
1398 pcpu_rt = this_cpu_read(*res->nh->rt6i_pcpu); in rt6_get_pcpu_route()
1400 if (pcpu_rt && pcpu_rt->sernum && !rt6_is_valid(pcpu_rt)) { in rt6_get_pcpu_route()
1411 pcpu_rt = NULL; in rt6_get_pcpu_route()
1414 return pcpu_rt; in rt6_get_pcpu_route()
1420 struct rt6_info *pcpu_rt, *prev, **p; in rt6_make_pcpu_route() local
1422 pcpu_rt = ip6_rt_pcpu_alloc(res); in rt6_make_pcpu_route()
1423 if (!pcpu_rt) in rt6_make_pcpu_route()
1427 prev = cmpxchg(p, NULL, pcpu_rt); in rt6_make_pcpu_route()
1433 from = xchg((__force struct fib6_info **)&pcpu_rt->from, NULL); in rt6_make_pcpu_route()
1437 return pcpu_rt; in rt6_make_pcpu_route()
3671 struct rt6_info *pcpu_rt, **ppcpu_rt; in fib6_nh_release_dsts() local
3674 pcpu_rt = xchg(ppcpu_rt, NULL); in fib6_nh_release_dsts()
3675 if (pcpu_rt) { in fib6_nh_release_dsts()
3676 dst_dev_put(&pcpu_rt->dst); in fib6_nh_release_dsts()
3677 dst_release(&pcpu_rt->dst); in fib6_nh_release_dsts()