tun: Add tun.staged.tx and tun.staged.inline_below

tx: false keeps transmit inline and stages only receive. inline_below
sets the idle-reader shortcut threshold, 0 hands every batch to the
workers and the ordered sender or writer.
This commit is contained in:
Ryan Huber committed 2026-10-16 21:24:28 +00:00
1 parent 82488caa32
commit d16a52f921
4 files changed
+93 -8

No files matched your search

+6 -2
View File
@@ -284,14 +284,18 @@ tun:
# Staged reservations may use half the window, the other half absorbs inline and control traffic, relay forwarding
# and network reordering; unlimited forwarding or delay can still exceed it. Waiting for credit on a busy tunnel
# also delays the other tunnels of the same read, and readers are not guaranteed fairness.
# Idle batches below 256 TX segments or RX packets stay on the reader. With multiple routines, those sends still
# take tunnel reservation credit.
# Idle batches below inline_below TX segments or RX packets stay on the reader, default 256. With multiple routines,
# those sends still take tunnel reservation credit. 0 hands every batch to the workers and the ordered sender or
# writer; only TX reads too large for a tunnel's whole credit are still sent by the reader, after it drains.
# tx: false keeps transmit inline and stages only receive.
# tx_slots and rx_slots bound the batches each routine has in flight per direction, minimum 2. A TX slot holds one
# tun read and its ciphertext, about 1.1 MiB; the default is 8, or workers + 2 if more. An RX slot holds one
# recvmmsg batch, listen.batch * 64 KiB with udp_offloads or * 9 KiB without; the default keeps up to 384 receive
# entries in flight in 4 to 6 slots: 6 slots or 24 MiB at the default listen.batch of 64. Lower them to save memory.
#staged:
# workers: 0
# tx: true
# inline_below: 256
# tx_slots: 8
# rx_slots: 6