xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/if_xdp.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _LINUX_IF_XDP_H
8*8d67ca89SAndroid Build Coastguard Worker #define _LINUX_IF_XDP_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #define XDP_SHARED_UMEM (1 << 0)
11*8d67ca89SAndroid Build Coastguard Worker #define XDP_COPY (1 << 1)
12*8d67ca89SAndroid Build Coastguard Worker #define XDP_ZEROCOPY (1 << 2)
13*8d67ca89SAndroid Build Coastguard Worker #define XDP_USE_NEED_WAKEUP (1 << 3)
14*8d67ca89SAndroid Build Coastguard Worker #define XDP_USE_SG (1 << 4)
15*8d67ca89SAndroid Build Coastguard Worker #define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0)
16*8d67ca89SAndroid Build Coastguard Worker #define XDP_UMEM_TX_SW_CSUM (1 << 1)
17*8d67ca89SAndroid Build Coastguard Worker #define XDP_UMEM_TX_METADATA_LEN (1 << 2)
18*8d67ca89SAndroid Build Coastguard Worker struct sockaddr_xdp {
19*8d67ca89SAndroid Build Coastguard Worker   __u16 sxdp_family;
20*8d67ca89SAndroid Build Coastguard Worker   __u16 sxdp_flags;
21*8d67ca89SAndroid Build Coastguard Worker   __u32 sxdp_ifindex;
22*8d67ca89SAndroid Build Coastguard Worker   __u32 sxdp_queue_id;
23*8d67ca89SAndroid Build Coastguard Worker   __u32 sxdp_shared_umem_fd;
24*8d67ca89SAndroid Build Coastguard Worker };
25*8d67ca89SAndroid Build Coastguard Worker #define XDP_RING_NEED_WAKEUP (1 << 0)
26*8d67ca89SAndroid Build Coastguard Worker struct xdp_ring_offset {
27*8d67ca89SAndroid Build Coastguard Worker   __u64 producer;
28*8d67ca89SAndroid Build Coastguard Worker   __u64 consumer;
29*8d67ca89SAndroid Build Coastguard Worker   __u64 desc;
30*8d67ca89SAndroid Build Coastguard Worker   __u64 flags;
31*8d67ca89SAndroid Build Coastguard Worker };
32*8d67ca89SAndroid Build Coastguard Worker struct xdp_mmap_offsets {
33*8d67ca89SAndroid Build Coastguard Worker   struct xdp_ring_offset rx;
34*8d67ca89SAndroid Build Coastguard Worker   struct xdp_ring_offset tx;
35*8d67ca89SAndroid Build Coastguard Worker   struct xdp_ring_offset fr;
36*8d67ca89SAndroid Build Coastguard Worker   struct xdp_ring_offset cr;
37*8d67ca89SAndroid Build Coastguard Worker };
38*8d67ca89SAndroid Build Coastguard Worker #define XDP_MMAP_OFFSETS 1
39*8d67ca89SAndroid Build Coastguard Worker #define XDP_RX_RING 2
40*8d67ca89SAndroid Build Coastguard Worker #define XDP_TX_RING 3
41*8d67ca89SAndroid Build Coastguard Worker #define XDP_UMEM_REG 4
42*8d67ca89SAndroid Build Coastguard Worker #define XDP_UMEM_FILL_RING 5
43*8d67ca89SAndroid Build Coastguard Worker #define XDP_UMEM_COMPLETION_RING 6
44*8d67ca89SAndroid Build Coastguard Worker #define XDP_STATISTICS 7
45*8d67ca89SAndroid Build Coastguard Worker #define XDP_OPTIONS 8
46*8d67ca89SAndroid Build Coastguard Worker struct xdp_umem_reg {
47*8d67ca89SAndroid Build Coastguard Worker   __u64 addr;
48*8d67ca89SAndroid Build Coastguard Worker   __u64 len;
49*8d67ca89SAndroid Build Coastguard Worker   __u32 chunk_size;
50*8d67ca89SAndroid Build Coastguard Worker   __u32 headroom;
51*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
52*8d67ca89SAndroid Build Coastguard Worker   __u32 tx_metadata_len;
53*8d67ca89SAndroid Build Coastguard Worker };
54*8d67ca89SAndroid Build Coastguard Worker struct xdp_statistics {
55*8d67ca89SAndroid Build Coastguard Worker   __u64 rx_dropped;
56*8d67ca89SAndroid Build Coastguard Worker   __u64 rx_invalid_descs;
57*8d67ca89SAndroid Build Coastguard Worker   __u64 tx_invalid_descs;
58*8d67ca89SAndroid Build Coastguard Worker   __u64 rx_ring_full;
59*8d67ca89SAndroid Build Coastguard Worker   __u64 rx_fill_ring_empty_descs;
60*8d67ca89SAndroid Build Coastguard Worker   __u64 tx_ring_empty_descs;
61*8d67ca89SAndroid Build Coastguard Worker };
62*8d67ca89SAndroid Build Coastguard Worker struct xdp_options {
63*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
64*8d67ca89SAndroid Build Coastguard Worker };
65*8d67ca89SAndroid Build Coastguard Worker #define XDP_OPTIONS_ZEROCOPY (1 << 0)
66*8d67ca89SAndroid Build Coastguard Worker #define XDP_PGOFF_RX_RING 0
67*8d67ca89SAndroid Build Coastguard Worker #define XDP_PGOFF_TX_RING 0x80000000
68*8d67ca89SAndroid Build Coastguard Worker #define XDP_UMEM_PGOFF_FILL_RING 0x100000000ULL
69*8d67ca89SAndroid Build Coastguard Worker #define XDP_UMEM_PGOFF_COMPLETION_RING 0x180000000ULL
70*8d67ca89SAndroid Build Coastguard Worker #define XSK_UNALIGNED_BUF_OFFSET_SHIFT 48
71*8d67ca89SAndroid Build Coastguard Worker #define XSK_UNALIGNED_BUF_ADDR_MASK ((1ULL << XSK_UNALIGNED_BUF_OFFSET_SHIFT) - 1)
72*8d67ca89SAndroid Build Coastguard Worker #define XDP_TXMD_FLAGS_TIMESTAMP (1 << 0)
73*8d67ca89SAndroid Build Coastguard Worker #define XDP_TXMD_FLAGS_CHECKSUM (1 << 1)
74*8d67ca89SAndroid Build Coastguard Worker struct xsk_tx_metadata {
75*8d67ca89SAndroid Build Coastguard Worker   __u64 flags;
76*8d67ca89SAndroid Build Coastguard Worker   union {
77*8d67ca89SAndroid Build Coastguard Worker     struct {
78*8d67ca89SAndroid Build Coastguard Worker       __u16 csum_start;
79*8d67ca89SAndroid Build Coastguard Worker       __u16 csum_offset;
80*8d67ca89SAndroid Build Coastguard Worker     } request;
81*8d67ca89SAndroid Build Coastguard Worker     struct {
82*8d67ca89SAndroid Build Coastguard Worker       __u64 tx_timestamp;
83*8d67ca89SAndroid Build Coastguard Worker     } completion;
84*8d67ca89SAndroid Build Coastguard Worker   };
85*8d67ca89SAndroid Build Coastguard Worker };
86*8d67ca89SAndroid Build Coastguard Worker struct xdp_desc {
87*8d67ca89SAndroid Build Coastguard Worker   __u64 addr;
88*8d67ca89SAndroid Build Coastguard Worker   __u32 len;
89*8d67ca89SAndroid Build Coastguard Worker   __u32 options;
90*8d67ca89SAndroid Build Coastguard Worker };
91*8d67ca89SAndroid Build Coastguard Worker #define XDP_PKT_CONTD (1 << 0)
92*8d67ca89SAndroid Build Coastguard Worker #define XDP_TX_METADATA (1 << 1)
93*8d67ca89SAndroid Build Coastguard Worker #endif
94