~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/netlink/specs/netdev.yaml

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
  2 
  3 name: netdev
  4 
  5 doc:
  6   netdev configuration over generic netlink.
  7 
  8 definitions:
  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 
 82 attribute-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: dmabuf
172         doc: ID of the dmabuf this page-pool is attached to.
173         type: u32
174   -
175     name: page-pool-info
176     subset-of: page-pool
177     attributes:
178       -
179         name: id
180       -
181         name: ifindex
182   -
183     name: page-pool-stats
184     doc: |
185       Page pool statistics, see docs for struct page_pool_stats
186       for information about individual statistics.
187     attributes:
188       -
189         name: info
190         doc: Page pool identifying information.
191         type: nest
192         nested-attributes: page-pool-info
193       -
194         name: alloc-fast
195         type: uint
196         value: 8 # reserve some attr ids in case we need more metadata later
197       -
198         name: alloc-slow
199         type: uint
200       -
201         name: alloc-slow-high-order
202         type: uint
203       -
204         name: alloc-empty
205         type: uint
206       -
207         name: alloc-refill
208         type: uint
209       -
210         name: alloc-waive
211         type: uint
212       -
213         name: recycle-cached
214         type: uint
215       -
216         name: recycle-cache-full
217         type: uint
218       -
219         name: recycle-ring
220         type: uint
221       -
222         name: recycle-ring-full
223         type: uint
224       -
225         name: recycle-released-refcnt
226         type: uint
227 
228   -
229     name: napi
230     attributes:
231       -
232         name: ifindex
233         doc: ifindex of the netdevice to which NAPI instance belongs.
234         type: u32
235         checks:
236           min: 1
237       -
238         name: id
239         doc: ID of the NAPI instance.
240         type: u32
241       -
242         name: irq
243         doc: The associated interrupt vector number for the napi
244         type: u32
245       -
246         name: pid
247         doc: PID of the napi thread, if NAPI is configured to operate in
248              threaded mode. If NAPI is not in threaded mode (i.e. uses normal
249              softirq context), the attribute will be absent.
250         type: u32
251   -
252     name: queue
253     attributes:
254       -
255         name: id
256         doc: Queue index; most queue types are indexed like a C array, with
257              indexes starting at 0 and ending at queue count - 1. Queue indexes
258              are scoped to an interface and queue type.
259         type: u32
260       -
261         name: ifindex
262         doc: ifindex of the netdevice to which the queue belongs.
263         type: u32
264         checks:
265           min: 1
266       -
267         name: type
268         doc: Queue type as rx, tx. Each queue type defines a separate ID space.
269         type: u32
270         enum: queue-type
271       -
272         name: napi-id
273         doc: ID of the NAPI instance which services this queue.
274         type: u32
275       -
276         name: dmabuf
277         doc: ID of the dmabuf attached to this queue, if any.
278         type: u32
279 
280   -
281     name: qstats
282     doc: |
283       Get device statistics, scoped to a device or a queue.
284       These statistics extend (and partially duplicate) statistics available
285       in struct rtnl_link_stats64.
286       Value of the `scope` attribute determines how statistics are
287       aggregated. When aggregated for the entire device the statistics
288       represent the total number of events since last explicit reset of
289       the device (i.e. not a reconfiguration like changing queue count).
290       When reported per-queue, however, the statistics may not add
291       up to the total number of events, will only be reported for currently
292       active objects, and will likely report the number of events since last
293       reconfiguration.
294     attributes:
295       -
296         name: ifindex
297         doc: ifindex of the netdevice to which stats belong.
298         type: u32
299         checks:
300           min: 1
301       -
302         name: queue-type
303         doc: Queue type as rx, tx, for queue-id.
304         type: u32
305         enum: queue-type
306       -
307         name: queue-id
308         doc: Queue ID, if stats are scoped to a single queue instance.
309         type: u32
310       -
311         name: scope
312         doc: |
313           What object type should be used to iterate over the stats.
314         type: uint
315         enum: qstats-scope
316       -
317         name: rx-packets
318         doc: |
319           Number of wire packets successfully received and passed to the stack.
320           For drivers supporting XDP, XDP is considered the first layer
321           of the stack, so packets consumed by XDP are still counted here.
322         type: uint
323         value: 8 # reserve some attr ids in case we need more metadata later
324       -
325         name: rx-bytes
326         doc: Successfully received bytes, see `rx-packets`.
327         type: uint
328       -
329         name: tx-packets
330         doc: |
331           Number of wire packets successfully sent. Packet is considered to be
332           successfully sent once it is in device memory (usually this means
333           the device has issued a DMA completion for the packet).
334         type: uint
335       -
336         name: tx-bytes
337         doc: Successfully sent bytes, see `tx-packets`.
338         type: uint
339       -
340         name: rx-alloc-fail
341         doc: |
342           Number of times skb or buffer allocation failed on the Rx datapath.
343           Allocation failure may, or may not result in a packet drop, depending
344           on driver implementation and whether system recovers quickly.
345         type: uint
346       -
347         name: rx-hw-drops
348         doc: |
349           Number of all packets which entered the device, but never left it,
350           including but not limited to: packets dropped due to lack of buffer
351           space, processing errors, explicit or implicit policies and packet
352           filters.
353         type: uint
354       -
355         name: rx-hw-drop-overruns
356         doc: |
357           Number of packets dropped due to transient lack of resources, such as
358           buffer space, host descriptors etc.
359         type: uint
360       -
361         name: rx-csum-complete
362         doc: Number of packets that were marked as CHECKSUM_COMPLETE.
363         type: uint
364       -
365         name: rx-csum-unnecessary
366         doc: Number of packets that were marked as CHECKSUM_UNNECESSARY.
367         type: uint
368       -
369         name: rx-csum-none
370         doc: Number of packets that were not checksummed by device.
371         type: uint
372       -
373         name: rx-csum-bad
374         doc: |
375           Number of packets with bad checksum. The packets are not discarded,
376           but still delivered to the stack.
377         type: uint
378       -
379         name: rx-hw-gro-packets
380         doc: |
381           Number of packets that were coalesced from smaller packets by the device.
382           Counts only packets coalesced with the HW-GRO netdevice feature,
383           LRO-coalesced packets are not counted.
384         type: uint
385       -
386         name: rx-hw-gro-bytes
387         doc: See `rx-hw-gro-packets`.
388         type: uint
389       -
390         name: rx-hw-gro-wire-packets
391         doc: |
392           Number of packets that were coalesced to bigger packetss with the HW-GRO
393           netdevice feature. LRO-coalesced packets are not counted.
394         type: uint
395       -
396         name: rx-hw-gro-wire-bytes
397         doc: See `rx-hw-gro-wire-packets`.
398         type: uint
399       -
400         name: rx-hw-drop-ratelimits
401         doc: |
402           Number of the packets dropped by the device due to the received
403           packets bitrate exceeding the device rate limit.
404         type: uint
405       -
406         name: tx-hw-drops
407         doc: |
408           Number of packets that arrived at the device but never left it,
409           encompassing packets dropped for reasons such as processing errors, as
410           well as those affected by explicitly defined policies and packet
411           filtering criteria.
412         type: uint
413       -
414         name: tx-hw-drop-errors
415         doc: Number of packets dropped because they were invalid or malformed.
416         type: uint
417       -
418         name: tx-csum-none
419         doc: |
420           Number of packets that did not require the device to calculate the
421           checksum.
422         type: uint
423       -
424         name: tx-needs-csum
425         doc: |
426           Number of packets that required the device to calculate the checksum.
427         type: uint
428       -
429         name: tx-hw-gso-packets
430         doc: |
431           Number of packets that necessitated segmentation into smaller packets
432           by the device.
433         type: uint
434       -
435         name: tx-hw-gso-bytes
436         doc: See `tx-hw-gso-packets`.
437         type: uint
438       -
439         name: tx-hw-gso-wire-packets
440         doc: |
441           Number of wire-sized packets generated by processing
442           `tx-hw-gso-packets`
443         type: uint
444       -
445         name: tx-hw-gso-wire-bytes
446         doc: See `tx-hw-gso-wire-packets`.
447         type: uint
448       -
449         name: tx-hw-drop-ratelimits
450         doc: |
451           Number of the packets dropped by the device due to the transmit
452           packets bitrate exceeding the device rate limit.
453         type: uint
454       -
455         name: tx-stop
456         doc: |
457           Number of times driver paused accepting new tx packets
458           from the stack to this queue, because the queue was full.
459           Note that if BQL is supported and enabled on the device
460           the networking stack will avoid queuing a lot of data at once.
461         type: uint
462       -
463         name: tx-wake
464         doc: |
465           Number of times driver re-started accepting send
466           requests to this queue from the stack.
467         type: uint
468   -
469     name: queue-id
470     subset-of: queue
471     attributes:
472       -
473         name: id
474       -
475         name: type
476   -
477     name: dmabuf
478     attributes:
479       -
480         name: ifindex
481         doc: netdev ifindex to bind the dmabuf to.
482         type: u32
483         checks:
484           min: 1
485       -
486         name: queues
487         doc: receive queues to bind the dmabuf to.
488         type: nest
489         nested-attributes: queue-id
490         multi-attr: true
491       -
492         name: fd
493         doc: dmabuf file descriptor to bind.
494         type: u32
495       -
496         name: id
497         doc: id of the dmabuf binding
498         type: u32
499         checks:
500           min: 1
501 
502 operations:
503   list:
504     -
505       name: dev-get
506       doc: Get / dump information about a netdev.
507       attribute-set: dev
508       do:
509         request:
510           attributes:
511             - ifindex
512         reply: &dev-all
513           attributes:
514             - ifindex
515             - xdp-features
516             - xdp-zc-max-segs
517             - xdp-rx-metadata-features
518             - xsk-features
519       dump:
520         reply: *dev-all
521     -
522       name: dev-add-ntf
523       doc: Notification about device appearing.
524       notify: dev-get
525       mcgrp: mgmt
526     -
527       name: dev-del-ntf
528       doc: Notification about device disappearing.
529       notify: dev-get
530       mcgrp: mgmt
531     -
532       name: dev-change-ntf
533       doc: Notification about device configuration being changed.
534       notify: dev-get
535       mcgrp: mgmt
536     -
537       name: page-pool-get
538       doc: |
539         Get / dump information about Page Pools.
540         (Only Page Pools associated with a net_device can be listed.)
541       attribute-set: page-pool
542       do:
543         request:
544           attributes:
545             - id
546         reply: &pp-reply
547           attributes:
548             - id
549             - ifindex
550             - napi-id
551             - inflight
552             - inflight-mem
553             - detach-time
554             - dmabuf
555       dump:
556         reply: *pp-reply
557       config-cond: page-pool
558     -
559       name: page-pool-add-ntf
560       doc: Notification about page pool appearing.
561       notify: page-pool-get
562       mcgrp: page-pool
563       config-cond: page-pool
564     -
565       name: page-pool-del-ntf
566       doc: Notification about page pool disappearing.
567       notify: page-pool-get
568       mcgrp: page-pool
569       config-cond: page-pool
570     -
571       name: page-pool-change-ntf
572       doc: Notification about page pool configuration being changed.
573       notify: page-pool-get
574       mcgrp: page-pool
575       config-cond: page-pool
576     -
577       name: page-pool-stats-get
578       doc: Get page pool statistics.
579       attribute-set: page-pool-stats
580       do:
581         request:
582           attributes:
583             - info
584         reply: &pp-stats-reply
585           attributes:
586             - info
587             - alloc-fast
588             - alloc-slow
589             - alloc-slow-high-order
590             - alloc-empty
591             - alloc-refill
592             - alloc-waive
593             - recycle-cached
594             - recycle-cache-full
595             - recycle-ring
596             - recycle-ring-full
597             - recycle-released-refcnt
598       dump:
599         reply: *pp-stats-reply
600       config-cond: page-pool-stats
601     -
602       name: queue-get
603       doc: Get queue information from the kernel.
604            Only configured queues will be reported (as opposed to all available
605            hardware queues).
606       attribute-set: queue
607       do:
608         request:
609           attributes:
610             - ifindex
611             - type
612             - id
613         reply: &queue-get-op
614           attributes:
615             - id
616             - type
617             - napi-id
618             - ifindex
619             - dmabuf
620       dump:
621         request:
622           attributes:
623             - ifindex
624         reply: *queue-get-op
625     -
626       name: napi-get
627       doc: Get information about NAPI instances configured on the system.
628       attribute-set: napi
629       do:
630         request:
631           attributes:
632             - id
633         reply: &napi-get-op
634           attributes:
635             - id
636             - ifindex
637             - irq
638             - pid
639       dump:
640         request:
641           attributes:
642             - ifindex
643         reply: *napi-get-op
644     -
645       name: qstats-get
646       doc: |
647         Get / dump fine grained statistics. Which statistics are reported
648         depends on the device and the driver, and whether the driver stores
649         software counters per-queue.
650       attribute-set: qstats
651       dump:
652         request:
653           attributes:
654             - ifindex
655             - scope
656         reply:
657           attributes:
658             - ifindex
659             - queue-type
660             - queue-id
661             - rx-packets
662             - rx-bytes
663             - tx-packets
664             - tx-bytes
665     -
666       name: bind-rx
667       doc: Bind dmabuf to netdev
668       attribute-set: dmabuf
669       flags: [ admin-perm ]
670       do:
671         request:
672           attributes:
673             - ifindex
674             - fd
675             - queues
676         reply:
677           attributes:
678             - id
679 
680 kernel-family:
681   headers: [ "linux/list.h"]
682   sock-priv: struct list_head
683 
684 mcast-groups:
685   list:
686     -
687       name: mgmt
688     -
689       name: page-pool

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php