mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
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_queues
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 optional and can specify a
netns-id relative to the caller's netns. It requires cap_net_admin
and if the netns-id attribute is not specified, the lease ifindex
will be retrieved from the current netns. 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>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://bpfconf.ebpf.io/bpfconf2025/bpfconf2025_material/lsfmmbpf_2025_netkit_borkmann.pdf [0]
Link: https://patch.msgid.link/20260402231031.447597-2-daniel@iogearbox.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
857 lines
24 KiB
YAML
857 lines
24 KiB
YAML
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
|
|
---
|
|
name: netdev
|
|
|
|
doc: >-
|
|
netdev configuration over generic netlink.
|
|
|
|
definitions:
|
|
-
|
|
type: flags
|
|
name: xdp-act
|
|
render-max: true
|
|
entries:
|
|
-
|
|
name: basic
|
|
doc: >-
|
|
XDP features set supported by all drivers
|
|
(XDP_ABORTED, XDP_DROP, XDP_PASS, XDP_TX)
|
|
-
|
|
name: redirect
|
|
doc: >-
|
|
The netdev supports XDP_REDIRECT
|
|
-
|
|
name: ndo-xmit
|
|
doc: >-
|
|
This feature informs if netdev implements ndo_xdp_xmit callback.
|
|
-
|
|
name: xsk-zerocopy
|
|
doc: >-
|
|
This feature informs if netdev supports AF_XDP in zero copy mode.
|
|
-
|
|
name: hw-offload
|
|
doc: >-
|
|
This feature informs if netdev supports XDP hw offloading.
|
|
-
|
|
name: rx-sg
|
|
doc: >-
|
|
This feature informs if netdev implements non-linear XDP buffer
|
|
support in the driver napi callback.
|
|
-
|
|
name: ndo-xmit-sg
|
|
doc: >-
|
|
This feature informs if netdev implements non-linear XDP buffer
|
|
support in ndo_xdp_xmit callback.
|
|
-
|
|
type: flags
|
|
name: xdp-rx-metadata
|
|
entries:
|
|
-
|
|
name: timestamp
|
|
doc: |
|
|
Device is capable of exposing receive HW timestamp via
|
|
bpf_xdp_metadata_rx_timestamp().
|
|
-
|
|
name: hash
|
|
doc: |
|
|
Device is capable of exposing receive packet hash via
|
|
bpf_xdp_metadata_rx_hash().
|
|
-
|
|
name: vlan-tag
|
|
doc: |
|
|
Device is capable of exposing receive packet VLAN tag via
|
|
bpf_xdp_metadata_rx_vlan_tag().
|
|
-
|
|
type: flags
|
|
name: xsk-flags
|
|
entries:
|
|
-
|
|
name: tx-timestamp
|
|
doc: >-
|
|
HW timestamping egress packets is supported by the driver.
|
|
-
|
|
name: tx-checksum
|
|
doc: >-
|
|
L3 checksum HW offload is supported by the driver.
|
|
-
|
|
name: tx-launch-time-fifo
|
|
doc: >-
|
|
Launch time HW offload is supported by the driver.
|
|
-
|
|
name: queue-type
|
|
type: enum
|
|
entries: [rx, tx]
|
|
-
|
|
name: qstats-scope
|
|
type: flags
|
|
entries: [queue]
|
|
-
|
|
name: napi-threaded
|
|
type: enum
|
|
entries: [disabled, enabled, busy-poll]
|
|
|
|
attribute-sets:
|
|
-
|
|
name: dev
|
|
attributes:
|
|
-
|
|
name: ifindex
|
|
doc: netdev ifindex
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
-
|
|
name: pad
|
|
type: pad
|
|
-
|
|
name: xdp-features
|
|
doc: Bitmask of enabled xdp-features.
|
|
type: u64
|
|
enum: xdp-act
|
|
-
|
|
name: xdp-zc-max-segs
|
|
doc: max fragment count supported by ZC driver
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
-
|
|
name: xdp-rx-metadata-features
|
|
doc: Bitmask of supported XDP receive metadata features.
|
|
See Documentation/networking/xdp-rx-metadata.rst for more details.
|
|
type: u64
|
|
enum: xdp-rx-metadata
|
|
-
|
|
name: xsk-features
|
|
doc: Bitmask of enabled AF_XDP features.
|
|
type: u64
|
|
enum: xsk-flags
|
|
-
|
|
name: io-uring-provider-info
|
|
attributes: []
|
|
-
|
|
name: page-pool
|
|
attributes:
|
|
-
|
|
name: id
|
|
doc: Unique ID of a Page Pool instance.
|
|
type: uint
|
|
checks:
|
|
min: 1
|
|
max: u32-max
|
|
-
|
|
name: ifindex
|
|
doc: |
|
|
ifindex of the netdev to which the pool belongs.
|
|
May not be reported if the page pool was allocated for a netdev
|
|
which got destroyed already (page pools may outlast their netdevs
|
|
because they wait for all memory to be returned).
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
max: s32-max
|
|
-
|
|
name: napi-id
|
|
doc: Id of NAPI using this Page Pool instance.
|
|
type: uint
|
|
checks:
|
|
min: 1
|
|
max: u32-max
|
|
-
|
|
name: inflight
|
|
type: uint
|
|
doc: |
|
|
Number of outstanding references to this page pool (allocated
|
|
but yet to be freed pages). Allocated pages may be held in
|
|
socket receive queues, driver receive ring, page pool recycling
|
|
ring, the page pool cache, etc.
|
|
-
|
|
name: inflight-mem
|
|
type: uint
|
|
doc: |
|
|
Amount of memory held by inflight pages.
|
|
-
|
|
name: detach-time
|
|
type: uint
|
|
doc: |
|
|
Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
|
|
the driver. Once detached Page Pool can no longer be used to
|
|
allocate memory.
|
|
Page Pools wait for all the memory allocated from them to be freed
|
|
before truly disappearing. "Detached" Page Pools cannot be
|
|
"re-attached", they are just waiting to disappear.
|
|
Attribute is absent if Page Pool has not been detached, and
|
|
can still be used to allocate new memory.
|
|
-
|
|
name: dmabuf
|
|
doc: ID of the dmabuf this page-pool is attached to.
|
|
type: u32
|
|
-
|
|
name: io-uring
|
|
doc: io-uring memory provider information.
|
|
type: nest
|
|
nested-attributes: io-uring-provider-info
|
|
-
|
|
name: page-pool-info
|
|
subset-of: page-pool
|
|
attributes:
|
|
-
|
|
name: id
|
|
-
|
|
name: ifindex
|
|
-
|
|
name: page-pool-stats
|
|
doc: |
|
|
Page pool statistics, see docs for struct page_pool_stats
|
|
for information about individual statistics.
|
|
attributes:
|
|
-
|
|
name: info
|
|
doc: Page pool identifying information.
|
|
type: nest
|
|
nested-attributes: page-pool-info
|
|
-
|
|
name: alloc-fast
|
|
type: uint
|
|
value: 8 # reserve some attr ids in case we need more metadata later
|
|
-
|
|
name: alloc-slow
|
|
type: uint
|
|
-
|
|
name: alloc-slow-high-order
|
|
type: uint
|
|
-
|
|
name: alloc-empty
|
|
type: uint
|
|
-
|
|
name: alloc-refill
|
|
type: uint
|
|
-
|
|
name: alloc-waive
|
|
type: uint
|
|
-
|
|
name: recycle-cached
|
|
type: uint
|
|
-
|
|
name: recycle-cache-full
|
|
type: uint
|
|
-
|
|
name: recycle-ring
|
|
type: uint
|
|
-
|
|
name: recycle-ring-full
|
|
type: uint
|
|
-
|
|
name: recycle-released-refcnt
|
|
type: uint
|
|
|
|
-
|
|
name: napi
|
|
attributes:
|
|
-
|
|
name: ifindex
|
|
doc: ifindex of the netdevice to which NAPI instance belongs.
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
-
|
|
name: id
|
|
doc: ID of the NAPI instance.
|
|
type: u32
|
|
-
|
|
name: irq
|
|
doc: The associated interrupt vector number for the napi
|
|
type: u32
|
|
-
|
|
name: pid
|
|
doc: PID of the napi thread, if NAPI is configured to operate in
|
|
threaded mode. If NAPI is not in threaded mode (i.e. uses normal
|
|
softirq context), the attribute will be absent.
|
|
type: u32
|
|
-
|
|
name: defer-hard-irqs
|
|
doc: The number of consecutive empty polls before IRQ deferral ends
|
|
and hardware IRQs are re-enabled.
|
|
type: u32
|
|
checks:
|
|
max: s32-max
|
|
-
|
|
name: gro-flush-timeout
|
|
doc: The timeout, in nanoseconds, of when to trigger the NAPI watchdog
|
|
timer which schedules NAPI processing. Additionally, a non-zero
|
|
value will also prevent GRO from flushing recent super-frames at
|
|
the end of a NAPI cycle. This may add receive latency in exchange
|
|
for reducing the number of frames processed by the network stack.
|
|
type: uint
|
|
-
|
|
name: irq-suspend-timeout
|
|
doc: The timeout, in nanoseconds, of how long to suspend irq
|
|
processing, if event polling finds events
|
|
type: uint
|
|
-
|
|
name: threaded
|
|
doc: Whether the NAPI is configured to operate in threaded polling
|
|
mode. If this is set to enabled then the NAPI context operates
|
|
in threaded polling mode. If this is set to busy-poll, then the
|
|
threaded polling mode also busy polls.
|
|
type: u32
|
|
enum: napi-threaded
|
|
-
|
|
name: xsk-info
|
|
attributes: []
|
|
-
|
|
name: queue
|
|
attributes:
|
|
-
|
|
name: id
|
|
doc: Queue index; most queue types are indexed like a C array, with
|
|
indexes starting at 0 and ending at queue count - 1. Queue indexes
|
|
are scoped to an interface and queue type.
|
|
type: u32
|
|
-
|
|
name: ifindex
|
|
doc: ifindex of the netdevice to which the queue belongs.
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
-
|
|
name: type
|
|
doc: Queue type as rx, tx. Each queue type defines a separate ID space.
|
|
XDP TX queues allocated in the kernel are not linked to NAPIs and
|
|
thus not listed. AF_XDP queues will have more information set in
|
|
the xsk attribute.
|
|
type: u32
|
|
enum: queue-type
|
|
-
|
|
name: napi-id
|
|
doc: ID of the NAPI instance which services this queue.
|
|
type: u32
|
|
-
|
|
name: dmabuf
|
|
doc: ID of the dmabuf attached to this queue, if any.
|
|
type: u32
|
|
-
|
|
name: io-uring
|
|
doc: io_uring memory provider information.
|
|
type: nest
|
|
nested-attributes: io-uring-provider-info
|
|
-
|
|
name: xsk
|
|
doc: XSK information for this queue, if any.
|
|
type: nest
|
|
nested-attributes: xsk-info
|
|
-
|
|
name: lease
|
|
doc: |
|
|
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.
|
|
type: nest
|
|
nested-attributes: lease
|
|
-
|
|
name: qstats
|
|
doc: |
|
|
Get device statistics, scoped to a device or a queue.
|
|
These statistics extend (and partially duplicate) statistics available
|
|
in struct rtnl_link_stats64.
|
|
Value of the `scope` attribute determines how statistics are
|
|
aggregated. When aggregated for the entire device the statistics
|
|
represent the total number of events since last explicit reset of
|
|
the device (i.e. not a reconfiguration like changing queue count).
|
|
When reported per-queue, however, the statistics may not add
|
|
up to the total number of events, will only be reported for currently
|
|
active objects, and will likely report the number of events since last
|
|
reconfiguration.
|
|
attributes:
|
|
-
|
|
name: ifindex
|
|
doc: ifindex of the netdevice to which stats belong.
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
-
|
|
name: queue-type
|
|
doc: Queue type as rx, tx, for queue-id.
|
|
type: u32
|
|
enum: queue-type
|
|
-
|
|
name: queue-id
|
|
doc: Queue ID, if stats are scoped to a single queue instance.
|
|
type: u32
|
|
-
|
|
name: scope
|
|
doc: |
|
|
What object type should be used to iterate over the stats.
|
|
type: uint
|
|
enum: qstats-scope
|
|
-
|
|
name: rx-packets
|
|
doc: |
|
|
Number of wire packets successfully received and passed to the stack.
|
|
For drivers supporting XDP, XDP is considered the first layer
|
|
of the stack, so packets consumed by XDP are still counted here.
|
|
type: uint
|
|
value: 8 # reserve some attr ids in case we need more metadata later
|
|
-
|
|
name: rx-bytes
|
|
doc: Successfully received bytes, see `rx-packets`.
|
|
type: uint
|
|
-
|
|
name: tx-packets
|
|
doc: |
|
|
Number of wire packets successfully sent. Packet is considered to be
|
|
successfully sent once it is in device memory (usually this means
|
|
the device has issued a DMA completion for the packet).
|
|
type: uint
|
|
-
|
|
name: tx-bytes
|
|
doc: Successfully sent bytes, see `tx-packets`.
|
|
type: uint
|
|
-
|
|
name: rx-alloc-fail
|
|
doc: |
|
|
Number of times skb or buffer allocation failed on the Rx datapath.
|
|
Allocation failure may, or may not result in a packet drop, depending
|
|
on driver implementation and whether system recovers quickly.
|
|
type: uint
|
|
-
|
|
name: rx-hw-drops
|
|
doc: |
|
|
Number of all packets which entered the device, but never left it,
|
|
including but not limited to: packets dropped due to lack of buffer
|
|
space, processing errors, explicit or implicit policies and packet
|
|
filters.
|
|
type: uint
|
|
-
|
|
name: rx-hw-drop-overruns
|
|
doc: |
|
|
Number of packets dropped due to transient lack of resources, such as
|
|
buffer space, host descriptors etc.
|
|
type: uint
|
|
-
|
|
name: rx-csum-complete
|
|
doc: Number of packets that were marked as CHECKSUM_COMPLETE.
|
|
type: uint
|
|
-
|
|
name: rx-csum-unnecessary
|
|
doc: Number of packets that were marked as CHECKSUM_UNNECESSARY.
|
|
type: uint
|
|
-
|
|
name: rx-csum-none
|
|
doc: Number of packets that were not checksummed by device.
|
|
type: uint
|
|
-
|
|
name: rx-csum-bad
|
|
doc: |
|
|
Number of packets with bad checksum. The packets are not discarded,
|
|
but still delivered to the stack.
|
|
type: uint
|
|
-
|
|
name: rx-hw-gro-packets
|
|
doc: |
|
|
Number of packets that were coalesced from smaller packets by the
|
|
device. Counts only packets coalesced with the HW-GRO netdevice
|
|
feature, LRO-coalesced packets are not counted.
|
|
type: uint
|
|
-
|
|
name: rx-hw-gro-bytes
|
|
doc: See `rx-hw-gro-packets`.
|
|
type: uint
|
|
-
|
|
name: rx-hw-gro-wire-packets
|
|
doc: |
|
|
Number of packets that were coalesced to bigger packetss with the
|
|
HW-GRO netdevice feature. LRO-coalesced packets are not counted.
|
|
type: uint
|
|
-
|
|
name: rx-hw-gro-wire-bytes
|
|
doc: See `rx-hw-gro-wire-packets`.
|
|
type: uint
|
|
-
|
|
name: rx-hw-drop-ratelimits
|
|
doc: |
|
|
Number of the packets dropped by the device due to the received
|
|
packets bitrate exceeding the device rate limit.
|
|
type: uint
|
|
-
|
|
name: tx-hw-drops
|
|
doc: |
|
|
Number of packets that arrived at the device but never left it,
|
|
encompassing packets dropped for reasons such as processing errors, as
|
|
well as those affected by explicitly defined policies and packet
|
|
filtering criteria.
|
|
type: uint
|
|
-
|
|
name: tx-hw-drop-errors
|
|
doc: Number of packets dropped because they were invalid or malformed.
|
|
type: uint
|
|
-
|
|
name: tx-csum-none
|
|
doc: |
|
|
Number of packets that did not require the device to calculate the
|
|
checksum.
|
|
type: uint
|
|
-
|
|
name: tx-needs-csum
|
|
doc: |
|
|
Number of packets that required the device to calculate the checksum.
|
|
This counter includes the number of GSO wire packets for which device
|
|
calculated the L4 checksum.
|
|
type: uint
|
|
-
|
|
name: tx-hw-gso-packets
|
|
doc: |
|
|
Number of packets that necessitated segmentation into smaller packets
|
|
by the device.
|
|
type: uint
|
|
-
|
|
name: tx-hw-gso-bytes
|
|
doc: See `tx-hw-gso-packets`.
|
|
type: uint
|
|
-
|
|
name: tx-hw-gso-wire-packets
|
|
doc: |
|
|
Number of wire-sized packets generated by processing
|
|
`tx-hw-gso-packets`
|
|
type: uint
|
|
-
|
|
name: tx-hw-gso-wire-bytes
|
|
doc: See `tx-hw-gso-wire-packets`.
|
|
type: uint
|
|
-
|
|
name: tx-hw-drop-ratelimits
|
|
doc: |
|
|
Number of the packets dropped by the device due to the transmit
|
|
packets bitrate exceeding the device rate limit.
|
|
type: uint
|
|
-
|
|
name: tx-stop
|
|
doc: |
|
|
Number of times driver paused accepting new tx packets
|
|
from the stack to this queue, because the queue was full.
|
|
Note that if BQL is supported and enabled on the device
|
|
the networking stack will avoid queuing a lot of data at once.
|
|
type: uint
|
|
-
|
|
name: tx-wake
|
|
doc: |
|
|
Number of times driver re-started accepting send
|
|
requests to this queue from the stack.
|
|
type: uint
|
|
-
|
|
name: queue-id
|
|
subset-of: queue
|
|
attributes:
|
|
-
|
|
name: id
|
|
-
|
|
name: type
|
|
-
|
|
name: lease
|
|
attributes:
|
|
-
|
|
name: ifindex
|
|
doc: The netdev ifindex to lease the queue from.
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
-
|
|
name: queue
|
|
doc: The netdev queue to lease from.
|
|
type: nest
|
|
nested-attributes: queue-id
|
|
-
|
|
name: netns-id
|
|
doc: The network namespace id of the netdev.
|
|
type: s32
|
|
checks:
|
|
min: 0
|
|
-
|
|
name: dmabuf
|
|
attributes:
|
|
-
|
|
name: ifindex
|
|
doc: netdev ifindex to bind the dmabuf to.
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
-
|
|
name: queues
|
|
doc: receive queues to bind the dmabuf to.
|
|
type: nest
|
|
nested-attributes: queue-id
|
|
multi-attr: true
|
|
-
|
|
name: fd
|
|
doc: dmabuf file descriptor to bind.
|
|
type: u32
|
|
-
|
|
name: id
|
|
doc: id of the dmabuf binding
|
|
type: u32
|
|
checks:
|
|
min: 1
|
|
|
|
operations:
|
|
list:
|
|
-
|
|
name: dev-get
|
|
doc: Get / dump information about a netdev.
|
|
attribute-set: dev
|
|
do:
|
|
request:
|
|
attributes:
|
|
- ifindex
|
|
reply: &dev-all
|
|
attributes:
|
|
- ifindex
|
|
- xdp-features
|
|
- xdp-zc-max-segs
|
|
- xdp-rx-metadata-features
|
|
- xsk-features
|
|
dump:
|
|
reply: *dev-all
|
|
-
|
|
name: dev-add-ntf
|
|
doc: Notification about device appearing.
|
|
notify: dev-get
|
|
mcgrp: mgmt
|
|
-
|
|
name: dev-del-ntf
|
|
doc: Notification about device disappearing.
|
|
notify: dev-get
|
|
mcgrp: mgmt
|
|
-
|
|
name: dev-change-ntf
|
|
doc: Notification about device configuration being changed.
|
|
notify: dev-get
|
|
mcgrp: mgmt
|
|
-
|
|
name: page-pool-get
|
|
doc: |
|
|
Get / dump information about Page Pools.
|
|
Only Page Pools associated by the driver with a net_device
|
|
can be listed. ifindex will not be reported if the net_device
|
|
no longer exists.
|
|
attribute-set: page-pool
|
|
do:
|
|
request:
|
|
attributes:
|
|
- id
|
|
reply: &pp-reply
|
|
attributes:
|
|
- id
|
|
- ifindex
|
|
- napi-id
|
|
- inflight
|
|
- inflight-mem
|
|
- detach-time
|
|
- dmabuf
|
|
- io-uring
|
|
dump:
|
|
reply: *pp-reply
|
|
config-cond: page-pool
|
|
-
|
|
name: page-pool-add-ntf
|
|
doc: Notification about page pool appearing.
|
|
notify: page-pool-get
|
|
mcgrp: page-pool
|
|
config-cond: page-pool
|
|
-
|
|
name: page-pool-del-ntf
|
|
doc: Notification about page pool disappearing.
|
|
notify: page-pool-get
|
|
mcgrp: page-pool
|
|
config-cond: page-pool
|
|
-
|
|
name: page-pool-change-ntf
|
|
doc: Notification about page pool configuration being changed.
|
|
notify: page-pool-get
|
|
mcgrp: page-pool
|
|
config-cond: page-pool
|
|
-
|
|
name: page-pool-stats-get
|
|
doc: Get page pool statistics.
|
|
attribute-set: page-pool-stats
|
|
do:
|
|
request:
|
|
attributes:
|
|
- info
|
|
reply: &pp-stats-reply
|
|
attributes:
|
|
- info
|
|
- alloc-fast
|
|
- alloc-slow
|
|
- alloc-slow-high-order
|
|
- alloc-empty
|
|
- alloc-refill
|
|
- alloc-waive
|
|
- recycle-cached
|
|
- recycle-cache-full
|
|
- recycle-ring
|
|
- recycle-ring-full
|
|
- recycle-released-refcnt
|
|
dump:
|
|
reply: *pp-stats-reply
|
|
config-cond: page-pool-stats
|
|
-
|
|
name: queue-get
|
|
doc: Get queue information from the kernel.
|
|
Only configured queues will be reported (as opposed to all available
|
|
hardware queues).
|
|
attribute-set: queue
|
|
do:
|
|
request:
|
|
attributes:
|
|
- ifindex
|
|
- type
|
|
- id
|
|
reply: &queue-get-op
|
|
attributes:
|
|
- id
|
|
- type
|
|
- napi-id
|
|
- ifindex
|
|
- dmabuf
|
|
- io-uring
|
|
- xsk
|
|
- lease
|
|
dump:
|
|
request:
|
|
attributes:
|
|
- ifindex
|
|
reply: *queue-get-op
|
|
-
|
|
name: napi-get
|
|
doc: Get information about NAPI instances configured on the system.
|
|
attribute-set: napi
|
|
do:
|
|
request:
|
|
attributes:
|
|
- id
|
|
reply: &napi-get-op
|
|
attributes:
|
|
- id
|
|
- ifindex
|
|
- irq
|
|
- pid
|
|
- defer-hard-irqs
|
|
- gro-flush-timeout
|
|
- irq-suspend-timeout
|
|
- threaded
|
|
dump:
|
|
request:
|
|
attributes:
|
|
- ifindex
|
|
reply: *napi-get-op
|
|
-
|
|
name: qstats-get
|
|
doc: |
|
|
Get / dump fine grained statistics. Which statistics are reported
|
|
depends on the device and the driver, and whether the driver stores
|
|
software counters per-queue.
|
|
attribute-set: qstats
|
|
dump:
|
|
request:
|
|
attributes:
|
|
- ifindex
|
|
- scope
|
|
reply:
|
|
attributes:
|
|
- ifindex
|
|
- queue-type
|
|
- queue-id
|
|
- rx-packets
|
|
- rx-bytes
|
|
- tx-packets
|
|
- tx-bytes
|
|
- rx-alloc-fail
|
|
- rx-hw-drops
|
|
- rx-hw-drop-overruns
|
|
- rx-csum-complete
|
|
- rx-csum-unnecessary
|
|
- rx-csum-none
|
|
- rx-csum-bad
|
|
- rx-hw-gro-packets
|
|
- rx-hw-gro-bytes
|
|
- rx-hw-gro-wire-packets
|
|
- rx-hw-gro-wire-bytes
|
|
- rx-hw-drop-ratelimits
|
|
- tx-hw-drops
|
|
- tx-hw-drop-errors
|
|
- tx-csum-none
|
|
- tx-needs-csum
|
|
- tx-hw-gso-packets
|
|
- tx-hw-gso-bytes
|
|
- tx-hw-gso-wire-packets
|
|
- tx-hw-gso-wire-bytes
|
|
- tx-hw-drop-ratelimits
|
|
- tx-stop
|
|
- tx-wake
|
|
-
|
|
name: bind-rx
|
|
doc: Bind dmabuf to netdev
|
|
attribute-set: dmabuf
|
|
flags: [admin-perm]
|
|
do:
|
|
request:
|
|
attributes:
|
|
- ifindex
|
|
- fd
|
|
- queues
|
|
reply:
|
|
attributes:
|
|
- id
|
|
-
|
|
name: napi-set
|
|
doc: Set configurable NAPI instance settings.
|
|
attribute-set: napi
|
|
flags: [admin-perm]
|
|
do:
|
|
request:
|
|
attributes:
|
|
- id
|
|
- defer-hard-irqs
|
|
- gro-flush-timeout
|
|
- irq-suspend-timeout
|
|
- threaded
|
|
-
|
|
name: bind-tx
|
|
doc: Bind dmabuf to netdev for TX
|
|
attribute-set: dmabuf
|
|
do:
|
|
request:
|
|
attributes:
|
|
- ifindex
|
|
- fd
|
|
reply:
|
|
attributes:
|
|
- id
|
|
-
|
|
name: queue-create
|
|
doc: |
|
|
Create a new queue for the given netdevice. Whether this operation
|
|
is supported depends on the device and the driver.
|
|
attribute-set: queue
|
|
flags: [admin-perm]
|
|
do:
|
|
request:
|
|
attributes:
|
|
- ifindex
|
|
- type
|
|
- lease
|
|
reply: &queue-create-op
|
|
attributes:
|
|
- id
|
|
|
|
kernel-family:
|
|
headers: ["net/netdev_netlink.h"]
|
|
sock-priv: struct netdev_nl_sock
|
|
|
|
mcast-groups:
|
|
list:
|
|
-
|
|
name: mgmt
|
|
-
|
|
name: page-pool
|