Lines Matching refs:vs
234 static inline struct hlist_head *vni_head(struct vxlan_sock *vs, u32 id) in vni_head() argument
236 return &vs->vni_list[hash_32(id, VNI_HASH_BITS)]; in vni_head()
266 struct vxlan_sock *vs; in vxlan_find_sock() local
270 hlist_for_each_entry_rcu(vs, vs_head(net, port), hlist) { in vxlan_find_sock()
271 if (inet_sk(vs->sock->sk)->inet_sport == port && in vxlan_find_sock()
272 inet_sk(vs->sock->sk)->sk.sk_family == family && in vxlan_find_sock()
273 vs->flags == flags) in vxlan_find_sock()
274 return vs; in vxlan_find_sock()
279 static struct vxlan_dev *vxlan_vs_find_vni(struct vxlan_sock *vs, u32 id) in vxlan_vs_find_vni() argument
283 hlist_for_each_entry_rcu(vxlan, vni_head(vs, id), hlist) { in vxlan_vs_find_vni()
296 struct vxlan_sock *vs; in vxlan_find_vni() local
298 vs = vxlan_find_sock(net, family, port, flags); in vxlan_find_vni()
299 if (!vs) in vxlan_find_vni()
302 return vxlan_vs_find_vni(vs, id); in vxlan_find_vni()
593 struct vxlan_sock *vs = container_of(uoff, struct vxlan_sock, in vxlan_gro_receive() local
614 if ((flags & VXLAN_HF_RCO) && (vs->flags & VXLAN_F_REMCSUM_RX)) { in vxlan_gro_receive()
617 !!(vs->flags & in vxlan_gro_receive()
656 static void vxlan_notify_add_rx_port(struct vxlan_sock *vs) in vxlan_notify_add_rx_port() argument
659 struct sock *sk = vs->sock->sk; in vxlan_notify_add_rx_port()
666 err = udp_add_offload(&vs->udp_offloads); in vxlan_notify_add_rx_port()
681 static void vxlan_notify_del_rx_port(struct vxlan_sock *vs) in vxlan_notify_del_rx_port() argument
684 struct sock *sk = vs->sock->sk; in vxlan_notify_del_rx_port()
698 udp_del_offload(&vs->udp_offloads); in vxlan_notify_del_rx_port()
1065 void vxlan_sock_release(struct vxlan_sock *vs) in vxlan_sock_release() argument
1067 struct sock *sk = vs->sock->sk; in vxlan_sock_release()
1071 if (!atomic_dec_and_test(&vs->refcnt)) in vxlan_sock_release()
1075 hlist_del_rcu(&vs->hlist); in vxlan_sock_release()
1076 vxlan_notify_del_rx_port(vs); in vxlan_sock_release()
1079 queue_work(vxlan_wq, &vs->del_work); in vxlan_sock_release()
1088 struct vxlan_sock *vs = vxlan->vn_sock; in vxlan_igmp_join() local
1089 struct sock *sk = vs->sock->sk; in vxlan_igmp_join()
1116 struct vxlan_sock *vs = vxlan->vn_sock; in vxlan_igmp_leave() local
1117 struct sock *sk = vs->sock->sk; in vxlan_igmp_leave()
1167 struct vxlan_sock *vs; in vxlan_udp_encap_recv() local
1191 vs = rcu_dereference_sk_user_data(sk); in vxlan_udp_encap_recv()
1192 if (!vs) in vxlan_udp_encap_recv()
1195 if ((flags & VXLAN_HF_RCO) && (vs->flags & VXLAN_F_REMCSUM_RX)) { in vxlan_udp_encap_recv()
1197 !!(vs->flags & VXLAN_F_REMCSUM_NOPARTIAL)); in vxlan_udp_encap_recv()
1208 if ((flags & VXLAN_HF_GBP) && (vs->flags & VXLAN_F_GBP)) { in vxlan_udp_encap_recv()
1237 vs->rcv(vs, skb, &md); in vxlan_udp_encap_recv()
1254 static void vxlan_rcv(struct vxlan_sock *vs, struct sk_buff *skb, in vxlan_rcv() argument
1268 vxlan = vxlan_vs_find_vni(vs, vni); in vxlan_rcv()
2158 static void vxlan_vs_add_dev(struct vxlan_sock *vs, struct vxlan_dev *vxlan) in vxlan_vs_add_dev() argument
2163 vxlan->vn_sock = vs; in vxlan_vs_add_dev()
2165 hlist_add_head_rcu(&vxlan->hlist, vni_head(vs, vni)); in vxlan_vs_add_dev()
2203 struct vxlan_sock *vs; in vxlan_open() local
2206 vs = vxlan_sock_add(vxlan->net, vxlan->dst_port, vxlan_rcv, NULL, in vxlan_open()
2208 if (IS_ERR(vs)) in vxlan_open()
2209 return PTR_ERR(vs); in vxlan_open()
2211 vxlan_vs_add_dev(vs, vxlan); in vxlan_open()
2218 vxlan_sock_release(vs); in vxlan_open()
2253 struct vxlan_sock *vs = vxlan->vn_sock; in vxlan_stop() local
2263 vxlan_sock_release(vs); in vxlan_stop()
2323 struct vxlan_sock *vs; in vxlan_get_rx_port() local
2332 hlist_for_each_entry_rcu(vs, &vn->sock_list[i], hlist) { in vxlan_get_rx_port()
2333 port = inet_sk(vs->sock->sk)->inet_sport; in vxlan_get_rx_port()
2334 sa_family = vs->sock->sk->sk_family; in vxlan_get_rx_port()
2467 struct vxlan_sock *vs = container_of(work, struct vxlan_sock, del_work); in vxlan_del_work() local
2468 udp_tunnel_sock_release(vs->sock); in vxlan_del_work()
2469 kfree_rcu(vs, rcu); in vxlan_del_work()
2505 struct vxlan_sock *vs; in vxlan_socket_create() local
2511 vs = kzalloc(sizeof(*vs), GFP_KERNEL); in vxlan_socket_create()
2512 if (!vs) in vxlan_socket_create()
2516 INIT_HLIST_HEAD(&vs->vni_list[h]); in vxlan_socket_create()
2518 INIT_WORK(&vs->del_work, vxlan_del_work); in vxlan_socket_create()
2524 kfree(vs); in vxlan_socket_create()
2528 vs->sock = sock; in vxlan_socket_create()
2529 atomic_set(&vs->refcnt, 1); in vxlan_socket_create()
2530 vs->rcv = rcv; in vxlan_socket_create()
2531 vs->data = data; in vxlan_socket_create()
2532 vs->flags = (flags & VXLAN_F_RCV_FLAGS); in vxlan_socket_create()
2535 vs->udp_offloads.port = port; in vxlan_socket_create()
2536 vs->udp_offloads.callbacks.gro_receive = vxlan_gro_receive; in vxlan_socket_create()
2537 vs->udp_offloads.callbacks.gro_complete = vxlan_gro_complete; in vxlan_socket_create()
2540 hlist_add_head_rcu(&vs->hlist, vs_head(net, port)); in vxlan_socket_create()
2541 vxlan_notify_add_rx_port(vs); in vxlan_socket_create()
2545 tunnel_cfg.sk_user_data = vs; in vxlan_socket_create()
2552 return vs; in vxlan_socket_create()
2560 struct vxlan_sock *vs; in vxlan_sock_add() local
2565 vs = vxlan_find_sock(net, ipv6 ? AF_INET6 : AF_INET, port, in vxlan_sock_add()
2567 if (vs && vs->rcv == rcv) { in vxlan_sock_add()
2568 if (!atomic_add_unless(&vs->refcnt, 1, 0)) in vxlan_sock_add()
2569 vs = ERR_PTR(-EBUSY); in vxlan_sock_add()
2571 return vs; in vxlan_sock_add()