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, busy-poll]
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 not be reported 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. If this is set to busy-poll, then the
295 threaded polling mode also busy polls.
296 type: u32
297 enum: napi-threaded
298 -
299 name: xsk-info
300 attributes: []
301 -
302 name: queue
303 attributes:
304 -
305 name: id
306 doc: Queue index; most queue types are indexed like a C array, with
307 indexes starting at 0 and ending at queue count - 1. Queue indexes
308 are scoped to an interface and queue type.
309 type: u32
310 -
311 name: ifindex
312 doc: ifindex of the netdevice to which the queue belongs.
313 type: u32
314 checks:
315 min: 1
316 -
317 name: type
318 doc: Queue type as rx, tx. Each queue type defines a separate ID space.
319 XDP TX queues allocated in the kernel are not linked to NAPIs and
320 thus not listed. AF_XDP queues will have more information set in
321 the xsk attribute.
322 type: u32
323 enum: queue-type
324 -
325 name: napi-id
326 doc: ID of the NAPI instance which services this queue.
327 type: u32
328 -
329 name: dmabuf
330 doc: ID of the dmabuf attached to this queue, if any.
331 type: u32
332 -
333 name: io-uring
334 doc: io_uring memory provider information.
335 type: nest
336 nested-attributes: io-uring-provider-info
337 -
338 name: xsk
339 doc: XSK information for this queue, if any.
340 type: nest
341 nested-attributes: xsk-info
342 -
343 name: qstats
344 doc: |
345 Get device statistics, scoped to a device or a queue.
346 These statistics extend (and partially duplicate) statistics available
347 in struct rtnl_link_stats64.
348 Value of the `scope` attribute determines how statistics are
349 aggregated. When aggregated for the entire device the statistics
350 represent the total number of events since last explicit reset of
351 the device (i.e. not a reconfiguration like changing queue count).
352 When reported per-queue, however, the statistics may not add
353 up to the total number of events, will only be reported for currently
354 active objects, and will likely report the number of events since last
355 reconfiguration.
356 attributes:
357 -
358 name: ifindex
359 doc: ifindex of the netdevice to which stats belong.
360 type: u32
361 checks:
362 min: 1
363 -
364 name: queue-type
365 doc: Queue type as rx, tx, for queue-id.
366 type: u32
367 enum: queue-type
368 -
369 name: queue-id
370 doc: Queue ID, if stats are scoped to a single queue instance.
371 type: u32
372 -
373 name: scope
374 doc: |
375 What object type should be used to iterate over the stats.
376 type: uint
377 enum: qstats-scope
378 -
379 name: rx-packets
380 doc: |
381 Number of wire packets successfully received and passed to the stack.
382 For drivers supporting XDP, XDP is considered the first layer
383 of the stack, so packets consumed by XDP are still counted here.
384 type: uint
385 value: 8 # reserve some attr ids in case we need more metadata later
386 -
387 name: rx-bytes
388 doc: Successfully received bytes, see `rx-packets`.
389 type: uint
390 -
391 name: tx-packets
392 doc: |
393 Number of wire packets successfully sent. Packet is considered to be
394 successfully sent once it is in device memory (usually this means
395 the device has issued a DMA completion for the packet).
396 type: uint
397 -
398 name: tx-bytes
399 doc: Successfully sent bytes, see `tx-packets`.
400 type: uint
401 -
402 name: rx-alloc-fail
403 doc: |
404 Number of times skb or buffer allocation failed on the Rx datapath.
405 Allocation failure may, or may not result in a packet drop, depending
406 on driver implementation and whether system recovers quickly.
407 type: uint
408 -
409 name: rx-hw-drops
410 doc: |
411 Number of all packets which entered the device, but never left it,
412 including but not limited to: packets dropped due to lack of buffer
413 space, processing errors, explicit or implicit policies and packet
414 filters.
415 type: uint
416 -
417 name: rx-hw-drop-overruns
418 doc: |
419 Number of packets dropped due to transient lack of resources, such as
420 buffer space, host descriptors etc.
421 type: uint
422 -
423 name: rx-csum-complete
424 doc: Number of packets that were marked as CHECKSUM_COMPLETE.
425 type: uint
426 -
427 name: rx-csum-unnecessary
428 doc: Number of packets that were marked as CHECKSUM_UNNECESSARY.
429 type: uint
430 -
431 name: rx-csum-none
432 doc: Number of packets that were not checksummed by device.
433 type: uint
434 -
435 name: rx-csum-bad
436 doc: |
437 Number of packets with bad checksum. The packets are not discarded,
438 but still delivered to the stack.
439 type: uint
440 -
441 name: rx-hw-gro-packets
442 doc: |
443 Number of packets that were coalesced from smaller packets by the
444 device. Counts only packets coalesced with the HW-GRO netdevice
445 feature, LRO-coalesced packets are not counted.
446 type: uint
447 -
448 name: rx-hw-gro-bytes
449 doc: See `rx-hw-gro-packets`.
450 type: uint
451 -
452 name: rx-hw-gro-wire-packets
453 doc: |
454 Number of packets that were coalesced to bigger packetss with the
455 HW-GRO netdevice feature. LRO-coalesced packets are not counted.
456 type: uint
457 -
458 name: rx-hw-gro-wire-bytes
459 doc: See `rx-hw-gro-wire-packets`.
460 type: uint
461 -
462 name: rx-hw-drop-ratelimits
463 doc: |
464 Number of the packets dropped by the device due to the received
465 packets bitrate exceeding the device rate limit.
466 type: uint
467 -
468 name: tx-hw-drops
469 doc: |
470 Number of packets that arrived at the device but never left it,
471 encompassing packets dropped for reasons such as processing errors, as
472 well as those affected by explicitly defined policies and packet
473 filtering criteria.
474 type: uint
475 -
476 name: tx-hw-drop-errors
477 doc: Number of packets dropped because they were invalid or malformed.
478 type: uint
479 -
480 name: tx-csum-none
481 doc: |
482 Number of packets that did not require the device to calculate the
483 checksum.
484 type: uint
485 -
486 name: tx-needs-csum
487 doc: |
488 Number of packets that required the device to calculate the checksum.
489 This counter includes the number of GSO wire packets for which device
490 calculated the L4 checksum.
491 type: uint
492 -
493 name: tx-hw-gso-packets
494 doc: |
495 Number of packets that necessitated segmentation into smaller packets
496 by the device.
497 type: uint
498 -
499 name: tx-hw-gso-bytes
500 doc: See `tx-hw-gso-packets`.
501 type: uint
502 -
503 name: tx-hw-gso-wire-packets
504 doc: |
505 Number of wire-sized packets generated by processing
506 `tx-hw-gso-packets`
507 type: uint
508 -
509 name: tx-hw-gso-wire-bytes
510 doc: See `tx-hw-gso-wire-packets`.
511 type: uint
512 -
513 name: tx-hw-drop-ratelimits
514 doc: |
515 Number of the packets dropped by the device due to the transmit
516 packets bitrate exceeding the device rate limit.
517 type: uint
518 -
519 name: tx-stop
520 doc: |
521 Number of times driver paused accepting new tx packets
522 from the stack to this queue, because the queue was full.
523 Note that if BQL is supported and enabled on the device
524 the networking stack will avoid queuing a lot of data at once.
525 type: uint
526 -
527 name: tx-wake
528 doc: |
529 Number of times driver re-started accepting send
530 requests to this queue from the stack.
531 type: uint
532 -
533 name: queue-id
534 subset-of: queue
535 attributes:
536 -
537 name: id
538 -
539 name: type
540 -
541 name: dmabuf
542 attributes:
543 -
544 name: ifindex
545 doc: netdev ifindex to bind the dmabuf to.
546 type: u32
547 checks:
548 min: 1
549 -
550 name: queues
551 doc: receive queues to bind the dmabuf to.
552 type: nest
553 nested-attributes: queue-id
554 multi-attr: true
555 -
556 name: fd
557 doc: dmabuf file descriptor to bind.
558 type: u32
559 -
560 name: id
561 doc: id of the dmabuf binding
562 type: u32
563 checks:
564 min: 1
565
566operations:
567 list:
568 -
569 name: dev-get
570 doc: Get / dump information about a netdev.
571 attribute-set: dev
572 do:
573 request:
574 attributes:
575 - ifindex
576 reply: &dev-all
577 attributes:
578 - ifindex
579 - xdp-features
580 - xdp-zc-max-segs
581 - xdp-rx-metadata-features
582 - xsk-features
583 dump:
584 reply: *dev-all
585 -
586 name: dev-add-ntf
587 doc: Notification about device appearing.
588 notify: dev-get
589 mcgrp: mgmt
590 -
591 name: dev-del-ntf
592 doc: Notification about device disappearing.
593 notify: dev-get
594 mcgrp: mgmt
595 -
596 name: dev-change-ntf
597 doc: Notification about device configuration being changed.
598 notify: dev-get
599 mcgrp: mgmt
600 -
601 name: page-pool-get
602 doc: |
603 Get / dump information about Page Pools.
604 Only Page Pools associated by the driver with a net_device
605 can be listed. ifindex will not be reported if the net_device
606 no longer exists.
607 attribute-set: page-pool
608 do:
609 request:
610 attributes:
611 - id
612 reply: &pp-reply
613 attributes:
614 - id
615 - ifindex
616 - napi-id
617 - inflight
618 - inflight-mem
619 - detach-time
620 - dmabuf
621 - io-uring
622 dump:
623 reply: *pp-reply
624 config-cond: page-pool
625 -
626 name: page-pool-add-ntf
627 doc: Notification about page pool appearing.
628 notify: page-pool-get
629 mcgrp: page-pool
630 config-cond: page-pool
631 -
632 name: page-pool-del-ntf
633 doc: Notification about page pool disappearing.
634 notify: page-pool-get
635 mcgrp: page-pool
636 config-cond: page-pool
637 -
638 name: page-pool-change-ntf
639 doc: Notification about page pool configuration being changed.
640 notify: page-pool-get
641 mcgrp: page-pool
642 config-cond: page-pool
643 -
644 name: page-pool-stats-get
645 doc: Get page pool statistics.
646 attribute-set: page-pool-stats
647 do:
648 request:
649 attributes:
650 - info
651 reply: &pp-stats-reply
652 attributes:
653 - info
654 - alloc-fast
655 - alloc-slow
656 - alloc-slow-high-order
657 - alloc-empty
658 - alloc-refill
659 - alloc-waive
660 - recycle-cached
661 - recycle-cache-full
662 - recycle-ring
663 - recycle-ring-full
664 - recycle-released-refcnt
665 dump:
666 reply: *pp-stats-reply
667 config-cond: page-pool-stats
668 -
669 name: queue-get
670 doc: Get queue information from the kernel.
671 Only configured queues will be reported (as opposed to all available
672 hardware queues).
673 attribute-set: queue
674 do:
675 request:
676 attributes:
677 - ifindex
678 - type
679 - id
680 reply: &queue-get-op
681 attributes:
682 - id
683 - type
684 - napi-id
685 - ifindex
686 - dmabuf
687 - io-uring
688 - xsk
689 dump:
690 request:
691 attributes:
692 - ifindex
693 reply: *queue-get-op
694 -
695 name: napi-get
696 doc: Get information about NAPI instances configured on the system.
697 attribute-set: napi
698 do:
699 request:
700 attributes:
701 - id
702 reply: &napi-get-op
703 attributes:
704 - id
705 - ifindex
706 - irq
707 - pid
708 - defer-hard-irqs
709 - gro-flush-timeout
710 - irq-suspend-timeout
711 - threaded
712 dump:
713 request:
714 attributes:
715 - ifindex
716 reply: *napi-get-op
717 -
718 name: qstats-get
719 doc: |
720 Get / dump fine grained statistics. Which statistics are reported
721 depends on the device and the driver, and whether the driver stores
722 software counters per-queue.
723 attribute-set: qstats
724 dump:
725 request:
726 attributes:
727 - ifindex
728 - scope
729 reply:
730 attributes:
731 - ifindex
732 - queue-type
733 - queue-id
734 - rx-packets
735 - rx-bytes
736 - tx-packets
737 - tx-bytes
738 - rx-alloc-fail
739 - rx-hw-drops
740 - rx-hw-drop-overruns
741 - rx-csum-complete
742 - rx-csum-unnecessary
743 - rx-csum-none
744 - rx-csum-bad
745 - rx-hw-gro-packets
746 - rx-hw-gro-bytes
747 - rx-hw-gro-wire-packets
748 - rx-hw-gro-wire-bytes
749 - rx-hw-drop-ratelimits
750 - tx-hw-drops
751 - tx-hw-drop-errors
752 - tx-csum-none
753 - tx-needs-csum
754 - tx-hw-gso-packets
755 - tx-hw-gso-bytes
756 - tx-hw-gso-wire-packets
757 - tx-hw-gso-wire-bytes
758 - tx-hw-drop-ratelimits
759 - tx-stop
760 - tx-wake
761 -
762 name: bind-rx
763 doc: Bind dmabuf to netdev
764 attribute-set: dmabuf
765 flags: [admin-perm]
766 do:
767 request:
768 attributes:
769 - ifindex
770 - fd
771 - queues
772 reply:
773 attributes:
774 - id
775 -
776 name: napi-set
777 doc: Set configurable NAPI instance settings.
778 attribute-set: napi
779 flags: [admin-perm]
780 do:
781 request:
782 attributes:
783 - id
784 - defer-hard-irqs
785 - gro-flush-timeout
786 - irq-suspend-timeout
787 - threaded
788 -
789 name: bind-tx
790 doc: Bind dmabuf to netdev for TX
791 attribute-set: dmabuf
792 do:
793 request:
794 attributes:
795 - ifindex
796 - fd
797 reply:
798 attributes:
799 - id
800
801kernel-family:
802 headers: ["net/netdev_netlink.h"]
803 sock-priv: struct netdev_nl_sock
804
805mcast-groups:
806 list:
807 -
808 name: mgmt
809 -
810 name: page-pool