blob: b7eec87cb22bf2b6e22dfecfb0ec8eb019b25577 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Christopher Ferris9ce28842018-10-25 12:11:39 -07007#ifndef _LINUX_IF_XDP_H
8#define _LINUX_IF_XDP_H
9#include <linux/types.h>
10#define XDP_SHARED_UMEM (1 << 0)
11#define XDP_COPY (1 << 1)
12#define XDP_ZEROCOPY (1 << 2)
Christopher Ferris9584fa42019-12-09 15:36:13 -080013#define XDP_USE_NEED_WAKEUP (1 << 3)
Christopher Ferris67d1e5e2023-10-31 13:36:37 -070014#define XDP_USE_SG (1 << 4)
Christopher Ferris9584fa42019-12-09 15:36:13 -080015#define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0)
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070016#define XDP_UMEM_TX_SW_CSUM (1 << 1)
Christopher Ferris9ce28842018-10-25 12:11:39 -070017struct sockaddr_xdp {
18 __u16 sxdp_family;
19 __u16 sxdp_flags;
20 __u32 sxdp_ifindex;
21 __u32 sxdp_queue_id;
22 __u32 sxdp_shared_umem_fd;
23};
Christopher Ferris9584fa42019-12-09 15:36:13 -080024#define XDP_RING_NEED_WAKEUP (1 << 0)
Christopher Ferris9ce28842018-10-25 12:11:39 -070025struct xdp_ring_offset {
26 __u64 producer;
27 __u64 consumer;
28 __u64 desc;
Christopher Ferris9584fa42019-12-09 15:36:13 -080029 __u64 flags;
Christopher Ferris9ce28842018-10-25 12:11:39 -070030};
31struct xdp_mmap_offsets {
32 struct xdp_ring_offset rx;
33 struct xdp_ring_offset tx;
34 struct xdp_ring_offset fr;
35 struct xdp_ring_offset cr;
36};
37#define XDP_MMAP_OFFSETS 1
38#define XDP_RX_RING 2
39#define XDP_TX_RING 3
40#define XDP_UMEM_REG 4
41#define XDP_UMEM_FILL_RING 5
42#define XDP_UMEM_COMPLETION_RING 6
43#define XDP_STATISTICS 7
Christopher Ferrisb8a95e22019-10-02 18:29:20 -070044#define XDP_OPTIONS 8
Christopher Ferris9ce28842018-10-25 12:11:39 -070045struct xdp_umem_reg {
46 __u64 addr;
47 __u64 len;
48 __u32 chunk_size;
49 __u32 headroom;
Christopher Ferris9584fa42019-12-09 15:36:13 -080050 __u32 flags;
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070051 __u32 tx_metadata_len;
Christopher Ferris9ce28842018-10-25 12:11:39 -070052};
53struct xdp_statistics {
54 __u64 rx_dropped;
55 __u64 rx_invalid_descs;
56 __u64 tx_invalid_descs;
Christopher Ferris25c18d42020-10-14 17:42:58 -070057 __u64 rx_ring_full;
58 __u64 rx_fill_ring_empty_descs;
59 __u64 tx_ring_empty_descs;
Christopher Ferris9ce28842018-10-25 12:11:39 -070060};
Christopher Ferrisb8a95e22019-10-02 18:29:20 -070061struct xdp_options {
62 __u32 flags;
63};
64#define XDP_OPTIONS_ZEROCOPY (1 << 0)
Christopher Ferris9ce28842018-10-25 12:11:39 -070065#define XDP_PGOFF_RX_RING 0
66#define XDP_PGOFF_TX_RING 0x80000000
67#define XDP_UMEM_PGOFF_FILL_RING 0x100000000ULL
68#define XDP_UMEM_PGOFF_COMPLETION_RING 0x180000000ULL
Christopher Ferris9584fa42019-12-09 15:36:13 -080069#define XSK_UNALIGNED_BUF_OFFSET_SHIFT 48
70#define XSK_UNALIGNED_BUF_ADDR_MASK ((1ULL << XSK_UNALIGNED_BUF_OFFSET_SHIFT) - 1)
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070071#define XDP_TXMD_FLAGS_TIMESTAMP (1 << 0)
72#define XDP_TXMD_FLAGS_CHECKSUM (1 << 1)
73struct xsk_tx_metadata {
74 __u64 flags;
75 union {
76 struct {
77 __u16 csum_start;
78 __u16 csum_offset;
79 } request;
80 struct {
81 __u64 tx_timestamp;
82 } completion;
83 };
84};
Christopher Ferris9ce28842018-10-25 12:11:39 -070085struct xdp_desc {
86 __u64 addr;
87 __u32 len;
88 __u32 options;
89};
Christopher Ferris67d1e5e2023-10-31 13:36:37 -070090#define XDP_PKT_CONTD (1 << 0)
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070091#define XDP_TX_METADATA (1 << 1)
Christopher Ferris9ce28842018-10-25 12:11:39 -070092#endif