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 339operations: 340 list: 341 - 342 name: dev-get 343 doc: Get / dump information about a netdev. 344 attribute-set: dev 345 do: 346 request: 347 attributes: 348 - ifindex 349 reply: &dev-all 350 attributes: 351 - ifindex 352 - xdp-features 353 - xdp-zc-max-segs 354 - xdp-rx-metadata-features 355 - xsk-features 356 dump: 357 reply: *dev-all 358 - 359 name: dev-add-ntf 360 doc: Notification about device appearing. 361 notify: dev-get 362 mcgrp: mgmt 363 - 364 name: dev-del-ntf 365 doc: Notification about device disappearing. 366 notify: dev-get 367 mcgrp: mgmt 368 - 369 name: dev-change-ntf 370 doc: Notification about device configuration being changed. 371 notify: dev-get 372 mcgrp: mgmt 373 - 374 name: page-pool-get 375 doc: | 376 Get / dump information about Page Pools. 377 (Only Page Pools associated with a net_device can be listed.) 378 attribute-set: page-pool 379 do: 380 request: 381 attributes: 382 - id 383 reply: &pp-reply 384 attributes: 385 - id 386 - ifindex 387 - napi-id 388 - inflight 389 - inflight-mem 390 - detach-time 391 dump: 392 reply: *pp-reply 393 config-cond: page-pool 394 - 395 name: page-pool-add-ntf 396 doc: Notification about page pool appearing. 397 notify: page-pool-get 398 mcgrp: page-pool 399 config-cond: page-pool 400 - 401 name: page-pool-del-ntf 402 doc: Notification about page pool disappearing. 403 notify: page-pool-get 404 mcgrp: page-pool 405 config-cond: page-pool 406 - 407 name: page-pool-change-ntf 408 doc: Notification about page pool configuration being changed. 409 notify: page-pool-get 410 mcgrp: page-pool 411 config-cond: page-pool 412 - 413 name: page-pool-stats-get 414 doc: Get page pool statistics. 415 attribute-set: page-pool-stats 416 do: 417 request: 418 attributes: 419 - info 420 reply: &pp-stats-reply 421 attributes: 422 - info 423 - alloc-fast 424 - alloc-slow 425 - alloc-slow-high-order 426 - alloc-empty 427 - alloc-refill 428 - alloc-waive 429 - recycle-cached 430 - recycle-cache-full 431 - recycle-ring 432 - recycle-ring-full 433 - recycle-released-refcnt 434 dump: 435 reply: *pp-stats-reply 436 config-cond: page-pool-stats 437 - 438 name: queue-get 439 doc: Get queue information from the kernel. 440 Only configured queues will be reported (as opposed to all available 441 hardware queues). 442 attribute-set: queue 443 do: 444 request: 445 attributes: 446 - ifindex 447 - type 448 - id 449 reply: &queue-get-op 450 attributes: 451 - id 452 - type 453 - napi-id 454 - ifindex 455 dump: 456 request: 457 attributes: 458 - ifindex 459 reply: *queue-get-op 460 - 461 name: napi-get 462 doc: Get information about NAPI instances configured on the system. 463 attribute-set: napi 464 do: 465 request: 466 attributes: 467 - id 468 reply: &napi-get-op 469 attributes: 470 - id 471 - ifindex 472 - irq 473 - pid 474 dump: 475 request: 476 attributes: 477 - ifindex 478 reply: *napi-get-op 479 - 480 name: qstats-get 481 doc: | 482 Get / dump fine grained statistics. Which statistics are reported 483 depends on the device and the driver, and whether the driver stores 484 software counters per-queue. 485 attribute-set: qstats 486 dump: 487 request: 488 attributes: 489 - scope 490 reply: 491 attributes: 492 - ifindex 493 - queue-type 494 - queue-id 495 - rx-packets 496 - rx-bytes 497 - tx-packets 498 - tx-bytes 499 500mcast-groups: 501 list: 502 - 503 name: mgmt 504 - 505 name: page-pool 506