linux/Documentation
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
..
ABI treewide: Update email address 2026-01-11 06:09:11 -10:00
accel accel/qaic: Separate DBC_STATE_* definition list 2025-11-10 14:50:06 -07:00
accounting Documentation: taskstats: Reindent payload kinds list 2025-11-10 12:52:12 -07:00
admin-guide net: add net.core.qdisc_max_burst 2026-01-13 10:12:11 +01:00
arch treewide: Update email address 2026-01-11 06:09:11 -10:00
block
bpf docs: bpf: map_array: Specify BPF_MAP_TYPE_PERCPU_ARRAY value size limit 2025-11-25 14:32:00 -08:00
cdrom
core-api treewide: Update email address 2026-01-11 06:09:11 -10:00
cpu-freq
crypto This update includes the following changes: 2025-12-03 11:28:38 -08:00
dev-tools There are no significant series in this small merge. Please see the 2025-12-13 20:55:12 +12:00
devicetree dt-bindings: net: dsa: lantiq,gswip: add MaxLinear R(G)MII slew rate 2026-01-19 10:08:24 -08:00
doc-guide docs: parse-headers.rst: Fix a typo 2025-11-18 09:13:40 -07:00
driver-api treewide: Update email address 2026-01-11 06:09:11 -10:00
edac
fault-injection
fb
features Apart from the usual small churn, we have 2025-12-05 16:30:56 -08:00
filesystems filelock: allow lease_managers to dictate what qualifies as a conflict 2025-12-15 15:20:33 +01:00
firmware_class
firmware-guide Documentation: ACPI: i2c-muxes: fix I2C device references 2025-11-03 17:01:05 +01:00
fpga
gpu Extra drm-misc-next for v6.19-rc1: 2025-12-02 18:09:08 +10:00
hid Documentation: hid-alps: Format DataByte* subsection headings 2025-11-18 17:53:10 +01:00
hwmon hwmon: (DS620) Update broken Datasheet URL in driver documentation 2025-12-18 09:50:27 -08:00
i2c i2c: i801: Add support for Intel Nova Lake-S 2025-12-17 00:28:51 +01:00
iio Documentation: iio: ade9000, adis*, adx*: Convert IIO subsystem cross-references 2025-10-19 11:59:16 +01:00
images
infiniband
input Input: add ABS_SND_PROFILE 2025-12-18 21:34:42 -08:00
isdn
kbuild kbuild: doc: improve KBUILD_BUILD_TIMESTAMP documentation 2025-11-08 12:17:58 +01:00
kernel-hacking
leds leds: lp55xx_common: Enable use without FW_LOADER_USER_HELPER 2025-10-21 10:46:30 +01:00
litmus-tests
livepatch
locking documentation: seqlock: fix the wrong documentation of read_seqbegin_or_lock/need_seqretry 2025-10-21 12:31:56 +02:00
maintainer NFSD: Add a subsystem policy document 2025-11-16 18:20:11 -05:00
mhi
misc-devices Documentation: tps6594-pfsm: Fix macro cross-reference syntax 2025-11-10 12:54:49 -07:00
mm Significant patch series in this pull request: 2025-12-06 14:01:20 -08:00
netlabel
netlink net: Add queue-create operation 2026-01-20 11:58:49 +01:00
networking docs: tls: Enhance TLS resync async process documentation 2026-01-17 15:26:13 -08:00
nvdimm
nvme
PCI Documentation: PCI: Amend error recovery doc with pci_save_state() rules 2025-11-24 16:59:10 -06:00
pcmcia
peci
power More power management updates for 6.19-rc1 2025-12-10 06:29:40 +09:00
process Documentation/process: maintainer-soc: Mark 'make' as commands 2026-01-07 17:47:43 +01:00
RCU doc: Update for SRCU-fast definitions and initialization 2025-11-05 23:58:30 +01:00
rust docs: rust: quick-start: add Debian 13 (Trixie) 2025-11-04 20:21:15 +01:00
scheduler
scsi
security Landlock update for v6.19-rc1 2025-12-06 09:52:41 -08:00
sound ASoC: doc: cs35l56: Update firmware filename description for B0 silicon 2025-11-03 13:09:14 +00:00
sphinx Documentation/sphinx/kernel_feat.py: use class directly 2025-11-21 10:32:30 -07:00
sphinx-static
spi
staging
sunrpc/xdr
target
tee
timers
tools rtla updaets for v6.19: 2025-12-05 09:34:01 -08:00
trace tracing updates for v6.19: 2025-12-05 09:51:37 -08:00
translations treewide: Update email address 2026-01-11 06:09:11 -10:00
usb
userspace-api media: Documentation: mali-c55: Use v4l2-isp version identifier 2026-01-06 10:14:13 +01:00
virt hyperv-next for v6.19 2025-12-09 06:10:17 +09:00
w1 docs: w1: fix w1-netlink invalid URL 2025-11-05 11:23:39 -07:00
watchdog
wmi Merge branch 'fixes' of into for-next 2025-12-01 11:53:59 +02:00
.gitignore
.renames.txt
atomic_bitops.txt
atomic_t.txt
Changes
CodingStyle
conf.py
docutils.conf
index.rst
Kconfig docs: move get_abi.py to tools/docs 2025-10-28 16:01:20 -06:00
Makefile docs: makefile: move rustdoc check to the build wrapper 2025-11-29 08:42:53 -07:00
memory-barriers.txt memory-barriers.txt: Sort wait_event* and wait_on_bit* list alphabetically 2025-11-08 19:02:26 -08:00
SubmittingPatches
subsystem-apis.rst