linux/include/uapi/linux
Daniel Borkmann 4810389605 netkit: Add single device mode for netkit
Add a single device mode for netkit instead of netkit pairs. The primary
target for the paired devices is to connect network namespaces, of course,
and support has been implemented in projects like Cilium [0]. For the rxq
leasing the plan is to support two main scenarios related to single device
mode:

* For the use-case of io_uring zero-copy, the control plane can either
  set up a netkit pair where the peer device can perform rxq leasing which
  is then tied to the lifetime of the peer device, or the control plane
  can use a regular netkit pair to connect the hostns to a Pod/container
  and dynamically add/remove rxq leasing through a single device without
  having to interrupt the device pair. In the case of io_uring, the memory
  pool is used as skb non-linear pages, and thus the skb will go its way
  through the regular stack into netkit. Things like the netkit policy when
  no BPF is attached or skb scrubbing etc apply as-is in case the paired
  devices are used, or if the backend memory is tied to the single device
  and traffic goes through a paired device.

* For the use-case of AF_XDP, the control plane needs to use netkit in the
  single device mode. The single device mode currently enforces only a
  pass policy when no BPF is attached, and does not yet support BPF link
  attachments for AF_XDP. skbs sent to that device get dropped at the
  moment. Given AF_XDP operates at a lower layer of the stack tying this
  to the netkit pair did not make sense. In future, the plan is to allow
  BPF at the XDP layer which can: i) process traffic coming from the AF_XDP
  application (e.g. QEMU with AF_XDP backend) to filter egress traffic or
  to push selected egress traffic up to the single netkit device to the
  local stack (e.g. DHCP requests), and ii) vice-versa skbs sent to the
  single netkit into the AF_XDP application (e.g. DHCP replies). Also,
  the control-plane can dynamically manage rxq leasing for the single
  netkit device without having to interrupt (e.g. down/up cycle) the main
  netkit pair for the Pod which has traffic going in and out.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Co-developed-by: David Wei <dw@davidwei.uk>
