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