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 bpf_xdp_metadata_rx_timestamp().
53 -
54 name: hash
55 doc:
56 Device is capable of exposing receive packet hash via bpf_xdp_metadata_rx_hash().
57 -
58 name: vlan-tag
59 doc:
60 Device is capable of exposing receive packet VLAN tag via bpf_xdp_metadata_rx_vlan_tag().
61 -
62 type: flags
63 name: xsk-flags
64 entries:
65 -
66 name: tx-timestamp
67 doc:
68 HW timestamping egress packets is supported by the driver.
69 -
70 name: tx-checksum
71 doc:
72 L3 checksum HW offload is supported by the driver.
73 -
74 name: queue-type
75 type: enum
76 entries: [ rx, tx ]
77 -
78 name: qstats-scope
79 type: flags
80 entries: [ queue ]
81
82attribute-sets:
83 -
84 name: dev
85 attributes:
86 -
87 name: ifindex
88 doc: netdev ifindex
89 type: u32
90 checks:
91 min: 1
92 -
93 name: pad
94 type: pad
95 -
96 name: xdp-features
97 doc: Bitmask of enabled xdp-features.
98 type: u64
99 enum: xdp-act
100 -
101 name: xdp-zc-max-segs
102 doc: max fragment count supported by ZC driver
103 type: u32
104 checks:
105 min: 1
106 -
107 name: xdp-rx-metadata-features
108 doc: Bitmask of supported XDP receive metadata features.
109 See Documentation/networking/xdp-rx-metadata.rst for more details.
110 type: u64
111 enum: xdp-rx-metadata
112 -
113 name: xsk-features
114 doc: Bitmask of enabled AF_XDP features.
115 type: u64
116 enum: xsk-flags
117 -
118 name: page-pool
119 attributes:
120 -
121 name: id
122 doc: Unique ID of a Page Pool instance.
123 type: uint
124 checks:
125 min: 1
126 max: u32-max
127 -
128 name: ifindex
129 doc: |
130 ifindex of the netdev to which the pool belongs.
131 May be reported as 0 if the page pool was allocated for a netdev
132 which got destroyed already (page pools may outlast their netdevs
133 because they wait for all memory to be returned).
134 type: u32
135 checks:
136 min: 1
137 max: s32-max
138 -
139 name: napi-id
140 doc: Id of NAPI using this Page Pool instance.
141 type: uint
142 checks:
143 min: 1
144 max: u32-max
145 -
146 name: inflight
147 type: uint
148 doc: |
149 Number of outstanding references to this page pool (allocated
150 but yet to be freed pages). Allocated pages may be held in
151 socket receive queues, driver receive ring, page pool recycling
152 ring, the page pool cache, etc.
153 -
154 name: inflight-mem
155 type: uint
156 doc: |
157 Amount of memory held by inflight pages.
158 -
159 name: detach-time
160 type: uint
161 doc: |
162 Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
163 the driver. Once detached Page Pool can no longer be used to
164 allocate memory.
165 Page Pools wait for all the memory allocated from them to be freed
166 before truly disappearing. "Detached" Page Pools cannot be
167 "re-attached", they are just waiting to disappear.
168 Attribute is absent if Page Pool has not been detached, and
169 can still be used to allocate new memory.
170 -
171 name: page-pool-info
172 subset-of: page-pool
173 attributes:
174 -
175 name: id
176 -
177 name: ifindex
178 -
179 name: page-pool-stats
180 doc: |
181 Page pool statistics, see docs for struct page_pool_stats
182 for information about individual statistics.
183 attributes:
184 -
185 name: info
186 doc: Page pool identifying information.
187 type: nest
188 nested-attributes: page-pool-info
189 -
190 name: alloc-fast
191 type: uint
192 value: 8 # reserve some attr ids in case we need more metadata later
193 -
194 name: alloc-slow
195 type: uint
196 -
197 name: alloc-slow-high-order
198 type: uint
199 -
200 name: alloc-empty
201 type: uint
202 -
203 name: alloc-refill
204 type: uint
205 -
206 name: alloc-waive
207 type: uint
208 -
209 name: recycle-cached
210 type: uint
211 -
212 name: recycle-cache-full
213 type: uint
214 -
215 name: recycle-ring
216 type: uint
217 -
218 name: recycle-ring-full
219 type: uint
220 -
221 name: recycle-released-refcnt
222 type: uint
223
224 -
225 name: napi
226 attributes:
227 -
228 name: ifindex
229 doc: ifindex of the netdevice to which NAPI instance belongs.
230 type: u32
231 checks:
232 min: 1
233 -
234 name: id
235 doc: ID of the NAPI instance.
236 type: u32
237 -
238 name: irq
239 doc: The associated interrupt vector number for the napi
240 type: u32
241 -
242 name: pid
243 doc: PID of the napi thread, if NAPI is configured to operate in
244 threaded mode. If NAPI is not in threaded mode (i.e. uses normal
245 softirq context), the attribute will be absent.
246 type: u32
247 -
248 name: queue
249 attributes:
250 -
251 name: id
252 doc: Queue index; most queue types are indexed like a C array, with
253 indexes starting at 0 and ending at queue count - 1. Queue indexes
254 are scoped to an interface and queue type.
255 type: u32
256 -
257 name: ifindex
258 doc: ifindex of the netdevice to which the queue belongs.
259 type: u32
260 checks:
261 min: 1
262 -
263 name: type
264 doc: Queue type as rx, tx. Each queue type defines a separate ID space.
265 type: u32
266 enum: queue-type
267 -
268 name: napi-id
269 doc: ID of the NAPI instance which services this queue.
270 type: u32
271
272 -
273 name: qstats
274 doc: |
275 Get device statistics, scoped to a device or a queue.
276 These statistics extend (and partially duplicate) statistics available
277 in struct rtnl_link_stats64.
278 Value of the `scope` attribute determines how statistics are
279 aggregated. When aggregated for the entire device the statistics
280 represent the total number of events since last explicit reset of
281 the device (i.e. not a reconfiguration like changing queue count).
282 When reported per-queue, however, the statistics may not add
283 up to the total number of events, will only be reported for currently
284 active objects, and will likely report the number of events since last
285 reconfiguration.
286 attributes:
287 -
288 name: ifindex
289 doc: ifindex of the netdevice to which stats belong.
290 type: u32
291 checks:
292 min: 1
293 -
294 name: queue-type
295 doc: Queue type as rx, tx, for queue-id.
296 type: u32
297 enum: queue-type
298 -
299 name: queue-id
300 doc: Queue ID, if stats are scoped to a single queue instance.
301 type: u32
302 -
303 name: scope
304 doc: |
305 What object type should be used to iterate over the stats.
306 type: uint
307 enum: qstats-scope
308 -
309 name: rx-packets
310 doc: |
311 Number of wire packets successfully received and passed to the stack.
312 For drivers supporting XDP, XDP is considered the first layer
313 of the stack, so packets consumed by XDP are still counted here.
314 type: uint
315 value: 8 # reserve some attr ids in case we need more metadata later
316 -
317 name: rx-bytes
318 doc: Successfully received bytes, see `rx-packets`.
319 type: uint
320 -
321 name: tx-packets
322 doc: |
323 Number of wire packets successfully sent. Packet is considered to be
324 successfully sent once it is in device memory (usually this means
325 the device has issued a DMA completion for the packet).
326 type: uint
327 -
328 name: tx-bytes
329 doc: Successfully sent bytes, see `tx-packets`.
330 type: uint
331 -
332 name: rx-alloc-fail
333 doc: |
334 Number of times skb or buffer allocation failed on the Rx datapath.
335 Allocation failure may, or may not result in a packet drop, depending
336 on driver implementation and whether system recovers quickly.
337 type: uint
338 -
339 name: rx-hw-drops
340 doc: |
341 Number of all packets which entered the device, but never left it,
342 including but not limited to: packets dropped due to lack of buffer
343 space, processing errors, explicit or implicit policies and packet
344 filters.
345 type: uint
346 -
347 name: rx-hw-drop-overruns
348 doc: |
349 Number of packets dropped due to transient lack of resources, such as
350 buffer space, host descriptors etc.
351 type: uint
352 -
353 name: rx-csum-complete
354 doc: Number of packets that were marked as CHECKSUM_COMPLETE.
355 type: uint
356 -
357 name: rx-csum-unnecessary
358 doc: Number of packets that were marked as CHECKSUM_UNNECESSARY.
359 type: uint
360 -
361 name: rx-csum-none
362 doc: Number of packets that were not checksummed by device.
363 type: uint
364 -
365 name: rx-csum-bad
366 doc: |
367 Number of packets with bad checksum. The packets are not discarded,
368 but still delivered to the stack.
369 type: uint
370 -
371 name: rx-hw-gro-packets
372 doc: |
373 Number of packets that were coalesced from smaller packets by the device.
374 Counts only packets coalesced with the HW-GRO netdevice feature,
375 LRO-coalesced packets are not counted.
376 type: uint
377 -
378 name: rx-hw-gro-bytes
379 doc: See `rx-hw-gro-packets`.
380 type: uint
381 -
382 name: rx-hw-gro-wire-packets
383 doc: |
384 Number of packets that were coalesced to bigger packetss with the HW-GRO
385 netdevice feature. LRO-coalesced packets are not counted.
386 type: uint
387 -
388 name: rx-hw-gro-wire-bytes
389 doc: See `rx-hw-gro-wire-packets`.
390 type: uint
391 -
392 name: rx-hw-drop-ratelimits
393 doc: |
394 Number of the packets dropped by the device due to the received
395 packets bitrate exceeding the device rate limit.
396 type: uint
397 -
398 name: tx-hw-drops
399 doc: |
400 Number of packets that arrived at the device but never left it,
401 encompassing packets dropped for reasons such as processing errors, as
402 well as those affected by explicitly defined policies and packet
403 filtering criteria.
404 type: uint
405 -
406 name: tx-hw-drop-errors
407 doc: Number of packets dropped because they were invalid or malformed.
408 type: uint
409 -
410 name: tx-csum-none
411 doc: |
412 Number of packets that did not require the device to calculate the
413 checksum.
414 type: uint
415 -
416 name: tx-needs-csum
417 doc: |
418 Number of packets that required the device to calculate the checksum.
419 type: uint
420 -
421 name: tx-hw-gso-packets
422 doc: |
423 Number of packets that necessitated segmentation into smaller packets
424 by the device.
425 type: uint
426 -
427 name: tx-hw-gso-bytes
428 doc: See `tx-hw-gso-packets`.
429 type: uint
430 -
431 name: tx-hw-gso-wire-packets
432 doc: |
433 Number of wire-sized packets generated by processing
434 `tx-hw-gso-packets`
435 type: uint
436 -
437 name: tx-hw-gso-wire-bytes
438 doc: See `tx-hw-gso-wire-packets`.
439 type: uint
440 -
441 name: tx-hw-drop-ratelimits
442 doc: |
443 Number of the packets dropped by the device due to the transmit
444 packets bitrate exceeding the device rate limit.
445 type: uint
446 -
447 name: tx-stop
448 doc: |
449 Number of times driver paused accepting new tx packets
450 from the stack to this queue, because the queue was full.
451 Note that if BQL is supported and enabled on the device
452 the networking stack will avoid queuing a lot of data at once.
453 type: uint
454 -
455 name: tx-wake
456 doc: |
457 Number of times driver re-started accepting send
458 requests to this queue from the stack.
459 type: uint
460
461operations:
462 list:
463 -
464 name: dev-get
465 doc: Get / dump information about a netdev.
466 attribute-set: dev
467 do:
468 request:
469 attributes:
470 - ifindex
471 reply: &dev-all
472 attributes:
473 - ifindex
474 - xdp-features
475 - xdp-zc-max-segs
476 - xdp-rx-metadata-features
477 - xsk-features
478 dump:
479 reply: *dev-all
480 -
481 name: dev-add-ntf
482 doc: Notification about device appearing.
483 notify: dev-get
484 mcgrp: mgmt
485 -
486 name: dev-del-ntf
487 doc: Notification about device disappearing.
488 notify: dev-get
489 mcgrp: mgmt
490 -
491 name: dev-change-ntf
492 doc: Notification about device configuration being changed.
493 notify: dev-get
494 mcgrp: mgmt
495 -
496 name: page-pool-get
497 doc: |
498 Get / dump information about Page Pools.
499 (Only Page Pools associated with a net_device can be listed.)
500 attribute-set: page-pool
501 do:
502 request:
503 attributes:
504 - id
505 reply: &pp-reply
506 attributes:
507 - id
508 - ifindex
509 - napi-id
510 - inflight
511 - inflight-mem
512 - detach-time
513 dump:
514 reply: *pp-reply
515 config-cond: page-pool
516 -
517 name: page-pool-add-ntf
518 doc: Notification about page pool appearing.
519 notify: page-pool-get
520 mcgrp: page-pool
521 config-cond: page-pool
522 -
523 name: page-pool-del-ntf
524 doc: Notification about page pool disappearing.
525 notify: page-pool-get
526 mcgrp: page-pool
527 config-cond: page-pool
528 -
529 name: page-pool-change-ntf
530 doc: Notification about page pool configuration being changed.
531 notify: page-pool-get
532 mcgrp: page-pool
533 config-cond: page-pool
534 -
535 name: page-pool-stats-get
536 doc: Get page pool statistics.
537 attribute-set: page-pool-stats
538 do:
539 request:
540 attributes:
541 - info
542 reply: &pp-stats-reply
543 attributes:
544 - info
545 - alloc-fast
546 - alloc-slow
547 - alloc-slow-high-order
548 - alloc-empty
549 - alloc-refill
550 - alloc-waive
551 - recycle-cached
552 - recycle-cache-full
553 - recycle-ring
554 - recycle-ring-full
555 - recycle-released-refcnt
556 dump:
557 reply: *pp-stats-reply
558 config-cond: page-pool-stats
559 -
560 name: queue-get
561 doc: Get queue information from the kernel.
562 Only configured queues will be reported (as opposed to all available
563 hardware queues).
564 attribute-set: queue
565 do:
566 request:
567 attributes:
568 - ifindex
569 - type
570 - id
571 reply: &queue-get-op
572 attributes:
573 - id
574 - type
575 - napi-id
576 - ifindex
577 dump:
578 request:
579 attributes:
580 - ifindex
581 reply: *queue-get-op
582 -
583 name: napi-get
584 doc: Get information about NAPI instances configured on the system.
585 attribute-set: napi
586 do:
587 request:
588 attributes:
589 - id
590 reply: &napi-get-op
591 attributes:
592 - id
593 - ifindex
594 - irq
595 - pid
596 dump:
597 request:
598 attributes:
599 - ifindex
600 reply: *napi-get-op
601 -
602 name: qstats-get
603 doc: |
604 Get / dump fine grained statistics. Which statistics are reported
605 depends on the device and the driver, and whether the driver stores
606 software counters per-queue.
607 attribute-set: qstats
608 dump:
609 request:
610 attributes:
611 - ifindex
612 - scope
613 reply:
614 attributes:
615 - ifindex
616 - queue-type
617 - queue-id
618 - rx-packets
619 - rx-bytes
620 - tx-packets
621 - tx-bytes
622
623mcast-groups:
624 list:
625 -
626 name: mgmt
627 -
628 name: page-pool