Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2---
3name: netdev
4
5doc: >-
6 netdev configuration over generic netlink.
7
8definitions:
9 -
10 type: flags
11 name: xdp-act
12 render-max: true
13 entries:
14 -
15 name: basic
16 doc: >-
17 XDP features set supported by all drivers
18 (XDP_ABORTED, XDP_DROP, XDP_PASS, XDP_TX)
19 -
20 name: redirect
21 doc: >-
22 The netdev supports XDP_REDIRECT
23 -
24 name: ndo-xmit
25 doc: >-
26 This feature informs if netdev implements ndo_xdp_xmit callback.
27 -
28 name: xsk-zerocopy
29 doc: >-
30 This feature informs if netdev supports AF_XDP in zero copy mode.
31 -
32 name: hw-offload
33 doc: >-
34 This feature informs if netdev supports XDP hw offloading.
35 -
36 name: rx-sg
37 doc: >-
38 This feature informs if netdev implements non-linear XDP buffer
39 support in the driver napi callback.
40 -
41 name: ndo-xmit-sg
42 doc: >-
43 This feature informs if netdev implements non-linear XDP buffer
44 support in ndo_xdp_xmit callback.
45 -
46 type: flags
47 name: xdp-rx-metadata
48 entries:
49 -
50 name: timestamp
51 doc: |
52 Device is capable of exposing receive HW timestamp via
53 bpf_xdp_metadata_rx_timestamp().
54 -
55 name: hash
56 doc: |
57 Device is capable of exposing receive packet hash via
58 bpf_xdp_metadata_rx_hash().
59 -
60 name: vlan-tag
61 doc: |
62 Device is capable of exposing receive packet VLAN tag via
63 bpf_xdp_metadata_rx_vlan_tag().
64 -
65 type: flags
66 name: xsk-flags
67 entries:
68 -
69 name: tx-timestamp
70 doc: >-
71 HW timestamping egress packets is supported by the driver.
72 -
73 name: tx-checksum
74 doc: >-
75 L3 checksum HW offload is supported by the driver.
76 -
77 name: tx-launch-time-fifo
78 doc: >-
79 Launch time HW offload is supported by the driver.
80 -
81 name: queue-type
82 type: enum
83 entries: [rx, tx]
84 -
85 name: qstats-scope
86 type: flags
87 entries: [queue]
88 -
89 name: napi-threaded
90 type: enum
91 entries: [disabled, enabled]
92
93attribute-sets:
94 -
95 name: dev
96 attributes:
97 -
98 name: ifindex
99 doc: netdev ifindex
100 type: u32
101 checks:
102 min: 1
103 -
104 name: pad
105 type: pad
106 -
107 name: xdp-features
108 doc: Bitmask of enabled xdp-features.
109 type: u64
110 enum: xdp-act
111 -
112 name: xdp-zc-max-segs
113 doc: max fragment count supported by ZC driver
114 type: u32
115 checks:
116 min: 1
117 -
118 name: xdp-rx-metadata-features
119 doc: Bitmask of supported XDP receive metadata features.
120 See Documentation/networking/xdp-rx-metadata.rst for more details.
121 type: u64
122 enum: xdp-rx-metadata
123 -
124 name: xsk-features
125 doc: Bitmask of enabled AF_XDP features.
126 type: u64
127 enum: xsk-flags
128 -
129 name: io-uring-provider-info
130 attributes: []
131 -
132 name: page-pool
133 attributes:
134 -
135 name: id
136 doc: Unique ID of a Page Pool instance.
137 type: uint
138 checks:
139 min: 1
140 max: u32-max
141 -
142 name: ifindex
143 doc: |
144 ifindex of the netdev to which the pool belongs.
145 May be reported as 0 if the page pool was allocated for a netdev
146 which got destroyed already (page pools may outlast their netdevs
147 because they wait for all memory to be returned).
148 type: u32
149 checks:
150 min: 1
151 max: s32-max
152 -
153 name: napi-id
154 doc: Id of NAPI using this Page Pool instance.
155 type: uint
156 checks:
157 min: 1
158 max: u32-max
159 -
160 name: inflight
161 type: uint
162 doc: |
163 Number of outstanding references to this page pool (allocated
164 but yet to be freed pages). Allocated pages may be held in
165 socket receive queues, driver receive ring, page pool recycling
166 ring, the page pool cache, etc.
167 -
168 name: inflight-mem
169 type: uint
170 doc: |
171 Amount of memory held by inflight pages.
172 -
173 name: detach-time
174 type: uint
175 doc: |
176 Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
177 the driver. Once detached Page Pool can no longer be used to
178 allocate memory.
179 Page Pools wait for all the memory allocated from them to be freed
180 before truly disappearing. "Detached" Page Pools cannot be
181 "re-attached", they are just waiting to disappear.
182 Attribute is absent if Page Pool has not been detached, and
183 can still be used to allocate new memory.
184 -
185 name: dmabuf
186 doc: ID of the dmabuf this page-pool is attached to.
187 type: u32
188 -
189 name: io-uring
190 doc: io-uring memory provider information.
191 type: nest
192 nested-attributes: io-uring-provider-info
193 -
194 name: page-pool-info
195 subset-of: page-pool
196 attributes:
197 -
198 name: id
199 -
200 name: ifindex
201 -
202 name: page-pool-stats
203 doc: |
204 Page pool statistics, see docs for struct page_pool_stats
205 for information about individual statistics.
206 attributes:
207 -
208 name: info
209 doc: Page pool identifying information.
210 type: nest
211 nested-attributes: page-pool-info
212 -
213 name: alloc-fast
214 type: uint
215 value: 8 # reserve some attr ids in case we need more metadata later
216 -
217 name: alloc-slow
218 type: uint
219 -
220 name: alloc-slow-high-order
221 type: uint
222 -
223 name: alloc-empty
224 type: uint
225 -
226 name: alloc-refill
227 type: uint
228 -
229 name: alloc-waive
230 type: uint
231 -
232 name: recycle-cached
233 type: uint
234 -
235 name: recycle-cache-full
236 type: uint
237 -
238 name: recycle-ring
239 type: uint
240 -
241 name: recycle-ring-full
242 type: uint
243 -
244 name: recycle-released-refcnt
245 type: uint
246
247 -
248 name: napi
249 attributes:
250 -
251 name: ifindex
252 doc: ifindex of the netdevice to which NAPI instance belongs.
253 type: u32
254 checks:
255 min: 1
256 -
257 name: id
258 doc: ID of the NAPI instance.
259 type: u32
260 -
261 name: irq
262 doc: The associated interrupt vector number for the napi
263 type: u32
264 -
265 name: pid
266 doc: PID of the napi thread, if NAPI is configured to operate in
267 threaded mode. If NAPI is not in threaded mode (i.e. uses normal
268 softirq context), the attribute will be absent.
269 type: u32
270 -
271 name: defer-hard-irqs
272 doc: The number of consecutive empty polls before IRQ deferral ends
273 and hardware IRQs are re-enabled.
274 type: u32
275 checks:
276 max: s32-max
277 -
278 name: gro-flush-timeout
279 doc: The timeout, in nanoseconds, of when to trigger the NAPI watchdog
280 timer which schedules NAPI processing. Additionally, a non-zero
281 value will also prevent GRO from flushing recent super-frames at
282 the end of a NAPI cycle. This may add receive latency in exchange
283 for reducing the number of frames processed by the network stack.
284 type: uint
285 -
286 name: irq-suspend-timeout
287 doc: The timeout, in nanoseconds, of how long to suspend irq
288 processing, if event polling finds events
289 type: uint
290 -
291 name: threaded
292 doc: Whether the NAPI is configured to operate in threaded polling
293 mode. If this is set to enabled then the NAPI context operates
294 in threaded polling mode.
295 type: u32
296 enum: napi-threaded
297 -
298 name: xsk-info
299 attributes: []
300 -
301 name: queue
302 attributes:
303 -
304 name: id
305 doc: Queue index; most queue types are indexed like a C array, with
306 indexes starting at 0 and ending at queue count - 1. Queue indexes
307 are scoped to an interface and queue type.
308 type: u32
309 -
310 name: ifindex
311 doc: ifindex of the netdevice to which the queue belongs.
312 type: u32
313 checks:
314 min: 1
315 -
316 name: type
317 doc: Queue type as rx, tx. Each queue type defines a separate ID space.
318 XDP TX queues allocated in the kernel are not linked to NAPIs and
319 thus not listed. AF_XDP queues will have more information set in
320 the xsk attribute.
321 type: u32
322 enum: queue-type
323 -
324 name: napi-id
325 doc: ID of the NAPI instance which services this queue.
326 type: u32
327 -
328 name: dmabuf
329 doc: ID of the dmabuf attached to this queue, if any.
330 type: u32
331 -
332 name: io-uring
333 doc: io_uring memory provider information.
334 type: nest
335 nested-attributes: io-uring-provider-info
336 -
337 name: xsk
338 doc: XSK information for this queue, if any.
339 type: nest
340 nested-attributes: xsk-info
341 -
342 name: qstats
343 doc: |
344 Get device statistics, scoped to a device or a queue.
345 These statistics extend (and partially duplicate) statistics available
346 in struct rtnl_link_stats64.
347 Value of the `scope` attribute determines how statistics are
348 aggregated. When aggregated for the entire device the statistics
349 represent the total number of events since last explicit reset of
350 the device (i.e. not a reconfiguration like changing queue count).
351 When reported per-queue, however, the statistics may not add
352 up to the total number of events, will only be reported for currently
353 active objects, and will likely report the number of events since last
354 reconfiguration.
355 attributes:
356 -
357 name: ifindex
358 doc: ifindex of the netdevice to which stats belong.
359 type: u32
360 checks:
361 min: 1
362 -
363 name: queue-type
364 doc: Queue type as rx, tx, for queue-id.
365 type: u32
366 enum: queue-type
367 -
368 name: queue-id
369 doc: Queue ID, if stats are scoped to a single queue instance.
370 type: u32
371 -
372 name: scope
373 doc: |
374 What object type should be used to iterate over the stats.
375 type: uint
376 enum: qstats-scope
377 -
378 name: rx-packets
379 doc: |
380 Number of wire packets successfully received and passed to the stack.
381 For drivers supporting XDP, XDP is considered the first layer
382 of the stack, so packets consumed by XDP are still counted here.
383 type: uint
384 value: 8 # reserve some attr ids in case we need more metadata later
385 -
386 name: rx-bytes
387 doc: Successfully received bytes, see `rx-packets`.
388 type: uint
389 -
390 name: tx-packets
391 doc: |
392 Number of wire packets successfully sent. Packet is considered to be
393 successfully sent once it is in device memory (usually this means
394 the device has issued a DMA completion for the packet).
395 type: uint
396 -
397 name: tx-bytes
398 doc: Successfully sent bytes, see `tx-packets`.
399 type: uint
400 -
401 name: rx-alloc-fail
402 doc: |
403 Number of times skb or buffer allocation failed on the Rx datapath.
404 Allocation failure may, or may not result in a packet drop, depending
405 on driver implementation and whether system recovers quickly.
406 type: uint
407 -
408 name: rx-hw-drops
409 doc: |
410 Number of all packets which entered the device, but never left it,
411 including but not limited to: packets dropped due to lack of buffer
412 space, processing errors, explicit or implicit policies and packet
413 filters.
414 type: uint
415 -
416 name: rx-hw-drop-overruns
417 doc: |
418 Number of packets dropped due to transient lack of resources, such as
419 buffer space, host descriptors etc.
420 type: uint
421 -
422 name: rx-csum-complete
423 doc: Number of packets that were marked as CHECKSUM_COMPLETE.
424 type: uint
425 -
426 name: rx-csum-unnecessary
427 doc: Number of packets that were marked as CHECKSUM_UNNECESSARY.
428 type: uint
429 -
430 name: rx-csum-none
431 doc: Number of packets that were not checksummed by device.
432 type: uint
433 -
434 name: rx-csum-bad
435 doc: |
436 Number of packets with bad checksum. The packets are not discarded,
437 but still delivered to the stack.
438 type: uint
439 -
440 name: rx-hw-gro-packets
441 doc: |
442 Number of packets that were coalesced from smaller packets by the
443 device. Counts only packets coalesced with the HW-GRO netdevice
444 feature, LRO-coalesced packets are not counted.
445 type: uint
446 -
447 name: rx-hw-gro-bytes
448 doc: See `rx-hw-gro-packets`.
449 type: uint
450 -
451 name: rx-hw-gro-wire-packets
452 doc: |
453 Number of packets that were coalesced to bigger packetss with the
454 HW-GRO netdevice feature. LRO-coalesced packets are not counted.
455 type: uint
456 -
457 name: rx-hw-gro-wire-bytes
458 doc: See `rx-hw-gro-wire-packets`.
459 type: uint
460 -
461 name: rx-hw-drop-ratelimits
462 doc: |
463 Number of the packets dropped by the device due to the received
464 packets bitrate exceeding the device rate limit.
465 type: uint
466 -
467 name: tx-hw-drops
468 doc: |
469 Number of packets that arrived at the device but never left it,
470 encompassing packets dropped for reasons such as processing errors, as
471 well as those affected by explicitly defined policies and packet
472 filtering criteria.
473 type: uint
474 -
475 name: tx-hw-drop-errors
476 doc: Number of packets dropped because they were invalid or malformed.
477 type: uint
478 -
479 name: tx-csum-none
480 doc: |
481 Number of packets that did not require the device to calculate the
482 checksum.
483 type: uint
484 -
485 name: tx-needs-csum
486 doc: |
487 Number of packets that required the device to calculate the checksum.
488 This counter includes the number of GSO wire packets for which device
489 calculated the L4 checksum.
490 type: uint
491 -
492 name: tx-hw-gso-packets
493 doc: |
494 Number of packets that necessitated segmentation into smaller packets
495 by the device.
496 type: uint
497 -
498 name: tx-hw-gso-bytes
499 doc: See `tx-hw-gso-packets`.
500 type: uint
501 -
502 name: tx-hw-gso-wire-packets
503 doc: |
504 Number of wire-sized packets generated by processing
505 `tx-hw-gso-packets`
506 type: uint
507 -
508 name: tx-hw-gso-wire-bytes
509 doc: See `tx-hw-gso-wire-packets`.
510 type: uint
511 -
512 name: tx-hw-drop-ratelimits
513 doc: |
514 Number of the packets dropped by the device due to the transmit
515 packets bitrate exceeding the device rate limit.
516 type: uint
517 -
518 name: tx-stop
519 doc: |
520 Number of times driver paused accepting new tx packets
521 from the stack to this queue, because the queue was full.
522 Note that if BQL is supported and enabled on the device
523 the networking stack will avoid queuing a lot of data at once.
524 type: uint
525 -
526 name: tx-wake
527 doc: |
528 Number of times driver re-started accepting send
529 requests to this queue from the stack.
530 type: uint
531 -
532 name: queue-id
533 subset-of: queue
534 attributes:
535 -
536 name: id
537 -
538 name: type
539 -
540 name: dmabuf
541 attributes:
542 -
543 name: ifindex
544 doc: netdev ifindex to bind the dmabuf to.
545 type: u32
546 checks:
547 min: 1
548 -
549 name: queues
550 doc: receive queues to bind the dmabuf to.
551 type: nest
552 nested-attributes: queue-id
553 multi-attr: true
554 -
555 name: fd
556 doc: dmabuf file descriptor to bind.
557 type: u32
558 -
559 name: id
560 doc: id of the dmabuf binding
561 type: u32
562 checks:
563 min: 1
564
565operations:
566 list:
567 -
568 name: dev-get
569 doc: Get / dump information about a netdev.
570 attribute-set: dev
571 do:
572 request:
573 attributes:
574 - ifindex
575 reply: &dev-all
576 attributes:
577 - ifindex
578 - xdp-features
579 - xdp-zc-max-segs
580 - xdp-rx-metadata-features
581 - xsk-features
582 dump:
583 reply: *dev-all
584 -
585 name: dev-add-ntf
586 doc: Notification about device appearing.
587 notify: dev-get
588 mcgrp: mgmt
589 -
590 name: dev-del-ntf
591 doc: Notification about device disappearing.
592 notify: dev-get
593 mcgrp: mgmt
594 -
595 name: dev-change-ntf
596 doc: Notification about device configuration being changed.
597 notify: dev-get
598 mcgrp: mgmt
599 -
600 name: page-pool-get
601 doc: |
602 Get / dump information about Page Pools.
603 (Only Page Pools associated with a net_device can be listed.)
604 attribute-set: page-pool
605 do:
606 request:
607 attributes:
608 - id
609 reply: &pp-reply
610 attributes:
611 - id
612 - ifindex
613 - napi-id
614 - inflight
615 - inflight-mem
616 - detach-time
617 - dmabuf
618 - io-uring
619 dump:
620 reply: *pp-reply
621 config-cond: page-pool
622 -
623 name: page-pool-add-ntf
624 doc: Notification about page pool appearing.
625 notify: page-pool-get
626 mcgrp: page-pool
627 config-cond: page-pool
628 -
629 name: page-pool-del-ntf
630 doc: Notification about page pool disappearing.
631 notify: page-pool-get
632 mcgrp: page-pool
633 config-cond: page-pool
634 -
635 name: page-pool-change-ntf
636 doc: Notification about page pool configuration being changed.
637 notify: page-pool-get
638 mcgrp: page-pool
639 config-cond: page-pool
640 -
641 name: page-pool-stats-get
642 doc: Get page pool statistics.
643 attribute-set: page-pool-stats
644 do:
645 request:
646 attributes:
647 - info
648 reply: &pp-stats-reply
649 attributes:
650 - info
651 - alloc-fast
652 - alloc-slow
653 - alloc-slow-high-order
654 - alloc-empty
655 - alloc-refill
656 - alloc-waive
657 - recycle-cached
658 - recycle-cache-full
659 - recycle-ring
660 - recycle-ring-full
661 - recycle-released-refcnt
662 dump:
663 reply: *pp-stats-reply
664 config-cond: page-pool-stats
665 -
666 name: queue-get
667 doc: Get queue information from the kernel.
668 Only configured queues will be reported (as opposed to all available
669 hardware queues).
670 attribute-set: queue
671 do:
672 request:
673 attributes:
674 - ifindex
675 - type
676 - id
677 reply: &queue-get-op
678 attributes:
679 - id
680 - type
681 - napi-id
682 - ifindex
683 - dmabuf
684 - io-uring
685 - xsk
686 dump:
687 request:
688 attributes:
689 - ifindex
690 reply: *queue-get-op
691 -
692 name: napi-get
693 doc: Get information about NAPI instances configured on the system.
694 attribute-set: napi
695 do:
696 request:
697 attributes:
698 - id
699 reply: &napi-get-op
700 attributes:
701 - id
702 - ifindex
703 - irq
704 - pid
705 - defer-hard-irqs
706 - gro-flush-timeout
707 - irq-suspend-timeout
708 - threaded
709 dump:
710 request:
711 attributes:
712 - ifindex
713 reply: *napi-get-op
714 -
715 name: qstats-get
716 doc: |
717 Get / dump fine grained statistics. Which statistics are reported
718 depends on the device and the driver, and whether the driver stores
719 software counters per-queue.
720 attribute-set: qstats
721 dump:
722 request:
723 attributes:
724 - ifindex
725 - scope
726 reply:
727 attributes:
728 - ifindex
729 - queue-type
730 - queue-id
731 - rx-packets
732 - rx-bytes
733 - tx-packets
734 - tx-bytes
735 -
736 name: bind-rx
737 doc: Bind dmabuf to netdev
738 attribute-set: dmabuf
739 flags: [admin-perm]
740 do:
741 request:
742 attributes:
743 - ifindex
744 - fd
745 - queues
746 reply:
747 attributes:
748 - id
749 -
750 name: napi-set
751 doc: Set configurable NAPI instance settings.
752 attribute-set: napi
753 flags: [admin-perm]
754 do:
755 request:
756 attributes:
757 - id
758 - defer-hard-irqs
759 - gro-flush-timeout
760 - irq-suspend-timeout
761 - threaded
762 -
763 name: bind-tx
764 doc: Bind dmabuf to netdev for TX
765 attribute-set: dmabuf
766 do:
767 request:
768 attributes:
769 - ifindex
770 - fd
771 reply:
772 attributes:
773 - id
774
775kernel-family:
776 headers: ["net/netdev_netlink.h"]
777 sock-priv: struct netdev_nl_sock
778
779mcast-groups:
780 list:
781 -
782 name: mgmt
783 -
784 name: page-pool