Signed-off-by: David Wei <dw@davidwei.uk>
Reviewed-by: Jordan Rife <jordan@jrife.io>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://docs.cilium.io/en/stable/operations/performance/tuning/#netkit-device-mode [0]
Link: https://patch.msgid.link/20260402231031.447597-11-daniel@iogearbox.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-04-09 18:21:47 -07:00
..
android binder: fix trivial typo in uapi header 2025-12-29 11:58:52 +01:00
byteorder
caif
can
cifs
counter
dvb
genwqe
hdlc
hsi
iio
io_uring io_uring/bpf_filter: pass in expected filter payload size 2026-02-16 15:56:31 -07:00
isdn
media media: uapi: mali-c55-config: Remove version identifier 2026-01-06 10:14:13 +01:00
misc
mmc
netfilter netfilter: nf_tables: add netlink policy based cap on registers 2026-04-08 07:51:31 +02:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
sched
spi
sunrpc
surface_aggregator
tc_act
tc_ematch
usb
a.out.h
acct.h
acrn.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
amt.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
aspeed-p2a-ctrl.h
aspeed-video.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
batadv_packet.h
batman_adv.h
baycom.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
bits.h
blk-crypto.h
blkdev.h
blkpg.h
blktrace_api.h
blkzoned.h block: make the new blkzoned UAPI constants discoverable 2026-01-21 07:47:44 -07:00
bpf.h bpf: add new BPF_CGROUP_ITER_CHILDREN control option 2026-01-27 09:05:54 -08:00
bpf_common.h
bpf_perf_event.h
bpqether.h
bsg.h
bt-bmc.h
btf.h
btrfs.h btrfs: add definitions and constants for remap-tree 2026-02-03 07:54:02 +01:00
btrfs_tree.h btrfs: allow mounting filesystems with remap-tree incompat flag 2026-02-03 07:54:35 +01:00
cachefiles.h
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
ccs.h
cdrom.h
cec-funcs.h
cec.h
cfm_bridge.h
cgroupstats.h
chio.h
close_range.h
cn_proc.h
coda.h
coff.h
comedi.h comedi: Fix getting range information for subdevices 16 to 255 2026-01-16 16:42:15 +01:00
connector.h
const.h
coredump.h
coresight-stm.h
counter.h
cramfs_fs.h
cryptouser.h
cuda.h
cxl_mem.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
dev_energymodel.h PM: EM: Add dump to get-perf-domains in the EM YNL spec 2026-01-09 21:44:46 +01:00
devlink.h devlink: Add resource scope filtering to resource dump 2026-04-08 19:55:39 -07:00
dlm.h
dlm_device.h
dlm_plock.h
dlmconstants.h
dm-ioctl.h
dm-log-userspace.h
dma-buf.h dma-buf: Include ioctl.h in UAPI header 2026-03-03 08:55:39 +01:00
dma-heap.h
dns_resolver.h
dpll.h dpll: add frequency monitoring to netlink spec 2026-04-03 16:48:01 -07:00
dqblk_xfs.h
dw100.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h riscv/ptrace: expose riscv CFI status and state via ptrace and in core files 2026-01-29 02:38:40 -07:00
errno.h
errqueue.h
erspan.h
ethtool.h net: ethtool: Update doc for tunable 2026-03-05 16:26:52 +01:00
ethtool_netlink.h
ethtool_netlink_generated.h net: ethtool: add ethtool COALESCE_RX_CQE_FRAMES/NSECS 2026-03-18 20:01:10 -07:00
eventfd.h
eventpoll.h
exfat.h
ext4.h ext4: fix ext4_tune_sb_params padding 2026-01-18 11:22:53 -05:00
f2fs.h
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
fou.h
fpga-dfl.h
fs.h fs: add FS_XFLAG_VERITY for fs-verity files 2026-01-29 16:00:57 +01:00
fscrypt.h
fsi.h
fsl_hypervisor.h
fsl_mc.h
fsmap.h
fsverity.h
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h
gfs2_ondisk.h
gpib.h
gpib_ioctl.h
gpio.h
gsmmux.h
gtp.h
handshake.h
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h hyper-v: Mark inner union in hv_kvp_exchg_msg_value as packed 2026-01-16 15:00:54 -07:00
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
idxd.h dmaengine: idxd: uapi: use UAPI types 2025-12-23 12:29:14 +05:30
if.h
if_addr.h
if_addrlabel.h
if_alg.h crypto: af_alg - Annotate struct af_alg_iv with __counted_by 2026-01-14 14:43:18 -08:00
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_hippi.h
if_infiniband.h
if_link.h netkit: Add single device mode for netkit 2026-04-09 18:21:47 -07:00
if_ltalk.h
if_macsec.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h pppoe: remove kernel-mode relay support 2026-02-26 11:41:00 +01:00
if_slip.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
if_x25.h
if_xdp.h
ife.h
igmp.h
ila.h
in.h
in6.h
in_route.h
inet_diag.h inet_diag: report delayed ack timer information 2026-03-06 16:32:26 -08:00
inotify.h
input-event-codes.h Input: add ABS_SND_PROFILE 2025-12-18 21:34:42 -08:00
input.h
io_uring.h io_uring: correct comment for IORING_SETUP_TASKRUN_FLAG 2026-02-28 04:56:20 -07:00
ioam6.h
ioam6_genl.h
ioam6_iptunnel.h
ioctl.h
iommufd.h iommufd: Introduce data struct for AMD nested domain allocation 2026-01-18 10:56:12 +01:00
ioprio.h
ip.h
ip6_tunnel.h
ip_vs.h
ipc.h
ipmi.h
ipmi_bmc.h
ipmi_msgdefs.h
ipmi_ssif_bmc.h
ipsec.h
ipv6.h
ipv6_route.h
irqnr.h
iso_fs.h
isst_if.h
ivtv.h
ivtvfb.h
jffs2.h
joystick.h
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h
kfd_ioctl.h drm/amdkfd: add extended capabilities to device snapshot 2026-01-27 18:13:28 -05:00
kfd_sysfs.h
kvm.h KVM generic changes for 7.0 2026-03-11 18:01:55 +01:00
kvm_para.h
l2tp.h
landlock.h landlock: Minor reword of docs for TCP access rights 2026-02-06 17:54:40 +01:00
libc-compat.h
limits.h
lirc.h
liveupdate.h
llc.h
loadpin.h
lockd_netlink.h
loop.h
lp.h
lsm.h
lwtunnel.h
magic.h fs: add immutable rootfs 2026-01-12 16:52:09 +01:00
major.h
map_benchmark.h
map_to_7segment.h
map_to_14segment.h
matroxfb.h
max2175.h
mctp.h
mdio.h
media-bus-format.h
media.h
mei.h
mei_uuid.h
membarrier.h
memfd.h
mempolicy.h mm/mempolicy: fix mpol_rebind_nodemask() for MPOL_F_NUMA_BALANCING 2026-01-26 20:02:32 -08:00
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mount.h mount: add OPEN_TREE_NAMESPACE 2026-01-16 19:21:40 +01:00
mpls.h
mpls_iptunnel.h
mptcp.h
mptcp_pm.h mptcp: fix kdoc warnings 2026-02-06 20:35:06 -08:00
mqueue.h
mroute.h
mroute6.h
mrp_bridge.h
msdos_fs.h
msg.h
mshv.h mshv: Add SMT_ENABLED_GUEST partition creation flag 2026-02-18 23:54:37 +00:00
mtio.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h
neighbour.h
net.h
net_dropmon.h
net_namespace.h
net_shaper.h
net_tstamp.h
netconf.h
netdev.h net: Add queue-create operation 2026-04-09 18:21:45 -07:00
netdevice.h
netfilter.h
netfilter_arp.h
netfilter_bridge.h include: uapi: netfilter_bridge.h: Cover for musl libc 2026-02-17 15:04:20 +01:00
netfilter_ipv4.h netfilter: uapi: Use UAPI definition of INT_MAX and INT_MIN 2026-01-17 15:24:05 -08:00
netfilter_ipv6.h netfilter: uapi: Use UAPI definition of INT_MAX and INT_MIN 2026-01-17 15:24:05 -08:00
netlink.h
netlink_diag.h
netrom.h
nexthop.h
nfc.h NFC: fix header file kernel-doc warnings 2026-02-27 19:21:56 -08:00
nfs.h NFS: NFSERR_INVAL is not defined by NFSv2 2026-01-26 10:10:58 -05:00
nfs2.h
nfs3.h
nfs4.h
nfs4_mount.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfsacl.h
nfsd_netlink.h nfsd: add controls to set the minimum number of threads per pool 2026-01-28 10:15:42 -05:00
nilfs2_api.h nilfs2: fix missing struct keywords in nilfs2_api.h kernel-doc 2025-12-22 15:45:29 -08:00
nilfs2_ondisk.h nilfs2: convert nilfs_super_block to kernel-doc 2025-12-22 15:45:29 -08:00
nitro_enclaves.h
nl80211-vnd-intel.h
nl80211.h wifi: nl80211: Add a notification to notify NAN channel evacuation 2026-03-25 20:56:55 +01:00
npcm-video.h
nsfs.h
nsm.h
ntsync.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openat2.h
openvswitch.h net: openvswitch: clean up some kernel-doc warnings 2026-03-04 17:52:46 -08:00
ovpn.h ovpn: add support for asymmetric peer IDs 2026-03-17 11:09:05 +01:00
packet_diag.h
papr_pdsm.h
param.h
parport.h
patchkey.h
pci.h PCI: trace: Add generic RAS tracepoint for hotplug event 2025-12-23 16:05:56 -06:00
pci_regs.h PCI: Correct PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 value 2026-02-27 10:24:25 -06:00
pcitest.h misc: pci_endpoint_test: Add BAR subrange mapping test case 2026-01-29 17:42:29 -06:00
perf_event.h Performance events changes for v7.0: 2026-02-10 12:00:46 -08:00
personality.h
pfkeyv2.h
pfrut.h
pg.h
phantom.h
phonet.h
pidfd.h
pkt_cls.h
pkt_sched.h net/sched: sch_cake: share shaper state across sub-instances of cake_mq 2026-01-13 11:54:29 +01:00
pktcdvd.h
pmu.h
poll.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
ppdev.h
ppp-comp.h
ppp-ioctl.h
ppp_defs.h
pps.h
pps_gen.h
pr.h
prctl.h RISC-V updates for v7.0 2026-02-12 19:17:44 -08:00
psample.h
psci.h
psp-dbc.h
psp-sev.h
psp-sfs.h
psp.h
ptp_clock.h
ptrace.h
pwm.h
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
rds.h
reboot.h
remoteproc_cdev.h
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
rkisp1-config.h
romfs_fs.h
rose.h
route.h
rpl.h
rpl_iptunnel.h
rpmsg.h
rpmsg_types.h
rseq.h rseq: slice ext: Ensure rseq feature size differs from original rseq size 2026-02-23 11:19:19 +01:00
rtc.h
rtnetlink.h
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h
seccomp.h
securebits.h
sed-opal.h
seg6.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h seg6: add per-route tunnel source address 2026-03-26 18:45:29 -07:00
seg6_local.h
selinux_netlink.h
sem.h
serial.h
serial_core.h
serial_reg.h
serio.h
sev-guest.h
shm.h ipc/shm: uapi: remove dependency on libc 2026-01-26 19:07:10 -08:00
signal.h
signalfd.h
smc.h
smc_diag.h
smiapp.h
snmp.h
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h compiler_types.h: Attributes: Add __counted_by_ptr macro 2026-01-17 11:00:28 -08:00
stm.h
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h mm.git review status for linus..mm-stable 2026-02-12 11:32:37 -08:00
sysinfo.h
target_core_user.h
taskstats.h delayacct: fix uapi timespec64 definition 2026-02-08 00:13:32 -08:00
tcp.h tcp: accecn: add tcpi_ecn_mode and tcpi_option2 in tcp_info 2026-02-03 15:13:25 +01:00
tcp_metrics.h
tdx-guest.h
tee.h
termios.h
thermal.h
thp7312.h
time.h
time_types.h
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
tipc_netlink.h
tipc_sockets_diag.h
tls.h
toshiba.h
tps6594_pfsm.h
trace_mmap.h
tty.h
tty_flags.h
typelimits.h uapi: add INT_MAX and INT_MIN constants 2026-01-17 15:24:05 -08:00
types.h
ublk_cmd.h ublk: add UBLK_F_NO_AUTO_PART_SCAN feature flag 2026-01-31 06:36:41 -07:00
udf_fs_i.h
udmabuf.h
udp.h udp: Remove UDPLITE_SEND_CSCOV and UDPLITE_RECV_CSCOV. 2026-03-13 18:57:45 -07:00
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
um_timetravel.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
user_events.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h media: v4l2-ctrls: Add hevc_ext_sps_[ls]t_rps controls 2026-01-21 14:43:09 +01:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h
vbox_err.h
vbox_vmmdev_types.h virt: vbox: uapi: Mark inner unions in packed structs as packed 2026-01-16 15:00:54 -07:00
vboxguest.h
vdpa.h
vduse.h vduse: avoid adding implicit padding 2026-02-09 12:21:32 -05:00
vesa.h
veth.h
vfio.h iommu: Introduce pci_dev_reset_iommu_prepare/done() 2026-01-10 10:26:44 +01:00
vfio_ccw.h
vfio_zdev.h
vhost.h
vhost_types.h
videodev2.h media: v4l2-ctrls: Add hevc_ext_sps_[ls]t_rps controls 2026-01-21 14:43:09 +01:00
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_bt.h
virtio_config.h
virtio_console.h
virtio_crypto.h
virtio_fs.h
virtio_gpio.h
virtio_gpu.h
virtio_i2c.h
virtio_ids.h
virtio_input.h
virtio_iommu.h
virtio_mem.h
virtio_mmio.h
virtio_net.h
virtio_pci.h
virtio_pcidev.h
virtio_pmem.h
virtio_ring.h virtio: uapi: avoid usage of libc types 2025-12-26 15:00:00 -05:00
virtio_rng.h
virtio_rtc.h
virtio_scmi.h
virtio_scsi.h
virtio_snd.h
virtio_spi.h
virtio_types.h
virtio_vsock.h
vm_sockets.h
vm_sockets_diag.h
vmclock-abi.h ptp: vmclock: support device notifications 2026-02-02 18:06:00 -08:00
vmcore.h
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
watch_queue.h
watchdog.h
wireguard.h
wireless.h
wmi.h
wwan.h
x25.h
xattr.h get rid of bogus __user in struct xattr_args::value 2025-12-24 13:52:50 +01:00
xdp_diag.h
xfrm.h
xilinx-v4l2-controls.h
zorro.h
zorro_ids.h