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