wired
libc-free QUIC/HTTP3 SDK in C for x86_64-linux
Loading...
Searching...
No Matches
xsksetup.h
Go to the documentation of this file.
1#ifndef XSKSETUP_XSKSETUP_H
2#define XSKSETUP_XSKSETUP_H
3
6
13
21#define XSKSETUP_UMEM_FRAMES 1024u
23#define XSKSETUP_FRAME_SIZE 2048u
29#define XSKSETUP_UMEM_LEN ((u64)XSKSETUP_UMEM_FRAMES * XSKSETUP_FRAME_SIZE)
30
37#define XSKSETUP_RX_POOL_FRAMES 256u
38
40#define XSKSETUP_RING_ENTRIES 64u
41
51
88
97i64 xsksetup_open(xsk* x, const xsk_cfg* cfg);
98
102
106
111
112#endif
Caller-supplied configuration for one AF_XDP socket.
Definition xsksetup.h:43
u16 bind_flags
XDP bind flags (0 = kernel default).
Definition xsksetup.h:49
u32 ifindex
network interface index
Definition xsksetup.h:45
u32 queue_id
RX queue index to bind.
Definition xsksetup.h:47
One open AF_XDP socket: the fd, its UMEM, the four rings, and the mmap regions backing them (kept so ...
Definition xsksetup.h:54
i64 fd
the AF_XDP socket fd, -1 once closed
Definition xsksetup.h:56
void * map_tx
mmap region backing the tx ring
Definition xsksetup.h:76
void * map_rx
mmap region backing the rx ring
Definition xsksetup.h:72
xskring tx
TX ring (app -> kernel: frames to send).
Definition xsksetup.h:65
usz map_fill_len
byte length of map_fill
Definition xsksetup.h:82
usz map_comp_len
byte length of map_comp
Definition xsksetup.h:86
xskring comp
completion ring (kernel -> app: finished TX frames)
Definition xsksetup.h:69
void * map_comp
mmap region backing the comp ring
Definition xsksetup.h:84
xskring fill
fill ring (app -> kernel: free RX frames)
Definition xsksetup.h:67
usz umem_len
UMEM byte length.
Definition xsksetup.h:60
u8 * umem
UMEM base address.
Definition xsksetup.h:58
usz map_rx_len
byte length of map_rx
Definition xsksetup.h:74
void * map_fill
mmap region backing the fill ring
Definition xsksetup.h:80
xskring rx
RX ring (kernel -> app: received frames).
Definition xsksetup.h:63
usz map_tx_len
byte length of map_tx
Definition xsksetup.h:78
One SPSC ring side, caching the peer's last-known index so the hot path avoids re-reading the shared ...
Definition xskring.h:43
Linux direct syscalls.
unsigned int u32
unsigned 32-bit integer
Definition types.h:15
long i64
signed 64-bit integer
Definition types.h:14
u64 usz
unsigned size (size_t equivalent)
Definition types.h:20
unsigned short u16
unsigned 16-bit integer
Definition types.h:17
unsigned char u8
unsigned 8-bit integer / byte
Definition types.h:18
unsigned long u64
unsigned 64-bit integer
Definition types.h:13
SPSC ring operations shared by the four AF_XDP rings (fill/comp/rx/tx).
void xsksetup_close(xsk *x)
Tear down x: munmap every ring region and the UMEM, close the fd.
i64 xsksetup_stats(i64 fd, u64 out[6])
Read XDP_STATISTICS into out[6]: rx_dropped, rx_invalid_descs, tx_invalid_descs, rx_ring_full,...
i64 xsksetup_open(xsk *x, const xsk_cfg *cfg)
Open one AF_XDP socket bound to cfg->ifindex/queue_id: socket -> UMEM anonymous mmap -> XDP_UMEM_REG ...
i64 xsksetup_kick_tx(i64 fd)
Wake the kernel to service the TX ring (sendto with no data, matching the driver's XDP_COPY bind mode...