]>
Commit | Line | Data |
---|---|---|
a36b38aa BT |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* Copyright(c) 2019 Intel Corporation. */ | |
3 | ||
4 | #ifndef XSK_H_ | |
5 | #define XSK_H_ | |
6 | ||
89e4a376 BT |
7 | /* Masks for xdp_umem_page flags. |
8 | * The low 12-bits of the addr will be 0 since this is the page address, so we | |
9 | * can use them for flags. | |
10 | */ | |
11 | #define XSK_NEXT_PG_CONTIG_SHIFT 0 | |
12 | #define XSK_NEXT_PG_CONTIG_MASK BIT_ULL(XSK_NEXT_PG_CONTIG_SHIFT) | |
13 | ||
77cd0d7b MK |
14 | struct xdp_ring_offset_v1 { |
15 | __u64 producer; | |
16 | __u64 consumer; | |
17 | __u64 desc; | |
18 | }; | |
19 | ||
20 | struct xdp_mmap_offsets_v1 { | |
21 | struct xdp_ring_offset_v1 rx; | |
22 | struct xdp_ring_offset_v1 tx; | |
23 | struct xdp_ring_offset_v1 fr; | |
24 | struct xdp_ring_offset_v1 cr; | |
25 | }; | |
26 | ||
d20a1676 BT |
27 | /* Nodes are linked in the struct xdp_sock map_list field, and used to |
28 | * track which maps a certain socket reside in. | |
29 | */ | |
30 | ||
31 | struct xsk_map_node { | |
32 | struct list_head node; | |
33 | struct xsk_map *map; | |
34 | struct xdp_sock **map_entry; | |
35 | }; | |
36 | ||
a36b38aa BT |
37 | static inline struct xdp_sock *xdp_sk(struct sock *sk) |
38 | { | |
39 | return (struct xdp_sock *)sk; | |
40 | } | |
41 | ||
d20a1676 BT |
42 | void xsk_map_try_sock_delete(struct xsk_map *map, struct xdp_sock *xs, |
43 | struct xdp_sock **map_entry); | |
44 | int xsk_map_inc(struct xsk_map *map); | |
45 | void xsk_map_put(struct xsk_map *map); | |
1c1efc2a MK |
46 | void xsk_clear_pool_at_qid(struct net_device *dev, u16 queue_id); |
47 | int xsk_reg_pool_at_qid(struct net_device *dev, struct xsk_buff_pool *pool, | |
48 | u16 queue_id); | |
d20a1676 | 49 | |
a36b38aa | 50 | #endif /* XSK_H_ */ |