Lines Matching refs:xs
59 static void xsk_map_sock_add(struct xdp_sock *xs, struct xsk_map_node *node) in xsk_map_sock_add() argument
61 spin_lock_bh(&xs->map_list_lock); in xsk_map_sock_add()
62 list_add_tail(&node->node, &xs->map_list); in xsk_map_sock_add()
63 spin_unlock_bh(&xs->map_list_lock); in xsk_map_sock_add()
66 static void xsk_map_sock_delete(struct xdp_sock *xs, in xsk_map_sock_delete() argument
71 spin_lock_bh(&xs->map_list_lock); in xsk_map_sock_delete()
72 list_for_each_entry_safe(n, tmp, &xs->map_list, node) { in xsk_map_sock_delete()
78 spin_unlock_bh(&xs->map_list_lock); in xsk_map_sock_delete()
166 struct xdp_sock *xs; in __xsk_map_lookup_elem() local
171 xs = READ_ONCE(m->xsk_map[key]); in __xsk_map_lookup_elem()
172 return xs; in __xsk_map_lookup_elem()
176 struct xdp_sock *xs) in __xsk_map_redirect() argument
182 err = xsk_rcv(xs, xdp); in __xsk_map_redirect()
186 if (!xs->flush_node.prev) in __xsk_map_redirect()
187 list_add(&xs->flush_node, flush_list); in __xsk_map_redirect()
196 struct xdp_sock *xs, *tmp; in __xsk_map_flush() local
198 list_for_each_entry_safe(xs, tmp, flush_list, flush_node) { in __xsk_map_flush()
199 xsk_flush(xs); in __xsk_map_flush()
200 __list_del_clearprev(&xs->flush_node); in __xsk_map_flush()
219 struct xdp_sock *xs, *old_xs, **map_entry; in xsk_map_update_elem() local
239 xs = (struct xdp_sock *)sock->sk; in xsk_map_update_elem()
241 if (!xsk_is_setup_for_bpf_map(xs)) { in xsk_map_update_elem()
255 if (old_xs == xs) { in xsk_map_update_elem()
265 xsk_map_sock_add(xs, node); in xsk_map_update_elem()
266 WRITE_ONCE(*map_entry, xs); in xsk_map_update_elem()
299 void xsk_map_try_sock_delete(struct xsk_map *map, struct xdp_sock *xs, in xsk_map_try_sock_delete() argument
303 if (READ_ONCE(*map_entry) == xs) { in xsk_map_try_sock_delete()
305 xsk_map_sock_delete(xs, map_entry); in xsk_map_try_sock_delete()