xdp_sock
int xsk_generic_rcv(struct xdp_sock *xs, struct xdp_buff *xdp);
int __xsk_map_redirect(struct xdp_sock *xs, struct xdp_buff *xdp);
static inline int xsk_generic_rcv(struct xdp_sock *xs, struct xdp_buff *xdp)
static inline int __xsk_map_redirect(struct xdp_sock *xs, struct xdp_buff *xdp)
struct xdp_sock __rcu *xsk_map[];
struct xsk_buff_pool *xp_create_and_assign_umem(struct xdp_sock *xs,
int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_sock *umem_xs,
int xp_alloc_tx_descs(struct xsk_buff_pool *pool, struct xdp_sock *xs,
void xp_add_xsk(struct xsk_buff_pool *pool, struct xdp_sock *xs);
void xp_del_xsk(struct xsk_buff_pool *pool, struct xdp_sock *xs);
struct xdp_sock;
BUILD_BUG_ON(sizeof_field(struct xdp_sock, FIELD) > \
*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct xdp_sock, FIELD),\
offsetof(struct xdp_sock, FIELD)); \
static struct sk_buff *xsk_build_skb_zerocopy(struct xdp_sock *xs,
static struct sk_buff *xsk_build_skb(struct xdp_sock *xs,
struct xdp_sock *xs = xdp_sk(sk);
static int xsk_check_common(struct xdp_sock *xs)
struct xdp_sock *xs = xdp_sk(sk);
struct xdp_sock *xs = xdp_sk(sk);
struct xdp_sock *xs = xdp_sk(sk);
static void xsk_unbind_dev(struct xdp_sock *xs)
static struct xsk_map *xsk_get_map_list_entry(struct xdp_sock *xs,
struct xdp_sock __rcu ***map_entry)
static void xsk_delete_from_maps(struct xdp_sock *xs)
struct xdp_sock __rcu **map_entry = NULL;
struct xdp_sock *xs = xdp_sk(sk);
static bool xsk_validate_queues(struct xdp_sock *xs)
struct xdp_sock *xs = xdp_sk(sk);
struct xdp_sock *umem_xs;
struct xdp_sock *xs = xdp_sk(sk);
static int __xsk_rcv_zc(struct xdp_sock *xs, struct xdp_buff_xsk *xskb, u32 len,
struct xdp_sock *xs = xdp_sk(sk);
struct xdp_sock *xs = xdp_sk(sock->sk);
static void __xsk_rcv_zc_safe(struct xdp_sock *xs, struct xdp_buff_xsk *xskb,
struct xdp_sock *xs = xdp_sk(sk);
.obj_size = sizeof(struct xdp_sock),
struct xdp_sock *xs = xdp_sk(sk);
struct xdp_sock *xs;
static int xsk_rcv_zc(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len)
static int __xsk_rcv(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len)
static bool xsk_tx_writeable(struct xdp_sock *xs)
static void __xsk_tx_release(struct xdp_sock *xs)
static bool xsk_is_bound(struct xdp_sock *xs)
static bool xsk_dev_queue_valid(const struct xdp_sock *xs,
static int xsk_rcv_check(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len)
static void xsk_flush(struct xdp_sock *xs)
int xsk_generic_rcv(struct xdp_sock *xs, struct xdp_buff *xdp)
static int xsk_rcv(struct xdp_sock *xs, struct xdp_buff *xdp)
int __xsk_map_redirect(struct xdp_sock *xs, struct xdp_buff *xdp)
struct xdp_sock *xs, *tmp;
struct xdp_sock *xs;
struct xdp_sock *xs;
__xsk_tx_peek_release_desc_batch(struct xsk_buff_pool *pool, struct xdp_sock *xs,
struct xdp_sock *xs;
struct xdp_sock *xs;
struct xdp_sock *xs;
xs = list_first_or_null_rcu(&pool->xsk_tx_list, struct xdp_sock,
static int xsk_wakeup(struct xdp_sock *xs, u8 flags)
struct xdp_sock *xs;
static int xsk_skb_init_misc(struct sk_buff *skb, struct xdp_sock *xs,
struct xdp_sock *xs = xdp_sk(skb->sk);
struct xdp_sock *xs = xdp_sk(skb->sk);
struct xdp_sock __rcu **map_entry;
static inline struct xdp_sock *xdp_sk(struct sock *sk)
return (struct xdp_sock *)sk;
void xsk_map_try_sock_delete(struct xsk_map *map, struct xdp_sock *xs,
struct xdp_sock __rcu **map_entry);
void xp_add_xsk(struct xsk_buff_pool *pool, struct xdp_sock *xs)
void xp_del_xsk(struct xsk_buff_pool *pool, struct xdp_sock *xs)
int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_sock *umem_xs,
int xp_alloc_tx_descs(struct xsk_buff_pool *pool, struct xdp_sock *xs,
struct xsk_buff_pool *xp_create_and_assign_umem(struct xdp_sock *xs,
static int xsk_diag_put_info(const struct xdp_sock *xs, struct sk_buff *nlskb)
static int xsk_diag_put_rings_cfg(const struct xdp_sock *xs,
static int xsk_diag_put_umem(const struct xdp_sock *xs, struct sk_buff *nlskb)
static int xsk_diag_put_stats(const struct xdp_sock *xs, struct sk_buff *nlskb)
struct xdp_sock *xs = xdp_sk(sk);
xskq_cons_read_desc_batch(struct xdp_sock *xs, struct xsk_buff_pool *pool,
struct xdp_sock __rcu **map_entry)
struct xdp_sock __rcu **map_entry;
struct xdp_sock *xs, *old_xs;
xs = (struct xdp_sock *)sock->sk;
struct xdp_sock __rcu **map_entry;
struct xdp_sock *old_xs;
void xsk_map_try_sock_delete(struct xsk_map *map, struct xdp_sock *xs,
struct xdp_sock __rcu **map_entry)
static void xsk_map_sock_add(struct xdp_sock *xs, struct xsk_map_node *node)
static void xsk_map_sock_delete(struct xdp_sock *xs,
struct xdp_sock __rcu **map_entry)