mirror-linux/tools/include/uapi/linux
Daniel Borkmann a5546e18f7 net: Add queue-create operation
Add a ynl netdev family operation called queue-create that creates a
new queue on a netdevice:

      name: queue-create
      attribute-set: queue
      flags: [admin-perm]
      do:
        request:
          attributes:
            - ifindex
            - type
            - lease
        reply: &queue-create-op
          attributes:
            - id

This is a generic operation such that it can be extended for various
use cases in future. Right now it is mandatory to specify ifindex,
the queue type which is enforced to rx and a lease. The newly created
queue id is returned to the caller.

A queue from a virtual device can have a lease which refers to another
queue from a physical device. This is useful for memory providers
and AF_XDP operations which take an ifindex and queue id to allow
applications to bind against virtual devices in containers. The lease
couples both queues together and allows to proxy the operations from
a virtual device in a container to the physical device.

In future, the nested lease attribute can be lifted and made optional
for other use-cases such as dynamic queue creation for physical
netdevs. The lack of lease and the specification of the physical
device as an ifindex will imply that we need a real queue to be
allocated. Similarly, the queue type enforcement to rx can then be
lifted as well to support tx.

An early implementation had only driver-specific integration [0], but
in order for other virtual devices to reuse, it makes sense to have
this as a generic API in core net.

For leasing queues, the virtual netdev must have real_num_rx_queue
less than num_rx_queues at the time of calling queue-create. The
queue-type must be rx as only rx queues are supported for leasing
for now. We also enforce that the queue-create ifindex must point
to a virtual device, and that the nested lease attribute's ifindex
must point to a physical device. The nested lease attribute set
contains a netns-id attribute which is currently only intended for
dumping as part of the queue-get operation. Also, it is modeled as
an s32 type similarly as done elsewhere in the stack.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Co-developed-by: David Wei <dw@davidwei.uk>
Signed-off-by: David Wei <dw@davidwei.uk>
Link: https://bpfconf.ebpf.io/bpfconf2025/bpfconf2025_material/lsfmmbpf_2025_netkit_borkmann.pdf [0]
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://patch.msgid.link/20260115082603.219152-2-daniel@iogearbox.net
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-01-20 11:58:49 +01:00
..
tc_act
bits.h uapi: bitops: use UAPI-safe variant of BITS_PER_LONG again (2) 2025-07-08 10:23:13 -04:00
bpf.h Networking changes for 6.19. 2025-12-03 17:24:33 -08:00
bpf_common.h
bpf_perf_event.h
btf.h docs/bpf: Document the semantics of BTF tags with kind_flag 2025-02-05 16:17:59 -08:00
const.h treewide: fix typo 'unsigned __init128' -> 'unsigned __int128' 2025-03-05 12:00:03 -05:00
coredump.h tools: add coredump.h header 2025-06-12 14:00:32 +02:00
elf.h tools/include: Add uapi/linux/elf.h 2025-03-03 20:00:12 +01:00
erspan.h
fadvise.h
fanotify.h selftests/fs/mount-notify: build with tools include dir 2025-05-12 11:40:12 +02:00
filter.h
fs.h tools headers UAPI: sync linux/fs.h with the kernel sources 2025-05-11 17:48:16 -07:00
fscrypt.h tools headers: Update the fs headers with the kernel sources 2025-06-16 14:05:10 -03:00
genetlink.h tools include: Add headers to make tools builds more hermetic 2025-10-02 15:13:19 -03:00
hw_breakpoint.h
if_addr.h tools include: Add headers to make tools builds more hermetic 2025-10-02 15:13:19 -03:00
if_link.h netkit: Allow for configuring needed_{head,tail}room 2025-01-06 09:48:49 +01:00
if_tun.h
if_xdp.h net: xsk: introduce XDP_MAX_TX_SKB_BUDGET setsockopt 2025-07-10 14:48:29 +02:00
in.h tools headers: Update the socket headers with the kernel sources 2025-04-10 09:28:24 -07:00
io_uring.h
kcmp.h
kvm.h tools headers: Sync UAPI KVM headers with kernel sources 2025-12-24 11:42:13 -08:00
memfd.h selftests/mm: fix additional build errors for selftests 2024-04-25 20:56:42 -07:00
mman.h mm: add MAP_DROPPABLE for designating always lazily freeable mappings 2024-07-19 20:22:12 +02:00
mount.h selftests/fs/statmount: build with tools include dir 2025-05-12 11:40:12 +02:00
neighbour.h tools include: Add headers to make tools builds more hermetic 2025-10-02 15:13:19 -03:00
netdev.h net: Add queue-create operation 2026-01-20 11:58:49 +01:00
netfilter.h tools include: Add headers to make tools builds more hermetic 2025-10-02 15:13:19 -03:00
netfilter_arp.h tools include: Add headers to make tools builds more hermetic 2025-10-02 15:13:19 -03:00
netlink.h
nsfs.h nsfs: update tools header 2025-11-03 17:41:18 +01:00
perf_event.h treewide: Update email address 2026-01-11 06:09:11 -10:00
pkt_cls.h
pkt_sched.h
prctl.h Updates for the generic entry code: 2025-07-29 15:14:29 -07:00
rtnetlink.h tools include: Add headers to make tools builds more hermetic 2025-10-02 15:13:19 -03:00
seccomp.h
seg6.h
seg6_local.h
stat.h tools headers: Update the fs headers with the kernel sources 2025-06-16 14:05:10 -03:00
stddef.h stddef: make __struct_group() UAPI C++-friendly 2024-12-20 09:05:53 -08:00
tcp.h
tls.h
types.h tools/include: make uapi/linux/types.h usable from assembly 2025-04-06 12:55:31 -07:00
userfaultfd.h selftests/mm: fix additional build errors for selftests 2024-04-25 20:56:42 -07:00