nl-linux 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +5 -0
  3. data/CHANGELOG.md +6 -0
  4. data/Rakefile +14 -2
  5. data/generated/nl/linux/binder.rb +172 -44
  6. data/generated/nl/linux/conntrack.rb +1293 -370
  7. data/generated/nl/linux/dev_energymodel.rb +278 -93
  8. data/generated/nl/linux/devlink.rb +5654 -1954
  9. data/generated/nl/linux/dpll.rb +1838 -669
  10. data/generated/nl/linux/drm_ras.rb +234 -72
  11. data/generated/nl/linux/ethtool.rb +6683 -2885
  12. data/generated/nl/linux/fou.rb +308 -129
  13. data/generated/nl/linux/handshake.rb +277 -99
  14. data/generated/nl/linux/lockd.rb +88 -33
  15. data/generated/nl/linux/mptcp_pm.rb +639 -186
  16. data/generated/nl/linux/net_shaper.rb +782 -224
  17. data/generated/nl/linux/netdev.rb +2105 -631
  18. data/generated/nl/linux/nfsd.rb +1030 -358
  19. data/generated/nl/linux/nftables.rb +5041 -1612
  20. data/generated/nl/linux/nl80211.rb +4531 -871
  21. data/generated/nl/linux/nlctrl.rb +411 -119
  22. data/generated/nl/linux/ovpn.rb +1211 -293
  23. data/generated/nl/linux/ovs_datapath.rb +271 -106
  24. data/generated/nl/linux/ovs_flow.rb +1819 -354
  25. data/generated/nl/linux/ovs_packet.rb +257 -82
  26. data/generated/nl/linux/ovs_vport.rb +334 -132
  27. data/generated/nl/linux/psp.rb +916 -281
  28. data/generated/nl/linux/rt_addr.rb +369 -166
  29. data/generated/nl/linux/rt_link.rb +6708 -1450
  30. data/generated/nl/linux/rt_neigh.rb +919 -364
  31. data/generated/nl/linux/rt_route.rb +1034 -448
  32. data/generated/nl/linux/rt_rule.rb +775 -395
  33. data/generated/nl/linux/sunrpc_cache.rb +297 -102
  34. data/generated/nl/linux/tc.rb +9989 -1780
  35. data/generated/nl/linux/tcp_metrics.rb +327 -105
  36. data/generated/nl/linux/team.rb +279 -93
  37. data/generated/nl/linux/wireguard.rb +432 -95
  38. data/generated/nl/linux.rb +1 -0
  39. data/lib/nl/linux/nlctrl_resolver.rb +31 -0
  40. data/lib/nl/linux/version.rb +1 -1
  41. data/sig/generated/nl/linux/binder.rbs +366 -0
  42. data/sig/generated/nl/linux/conntrack.rbs +2787 -0
  43. data/sig/generated/nl/linux/dev_energymodel.rbs +636 -0
  44. data/sig/generated/nl/linux/devlink.rbs +12496 -0
  45. data/sig/generated/nl/linux/dpll.rbs +3461 -0
  46. data/sig/generated/nl/linux/drm_ras.rbs +553 -0
  47. data/sig/generated/nl/linux/ethtool.rbs +15291 -0
  48. data/sig/generated/nl/linux/fou.rbs +702 -0
  49. data/sig/generated/nl/linux/handshake.rbs +622 -0
  50. data/sig/generated/nl/linux/lockd.rbs +234 -0
  51. data/sig/generated/nl/linux/mptcp_pm.rbs +1511 -0
  52. data/sig/generated/nl/linux/net_shaper.rbs +1645 -0
  53. data/sig/generated/nl/linux/netdev.rbs +4187 -0
  54. data/sig/generated/nl/linux/nfsd.rbs +2520 -0
  55. data/sig/generated/nl/linux/nftables.rbs +10304 -0
  56. data/sig/generated/nl/linux/nl80211.rbs +9786 -0
  57. data/sig/generated/nl/linux/nlctrl.rbs +944 -0
  58. data/sig/generated/nl/linux/nlctrl_resolver.rbs +20 -0
  59. data/sig/generated/nl/linux/ovpn.rbs +2564 -0
  60. data/sig/generated/nl/linux/ovs_datapath.rbs +640 -0
  61. data/sig/generated/nl/linux/ovs_flow.rbs +3659 -0
  62. data/sig/generated/nl/linux/ovs_packet.rbs +540 -0
  63. data/sig/generated/nl/linux/ovs_vport.rbs +777 -0
  64. data/sig/generated/nl/linux/psp.rbs +1846 -0
  65. data/sig/generated/nl/linux/rt_addr.rbs +866 -0
  66. data/sig/generated/nl/linux/rt_link.rbs +13438 -0
  67. data/sig/generated/nl/linux/rt_neigh.rbs +2124 -0
  68. data/sig/generated/nl/linux/rt_route.rbs +2218 -0
  69. data/sig/generated/nl/linux/rt_rule.rbs +1726 -0
  70. data/sig/generated/nl/linux/sunrpc_cache.rbs +739 -0
  71. data/sig/generated/nl/linux/tc.rbs +19931 -0
  72. data/sig/generated/nl/linux/tcp_metrics.rbs +740 -0
  73. data/sig/generated/nl/linux/team.rbs +733 -0
  74. data/sig/generated/nl/linux/version.rbs +7 -0
  75. data/sig/generated/nl/linux/wireguard.rbs +1006 -0
  76. data/sig/generated/nl/linux.rbs +6 -0
  77. data/sig/generated/nl-linux.rbs +2 -0
  78. metadata +46 -7
@@ -0,0 +1,4187 @@
1
+ # Generated from generated/nl/linux/netdev.rb with RBS::Inline
2
+
3
+ module Nl
4
+ module Linux
5
+ # netdev configuration over generic netlink.
6
+ class Netdev < ::Nl::Genl::Family
7
+ NAME: ::String
8
+
9
+ VERSION: ::Integer
10
+
11
+ # @rbs (?resolver: ^(::Nl::Genl::Client, ::String) -> ::Nl::Genl::FamilyInfo, ?executor: executor?, ?notification_capacity: ::Integer?) -> (::Nl::Family::Session & instance)
12
+ # @rbs | [R] (?resolver: ^(::Nl::Genl::Client, ::String) -> ::Nl::Genl::FamilyInfo, ?executor: executor?, ?notification_capacity: ::Integer?) { (instance) -> R } -> R
13
+ # @overload open(resolver: ::Nl::Linux::DEFAULT_RESOLVER, executor: nil, notification_capacity: DEFAULT_NOTIFICATION_CAPACITY)
14
+ # @param [#call] resolver
15
+ # @param [Symbol, nil] executor
16
+ # @param [Integer, nil] notification_capacity
17
+ # @return [Netdev]
18
+ # @overload open(resolver: ::Nl::Linux::DEFAULT_RESOLVER, executor: nil, notification_capacity: DEFAULT_NOTIFICATION_CAPACITY, &block)
19
+ # @param [#call] resolver
20
+ # @param [Symbol, nil] executor
21
+ # @param [Integer, nil] notification_capacity
22
+ # @yieldparam [Netdev] family
23
+ # @return [Object] the result of the block
24
+ def self.open: (?resolver: ^(::Nl::Genl::Client, ::String) -> ::Nl::Genl::FamilyInfo, ?executor: executor?, ?notification_capacity: ::Integer?) -> (::Nl::Family::Session & instance)
25
+
26
+ # @private
27
+ MCAST_GROUPS: Hash[::Symbol, ::Nl::McastGroup]
28
+
29
+ module Enums
30
+ module QueueType
31
+ Rx: ::Integer
32
+
33
+ Tx: ::Integer
34
+ end
35
+
36
+ module NapiThreaded
37
+ Disabled: ::Integer
38
+
39
+ Enabled: ::Integer
40
+
41
+ BusyPoll: ::Integer
42
+ end
43
+ end
44
+
45
+ module Flags
46
+ module XdpAct
47
+ # XDP features set supported by all drivers (XDP_ABORTED, XDP_DROP, XDP_PASS, XDP_TX)
48
+ Basic: ::Integer
49
+
50
+ # The netdev supports XDP_REDIRECT
51
+ Redirect: ::Integer
52
+
53
+ # This feature informs if netdev implements ndo_xdp_xmit callback.
54
+ NdoXmit: ::Integer
55
+
56
+ # This feature informs if netdev supports AF_XDP in zero copy mode.
57
+ XskZerocopy: ::Integer
58
+
59
+ # This feature informs if netdev supports XDP hw offloading.
60
+ HwOffload: ::Integer
61
+
62
+ # This feature informs if netdev implements non-linear XDP buffer support in the driver napi callback.
63
+ RxSg: ::Integer
64
+
65
+ # This feature informs if netdev implements non-linear XDP buffer support in ndo_xdp_xmit callback.
66
+ NdoXmitSg: ::Integer
67
+ end
68
+
69
+ module XdpRxMetadata
70
+ # Device is capable of exposing receive HW timestamp via
71
+ # bpf_xdp_metadata_rx_timestamp().
72
+ Timestamp: ::Integer
73
+
74
+ # Device is capable of exposing receive packet hash via
75
+ # bpf_xdp_metadata_rx_hash().
76
+ Hash: ::Integer
77
+
78
+ # Device is capable of exposing receive packet VLAN tag via
79
+ # bpf_xdp_metadata_rx_vlan_tag().
80
+ VlanTag: ::Integer
81
+ end
82
+
83
+ module XskFlags
84
+ # HW timestamping egress packets is supported by the driver.
85
+ TxTimestamp: ::Integer
86
+
87
+ # L3 checksum HW offload is supported by the driver.
88
+ TxChecksum: ::Integer
89
+
90
+ # Launch time HW offload is supported by the driver.
91
+ TxLaunchTimeFifo: ::Integer
92
+ end
93
+
94
+ module QstatsScope
95
+ Queue: ::Integer
96
+ end
97
+ end
98
+
99
+ module Structs
100
+ end
101
+
102
+ module AttributeSets
103
+ class Dev < ::Nl::AttributeSet
104
+ # Abstract class
105
+ class Attribute < ::Nl::AttributeSet::Attribute
106
+ end
107
+
108
+ # netdev ifindex
109
+ class Ifindex < Attribute
110
+ TYPE: ::Integer
111
+
112
+ NAME: ::Symbol
113
+
114
+ # @private
115
+ ORDER: ::Integer
116
+
117
+ # @private
118
+ DATATYPE: untyped
119
+ end
120
+
121
+ class Pad < Attribute
122
+ TYPE: ::Integer
123
+
124
+ NAME: ::Symbol
125
+
126
+ # @private
127
+ ORDER: ::Integer
128
+
129
+ # @private
130
+ DATATYPE: untyped
131
+ end
132
+
133
+ # Bitmask of enabled xdp-features.
134
+ #
135
+ # Known flags are defined in {Flags::XdpAct}.
136
+ class XdpFeatures < Attribute
137
+ TYPE: ::Integer
138
+
139
+ NAME: ::Symbol
140
+
141
+ # @private
142
+ ORDER: ::Integer
143
+
144
+ # @private
145
+ DATATYPE: untyped
146
+ end
147
+
148
+ # max fragment count supported by ZC driver
149
+ class XdpZcMaxSegs < Attribute
150
+ TYPE: ::Integer
151
+
152
+ NAME: ::Symbol
153
+
154
+ # @private
155
+ ORDER: ::Integer
156
+
157
+ # @private
158
+ DATATYPE: untyped
159
+ end
160
+
161
+ # Bitmask of supported XDP receive metadata features. See {https://docs.kernel.org/networking/xdp-rx-metadata.html Documentation/networking/xdp-rx-metadata.rst} for more details.
162
+ #
163
+ # Known flags are defined in {Flags::XdpRxMetadata}.
164
+ class XdpRxMetadataFeatures < Attribute
165
+ TYPE: ::Integer
166
+
167
+ NAME: ::Symbol
168
+
169
+ # @private
170
+ ORDER: ::Integer
171
+
172
+ # @private
173
+ DATATYPE: untyped
174
+ end
175
+
176
+ # Bitmask of enabled AF_XDP features.
177
+ #
178
+ # Known flags are defined in {Flags::XskFlags}.
179
+ class XskFeatures < Attribute
180
+ TYPE: ::Integer
181
+
182
+ NAME: ::Symbol
183
+
184
+ # @private
185
+ ORDER: ::Integer
186
+
187
+ # @private
188
+ DATATYPE: untyped
189
+ end
190
+
191
+ # @private
192
+ BY_NAME: Hash[::Symbol, Attribute]
193
+
194
+ # @private
195
+ BY_TYPE: Hash[::Integer, Attribute]
196
+
197
+ # netdev ifindex
198
+ # @rbs return: ::Integer
199
+ # @return [Integer]
200
+ # @see Ifindex
201
+ def ifindex: () -> ::Integer
202
+
203
+ # Bitmask of enabled xdp-features.
204
+ #
205
+ # Known flags are defined in {Flags::XdpAct}.
206
+ # @rbs return: ::Integer
207
+ # @return [Integer]
208
+ # @see XdpFeatures
209
+ def xdp_features: () -> ::Integer
210
+
211
+ # max fragment count supported by ZC driver
212
+ # @rbs return: ::Integer
213
+ # @return [Integer]
214
+ # @see XdpZcMaxSegs
215
+ def xdp_zc_max_segs: () -> ::Integer
216
+
217
+ # Bitmask of supported XDP receive metadata features. See {https://docs.kernel.org/networking/xdp-rx-metadata.html Documentation/networking/xdp-rx-metadata.rst} for more details.
218
+ #
219
+ # Known flags are defined in {Flags::XdpRxMetadata}.
220
+ # @rbs return: ::Integer
221
+ # @return [Integer]
222
+ # @see XdpRxMetadataFeatures
223
+ def xdp_rx_metadata_features: () -> ::Integer
224
+
225
+ # Bitmask of enabled AF_XDP features.
226
+ #
227
+ # Known flags are defined in {Flags::XskFlags}.
228
+ # @rbs return: ::Integer
229
+ # @return [Integer]
230
+ # @see XskFeatures
231
+ def xsk_features: () -> ::Integer
232
+
233
+ # Looks up Attribute class by name.
234
+ # @rbs name: Symbol
235
+ # @rbs return: Attribute
236
+ # @param [Symbol] name
237
+ # @return [Attribute]
238
+ def self.by_name: (Symbol name) -> Attribute
239
+
240
+ # Looks up Attribute class by type value.
241
+ # @rbs type: Integer
242
+ # @rbs return: Attribute
243
+ # @param [Integer] type
244
+ # @return [Attribute]
245
+ def self.by_type: (Integer type) -> Attribute
246
+ end
247
+
248
+ class IoUringProviderInfo < ::Nl::AttributeSet
249
+ # Abstract class
250
+ class Attribute < ::Nl::AttributeSet::Attribute
251
+ end
252
+
253
+ # RX buffer length in bytes for this io_uring memory provider.
254
+ # Reflects the rx_buf_len passed at io_uring zerocopy rx
255
+ # registration time.
256
+ class RxBufLen < Attribute
257
+ TYPE: ::Integer
258
+
259
+ NAME: ::Symbol
260
+
261
+ # @private
262
+ ORDER: ::Integer
263
+
264
+ # @private
265
+ DATATYPE: untyped
266
+ end
267
+
268
+ # @private
269
+ BY_NAME: Hash[::Symbol, Attribute]
270
+
271
+ # @private
272
+ BY_TYPE: Hash[::Integer, Attribute]
273
+
274
+ # RX buffer length in bytes for this io_uring memory provider.
275
+ # Reflects the rx_buf_len passed at io_uring zerocopy rx
276
+ # registration time.
277
+ # @rbs return: ::Integer
278
+ # @return [Integer]
279
+ # @see RxBufLen
280
+ def rx_buf_len: () -> ::Integer
281
+
282
+ # Looks up Attribute class by name.
283
+ # @rbs name: Symbol
284
+ # @rbs return: Attribute
285
+ # @param [Symbol] name
286
+ # @return [Attribute]
287
+ def self.by_name: (Symbol name) -> Attribute
288
+
289
+ # Looks up Attribute class by type value.
290
+ # @rbs type: Integer
291
+ # @rbs return: Attribute
292
+ # @param [Integer] type
293
+ # @return [Attribute]
294
+ def self.by_type: (Integer type) -> Attribute
295
+ end
296
+
297
+ class PagePool < ::Nl::AttributeSet
298
+ # Abstract class
299
+ class Attribute < ::Nl::AttributeSet::Attribute
300
+ end
301
+
302
+ # Unique ID of a Page Pool instance.
303
+ class Id < Attribute
304
+ TYPE: ::Integer
305
+
306
+ NAME: ::Symbol
307
+
308
+ # @private
309
+ ORDER: ::Integer
310
+
311
+ # @private
312
+ DATATYPE: untyped
313
+ end
314
+
315
+ # ifindex of the netdev to which the pool belongs.
316
+ # May not be reported if the page pool was allocated for a netdev
317
+ # which got destroyed already (page pools may outlast their netdevs
318
+ # because they wait for all memory to be returned).
319
+ class Ifindex < Attribute
320
+ TYPE: ::Integer
321
+
322
+ NAME: ::Symbol
323
+
324
+ # @private
325
+ ORDER: ::Integer
326
+
327
+ # @private
328
+ DATATYPE: untyped
329
+ end
330
+
331
+ # Id of NAPI using this Page Pool instance.
332
+ class NapiId < Attribute
333
+ TYPE: ::Integer
334
+
335
+ NAME: ::Symbol
336
+
337
+ # @private
338
+ ORDER: ::Integer
339
+
340
+ # @private
341
+ DATATYPE: untyped
342
+ end
343
+
344
+ # Number of outstanding references to this page pool (allocated
345
+ # but yet to be freed pages). Allocated pages may be held in
346
+ # socket receive queues, driver receive ring, page pool recycling
347
+ # ring, the page pool cache, etc.
348
+ class Inflight < Attribute
349
+ TYPE: ::Integer
350
+
351
+ NAME: ::Symbol
352
+
353
+ # @private
354
+ ORDER: ::Integer
355
+
356
+ # @private
357
+ DATATYPE: untyped
358
+ end
359
+
360
+ # Amount of memory held by inflight pages.
361
+ class InflightMem < Attribute
362
+ TYPE: ::Integer
363
+
364
+ NAME: ::Symbol
365
+
366
+ # @private
367
+ ORDER: ::Integer
368
+
369
+ # @private
370
+ DATATYPE: untyped
371
+ end
372
+
373
+ # Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
374
+ # the driver. Once detached Page Pool can no longer be used to
375
+ # allocate memory.
376
+ # Page Pools wait for all the memory allocated from them to be freed
377
+ # before truly disappearing. "Detached" Page Pools cannot be
378
+ # "re-attached", they are just waiting to disappear.
379
+ # Attribute is absent if Page Pool has not been detached, and
380
+ # can still be used to allocate new memory.
381
+ class DetachTime < Attribute
382
+ TYPE: ::Integer
383
+
384
+ NAME: ::Symbol
385
+
386
+ # @private
387
+ ORDER: ::Integer
388
+
389
+ # @private
390
+ DATATYPE: untyped
391
+ end
392
+
393
+ # ID of the dmabuf this page-pool is attached to.
394
+ class Dmabuf < Attribute
395
+ TYPE: ::Integer
396
+
397
+ NAME: ::Symbol
398
+
399
+ # @private
400
+ ORDER: ::Integer
401
+
402
+ # @private
403
+ DATATYPE: untyped
404
+ end
405
+
406
+ # io-uring memory provider information.
407
+ class IoUring < Attribute
408
+ TYPE: ::Integer
409
+
410
+ NAME: ::Symbol
411
+
412
+ # @private
413
+ ORDER: ::Integer
414
+ end
415
+
416
+ # @private
417
+ BY_NAME: Hash[::Symbol, Attribute]
418
+
419
+ # @private
420
+ BY_TYPE: Hash[::Integer, Attribute]
421
+
422
+ # Unique ID of a Page Pool instance.
423
+ # @rbs return: ::Integer
424
+ # @return [Integer]
425
+ # @see Id
426
+ def id: () -> ::Integer
427
+
428
+ # ifindex of the netdev to which the pool belongs.
429
+ # May not be reported if the page pool was allocated for a netdev
430
+ # which got destroyed already (page pools may outlast their netdevs
431
+ # because they wait for all memory to be returned).
432
+ # @rbs return: ::Integer
433
+ # @return [Integer]
434
+ # @see Ifindex
435
+ def ifindex: () -> ::Integer
436
+
437
+ # Id of NAPI using this Page Pool instance.
438
+ # @rbs return: ::Integer
439
+ # @return [Integer]
440
+ # @see NapiId
441
+ def napi_id: () -> ::Integer
442
+
443
+ # Number of outstanding references to this page pool (allocated
444
+ # but yet to be freed pages). Allocated pages may be held in
445
+ # socket receive queues, driver receive ring, page pool recycling
446
+ # ring, the page pool cache, etc.
447
+ # @rbs return: ::Integer
448
+ # @return [Integer]
449
+ # @see Inflight
450
+ def inflight: () -> ::Integer
451
+
452
+ # Amount of memory held by inflight pages.
453
+ # @rbs return: ::Integer
454
+ # @return [Integer]
455
+ # @see InflightMem
456
+ def inflight_mem: () -> ::Integer
457
+
458
+ # Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
459
+ # the driver. Once detached Page Pool can no longer be used to
460
+ # allocate memory.
461
+ # Page Pools wait for all the memory allocated from them to be freed
462
+ # before truly disappearing. "Detached" Page Pools cannot be
463
+ # "re-attached", they are just waiting to disappear.
464
+ # Attribute is absent if Page Pool has not been detached, and
465
+ # can still be used to allocate new memory.
466
+ # @rbs return: ::Integer
467
+ # @return [Integer]
468
+ # @see DetachTime
469
+ def detach_time: () -> ::Integer
470
+
471
+ # ID of the dmabuf this page-pool is attached to.
472
+ # @rbs return: ::Integer
473
+ # @return [Integer]
474
+ # @see Dmabuf
475
+ def dmabuf: () -> ::Integer
476
+
477
+ # io-uring memory provider information.
478
+ # @rbs return: AttributeSets::IoUringProviderInfo
479
+ # @return [AttributeSets::IoUringProviderInfo]
480
+ # @see IoUring
481
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
482
+
483
+ # Looks up Attribute class by name.
484
+ # @rbs name: Symbol
485
+ # @rbs return: Attribute
486
+ # @param [Symbol] name
487
+ # @return [Attribute]
488
+ def self.by_name: (Symbol name) -> Attribute
489
+
490
+ # Looks up Attribute class by type value.
491
+ # @rbs type: Integer
492
+ # @rbs return: Attribute
493
+ # @param [Integer] type
494
+ # @return [Attribute]
495
+ def self.by_type: (Integer type) -> Attribute
496
+ end
497
+
498
+ class PagePoolInfo < ::Nl::AttributeSet
499
+ # Abstract class
500
+ class Attribute < ::Nl::AttributeSet::Attribute
501
+ end
502
+
503
+ # Unique ID of a Page Pool instance.
504
+ class Id < Attribute
505
+ TYPE: ::Integer
506
+
507
+ NAME: ::Symbol
508
+
509
+ # @private
510
+ ORDER: ::Integer
511
+
512
+ # @private
513
+ DATATYPE: untyped
514
+ end
515
+
516
+ # ifindex of the netdev to which the pool belongs.
517
+ # May not be reported if the page pool was allocated for a netdev
518
+ # which got destroyed already (page pools may outlast their netdevs
519
+ # because they wait for all memory to be returned).
520
+ class Ifindex < Attribute
521
+ TYPE: ::Integer
522
+
523
+ NAME: ::Symbol
524
+
525
+ # @private
526
+ ORDER: ::Integer
527
+
528
+ # @private
529
+ DATATYPE: untyped
530
+ end
531
+
532
+ # @private
533
+ BY_NAME: Hash[::Symbol, Attribute]
534
+
535
+ # @private
536
+ BY_TYPE: Hash[::Integer, Attribute]
537
+
538
+ # Unique ID of a Page Pool instance.
539
+ # @rbs return: ::Integer
540
+ # @return [Integer]
541
+ # @see Id
542
+ def id: () -> ::Integer
543
+
544
+ # ifindex of the netdev to which the pool belongs.
545
+ # May not be reported if the page pool was allocated for a netdev
546
+ # which got destroyed already (page pools may outlast their netdevs
547
+ # because they wait for all memory to be returned).
548
+ # @rbs return: ::Integer
549
+ # @return [Integer]
550
+ # @see Ifindex
551
+ def ifindex: () -> ::Integer
552
+
553
+ # Looks up Attribute class by name.
554
+ # @rbs name: Symbol
555
+ # @rbs return: Attribute
556
+ # @param [Symbol] name
557
+ # @return [Attribute]
558
+ def self.by_name: (Symbol name) -> Attribute
559
+
560
+ # Looks up Attribute class by type value.
561
+ # @rbs type: Integer
562
+ # @rbs return: Attribute
563
+ # @param [Integer] type
564
+ # @return [Attribute]
565
+ def self.by_type: (Integer type) -> Attribute
566
+ end
567
+
568
+ # Page pool statistics, see docs for struct page_pool_stats
569
+ # for information about individual statistics.
570
+ class PagePoolStats < ::Nl::AttributeSet
571
+ # Abstract class
572
+ class Attribute < ::Nl::AttributeSet::Attribute
573
+ end
574
+
575
+ # Page pool identifying information.
576
+ class Info < Attribute
577
+ TYPE: ::Integer
578
+
579
+ NAME: ::Symbol
580
+
581
+ # @private
582
+ ORDER: ::Integer
583
+ end
584
+
585
+ class AllocFast < Attribute
586
+ TYPE: ::Integer
587
+
588
+ NAME: ::Symbol
589
+
590
+ # @private
591
+ ORDER: ::Integer
592
+
593
+ # @private
594
+ DATATYPE: untyped
595
+ end
596
+
597
+ class AllocSlow < Attribute
598
+ TYPE: ::Integer
599
+
600
+ NAME: ::Symbol
601
+
602
+ # @private
603
+ ORDER: ::Integer
604
+
605
+ # @private
606
+ DATATYPE: untyped
607
+ end
608
+
609
+ class AllocSlowHighOrder < Attribute
610
+ TYPE: ::Integer
611
+
612
+ NAME: ::Symbol
613
+
614
+ # @private
615
+ ORDER: ::Integer
616
+
617
+ # @private
618
+ DATATYPE: untyped
619
+ end
620
+
621
+ class AllocEmpty < Attribute
622
+ TYPE: ::Integer
623
+
624
+ NAME: ::Symbol
625
+
626
+ # @private
627
+ ORDER: ::Integer
628
+
629
+ # @private
630
+ DATATYPE: untyped
631
+ end
632
+
633
+ class AllocRefill < Attribute
634
+ TYPE: ::Integer
635
+
636
+ NAME: ::Symbol
637
+
638
+ # @private
639
+ ORDER: ::Integer
640
+
641
+ # @private
642
+ DATATYPE: untyped
643
+ end
644
+
645
+ class AllocWaive < Attribute
646
+ TYPE: ::Integer
647
+
648
+ NAME: ::Symbol
649
+
650
+ # @private
651
+ ORDER: ::Integer
652
+
653
+ # @private
654
+ DATATYPE: untyped
655
+ end
656
+
657
+ class RecycleCached < Attribute
658
+ TYPE: ::Integer
659
+
660
+ NAME: ::Symbol
661
+
662
+ # @private
663
+ ORDER: ::Integer
664
+
665
+ # @private
666
+ DATATYPE: untyped
667
+ end
668
+
669
+ class RecycleCacheFull < Attribute
670
+ TYPE: ::Integer
671
+
672
+ NAME: ::Symbol
673
+
674
+ # @private
675
+ ORDER: ::Integer
676
+
677
+ # @private
678
+ DATATYPE: untyped
679
+ end
680
+
681
+ class RecycleRing < Attribute
682
+ TYPE: ::Integer
683
+
684
+ NAME: ::Symbol
685
+
686
+ # @private
687
+ ORDER: ::Integer
688
+
689
+ # @private
690
+ DATATYPE: untyped
691
+ end
692
+
693
+ class RecycleRingFull < Attribute
694
+ TYPE: ::Integer
695
+
696
+ NAME: ::Symbol
697
+
698
+ # @private
699
+ ORDER: ::Integer
700
+
701
+ # @private
702
+ DATATYPE: untyped
703
+ end
704
+
705
+ class RecycleReleasedRefcnt < Attribute
706
+ TYPE: ::Integer
707
+
708
+ NAME: ::Symbol
709
+
710
+ # @private
711
+ ORDER: ::Integer
712
+
713
+ # @private
714
+ DATATYPE: untyped
715
+ end
716
+
717
+ # @private
718
+ BY_NAME: Hash[::Symbol, Attribute]
719
+
720
+ # @private
721
+ BY_TYPE: Hash[::Integer, Attribute]
722
+
723
+ # Page pool identifying information.
724
+ # @rbs return: AttributeSets::PagePoolInfo
725
+ # @return [AttributeSets::PagePoolInfo]
726
+ # @see Info
727
+ def info: () -> AttributeSets::PagePoolInfo
728
+
729
+ # @rbs return: ::Integer
730
+ # @return [Integer]
731
+ # @see AllocFast
732
+ def alloc_fast: () -> ::Integer
733
+
734
+ # @rbs return: ::Integer
735
+ # @return [Integer]
736
+ # @see AllocSlow
737
+ def alloc_slow: () -> ::Integer
738
+
739
+ # @rbs return: ::Integer
740
+ # @return [Integer]
741
+ # @see AllocSlowHighOrder
742
+ def alloc_slow_high_order: () -> ::Integer
743
+
744
+ # @rbs return: ::Integer
745
+ # @return [Integer]
746
+ # @see AllocEmpty
747
+ def alloc_empty: () -> ::Integer
748
+
749
+ # @rbs return: ::Integer
750
+ # @return [Integer]
751
+ # @see AllocRefill
752
+ def alloc_refill: () -> ::Integer
753
+
754
+ # @rbs return: ::Integer
755
+ # @return [Integer]
756
+ # @see AllocWaive
757
+ def alloc_waive: () -> ::Integer
758
+
759
+ # @rbs return: ::Integer
760
+ # @return [Integer]
761
+ # @see RecycleCached
762
+ def recycle_cached: () -> ::Integer
763
+
764
+ # @rbs return: ::Integer
765
+ # @return [Integer]
766
+ # @see RecycleCacheFull
767
+ def recycle_cache_full: () -> ::Integer
768
+
769
+ # @rbs return: ::Integer
770
+ # @return [Integer]
771
+ # @see RecycleRing
772
+ def recycle_ring: () -> ::Integer
773
+
774
+ # @rbs return: ::Integer
775
+ # @return [Integer]
776
+ # @see RecycleRingFull
777
+ def recycle_ring_full: () -> ::Integer
778
+
779
+ # @rbs return: ::Integer
780
+ # @return [Integer]
781
+ # @see RecycleReleasedRefcnt
782
+ def recycle_released_refcnt: () -> ::Integer
783
+
784
+ # Looks up Attribute class by name.
785
+ # @rbs name: Symbol
786
+ # @rbs return: Attribute
787
+ # @param [Symbol] name
788
+ # @return [Attribute]
789
+ def self.by_name: (Symbol name) -> Attribute
790
+
791
+ # Looks up Attribute class by type value.
792
+ # @rbs type: Integer
793
+ # @rbs return: Attribute
794
+ # @param [Integer] type
795
+ # @return [Attribute]
796
+ def self.by_type: (Integer type) -> Attribute
797
+ end
798
+
799
+ class Napi < ::Nl::AttributeSet
800
+ # Abstract class
801
+ class Attribute < ::Nl::AttributeSet::Attribute
802
+ end
803
+
804
+ # ifindex of the netdevice to which NAPI instance belongs.
805
+ class Ifindex < Attribute
806
+ TYPE: ::Integer
807
+
808
+ NAME: ::Symbol
809
+
810
+ # @private
811
+ ORDER: ::Integer
812
+
813
+ # @private
814
+ DATATYPE: untyped
815
+ end
816
+
817
+ # ID of the NAPI instance.
818
+ class Id < Attribute
819
+ TYPE: ::Integer
820
+
821
+ NAME: ::Symbol
822
+
823
+ # @private
824
+ ORDER: ::Integer
825
+
826
+ # @private
827
+ DATATYPE: untyped
828
+ end
829
+
830
+ # The associated interrupt vector number for the napi
831
+ class Irq < Attribute
832
+ TYPE: ::Integer
833
+
834
+ NAME: ::Symbol
835
+
836
+ # @private
837
+ ORDER: ::Integer
838
+
839
+ # @private
840
+ DATATYPE: untyped
841
+ end
842
+
843
+ # PID of the napi thread, if NAPI is configured to operate in threaded mode. If NAPI is not in threaded mode (i.e. uses normal softirq context), the attribute will be absent.
844
+ class Pid < Attribute
845
+ TYPE: ::Integer
846
+
847
+ NAME: ::Symbol
848
+
849
+ # @private
850
+ ORDER: ::Integer
851
+
852
+ # @private
853
+ DATATYPE: untyped
854
+ end
855
+
856
+ # The number of consecutive empty polls before IRQ deferral ends and hardware IRQs are re-enabled.
857
+ class DeferHardIrqs < Attribute
858
+ TYPE: ::Integer
859
+
860
+ NAME: ::Symbol
861
+
862
+ # @private
863
+ ORDER: ::Integer
864
+
865
+ # @private
866
+ DATATYPE: untyped
867
+ end
868
+
869
+ # The timeout, in nanoseconds, of when to trigger the NAPI watchdog timer which schedules NAPI processing. Additionally, a non-zero value will also prevent GRO from flushing recent super-frames at the end of a NAPI cycle. This may add receive latency in exchange for reducing the number of frames processed by the network stack.
870
+ class GroFlushTimeout < Attribute
871
+ TYPE: ::Integer
872
+
873
+ NAME: ::Symbol
874
+
875
+ # @private
876
+ ORDER: ::Integer
877
+
878
+ # @private
879
+ DATATYPE: untyped
880
+ end
881
+
882
+ # The timeout, in nanoseconds, of how long to suspend irq processing, if event polling finds events
883
+ class IrqSuspendTimeout < Attribute
884
+ TYPE: ::Integer
885
+
886
+ NAME: ::Symbol
887
+
888
+ # @private
889
+ ORDER: ::Integer
890
+
891
+ # @private
892
+ DATATYPE: untyped
893
+ end
894
+
895
+ # Whether the NAPI is configured to operate in threaded polling mode. If this is set to enabled then the NAPI context operates in threaded polling mode. If this is set to busy-poll, then the threaded polling mode also busy polls.
896
+ #
897
+ # Known enum values are defined in {Enums::NapiThreaded}.
898
+ class Threaded < Attribute
899
+ TYPE: ::Integer
900
+
901
+ NAME: ::Symbol
902
+
903
+ # @private
904
+ ORDER: ::Integer
905
+
906
+ # @private
907
+ DATATYPE: untyped
908
+ end
909
+
910
+ # @private
911
+ BY_NAME: Hash[::Symbol, Attribute]
912
+
913
+ # @private
914
+ BY_TYPE: Hash[::Integer, Attribute]
915
+
916
+ # ifindex of the netdevice to which NAPI instance belongs.
917
+ # @rbs return: ::Integer
918
+ # @return [Integer]
919
+ # @see Ifindex
920
+ def ifindex: () -> ::Integer
921
+
922
+ # ID of the NAPI instance.
923
+ # @rbs return: ::Integer
924
+ # @return [Integer]
925
+ # @see Id
926
+ def id: () -> ::Integer
927
+
928
+ # The associated interrupt vector number for the napi
929
+ # @rbs return: ::Integer
930
+ # @return [Integer]
931
+ # @see Irq
932
+ def irq: () -> ::Integer
933
+
934
+ # PID of the napi thread, if NAPI is configured to operate in threaded mode. If NAPI is not in threaded mode (i.e. uses normal softirq context), the attribute will be absent.
935
+ # @rbs return: ::Integer
936
+ # @return [Integer]
937
+ # @see Pid
938
+ def pid: () -> ::Integer
939
+
940
+ # The number of consecutive empty polls before IRQ deferral ends and hardware IRQs are re-enabled.
941
+ # @rbs return: ::Integer
942
+ # @return [Integer]
943
+ # @see DeferHardIrqs
944
+ def defer_hard_irqs: () -> ::Integer
945
+
946
+ # The timeout, in nanoseconds, of when to trigger the NAPI watchdog timer which schedules NAPI processing. Additionally, a non-zero value will also prevent GRO from flushing recent super-frames at the end of a NAPI cycle. This may add receive latency in exchange for reducing the number of frames processed by the network stack.
947
+ # @rbs return: ::Integer
948
+ # @return [Integer]
949
+ # @see GroFlushTimeout
950
+ def gro_flush_timeout: () -> ::Integer
951
+
952
+ # The timeout, in nanoseconds, of how long to suspend irq processing, if event polling finds events
953
+ # @rbs return: ::Integer
954
+ # @return [Integer]
955
+ # @see IrqSuspendTimeout
956
+ def irq_suspend_timeout: () -> ::Integer
957
+
958
+ # Whether the NAPI is configured to operate in threaded polling mode. If this is set to enabled then the NAPI context operates in threaded polling mode. If this is set to busy-poll, then the threaded polling mode also busy polls.
959
+ #
960
+ # Known enum values are defined in {Enums::NapiThreaded}.
961
+ # @rbs return: ::Integer
962
+ # @return [Integer]
963
+ # @see Threaded
964
+ def threaded: () -> ::Integer
965
+
966
+ # Looks up Attribute class by name.
967
+ # @rbs name: Symbol
968
+ # @rbs return: Attribute
969
+ # @param [Symbol] name
970
+ # @return [Attribute]
971
+ def self.by_name: (Symbol name) -> Attribute
972
+
973
+ # Looks up Attribute class by type value.
974
+ # @rbs type: Integer
975
+ # @rbs return: Attribute
976
+ # @param [Integer] type
977
+ # @return [Attribute]
978
+ def self.by_type: (Integer type) -> Attribute
979
+ end
980
+
981
+ class XskInfo < ::Nl::AttributeSet
982
+ # Abstract class
983
+ class Attribute < ::Nl::AttributeSet::Attribute
984
+ end
985
+
986
+ # @private
987
+ BY_NAME: Hash[::Symbol, Attribute]
988
+
989
+ # @private
990
+ BY_TYPE: Hash[::Integer, Attribute]
991
+
992
+ # Looks up Attribute class by name.
993
+ # @rbs name: Symbol
994
+ # @rbs return: Attribute
995
+ # @param [Symbol] name
996
+ # @return [Attribute]
997
+ def self.by_name: (Symbol name) -> Attribute
998
+
999
+ # Looks up Attribute class by type value.
1000
+ # @rbs type: Integer
1001
+ # @rbs return: Attribute
1002
+ # @param [Integer] type
1003
+ # @return [Attribute]
1004
+ def self.by_type: (Integer type) -> Attribute
1005
+ end
1006
+
1007
+ class Queue < ::Nl::AttributeSet
1008
+ # Abstract class
1009
+ class Attribute < ::Nl::AttributeSet::Attribute
1010
+ end
1011
+
1012
+ # Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
1013
+ class Id < Attribute
1014
+ TYPE: ::Integer
1015
+
1016
+ NAME: ::Symbol
1017
+
1018
+ # @private
1019
+ ORDER: ::Integer
1020
+
1021
+ # @private
1022
+ DATATYPE: untyped
1023
+ end
1024
+
1025
+ # ifindex of the netdevice to which the queue belongs.
1026
+ class Ifindex < Attribute
1027
+ TYPE: ::Integer
1028
+
1029
+ NAME: ::Symbol
1030
+
1031
+ # @private
1032
+ ORDER: ::Integer
1033
+
1034
+ # @private
1035
+ DATATYPE: untyped
1036
+ end
1037
+
1038
+ # Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
1039
+ #
1040
+ # Known enum values are defined in {Enums::QueueType}.
1041
+ class Type < Attribute
1042
+ TYPE: ::Integer
1043
+
1044
+ NAME: ::Symbol
1045
+
1046
+ # @private
1047
+ ORDER: ::Integer
1048
+
1049
+ # @private
1050
+ DATATYPE: untyped
1051
+ end
1052
+
1053
+ # ID of the NAPI instance which services this queue.
1054
+ class NapiId < Attribute
1055
+ TYPE: ::Integer
1056
+
1057
+ NAME: ::Symbol
1058
+
1059
+ # @private
1060
+ ORDER: ::Integer
1061
+
1062
+ # @private
1063
+ DATATYPE: untyped
1064
+ end
1065
+
1066
+ # ID of the dmabuf attached to this queue, if any.
1067
+ class Dmabuf < Attribute
1068
+ TYPE: ::Integer
1069
+
1070
+ NAME: ::Symbol
1071
+
1072
+ # @private
1073
+ ORDER: ::Integer
1074
+
1075
+ # @private
1076
+ DATATYPE: untyped
1077
+ end
1078
+
1079
+ # io_uring memory provider information.
1080
+ class IoUring < Attribute
1081
+ TYPE: ::Integer
1082
+
1083
+ NAME: ::Symbol
1084
+
1085
+ # @private
1086
+ ORDER: ::Integer
1087
+ end
1088
+
1089
+ # XSK information for this queue, if any.
1090
+ class Xsk < Attribute
1091
+ TYPE: ::Integer
1092
+
1093
+ NAME: ::Symbol
1094
+
1095
+ # @private
1096
+ ORDER: ::Integer
1097
+ end
1098
+
1099
+ # A queue from a virtual device can have a lease which refers to
1100
+ # another queue from a physical device. This is useful for memory
1101
+ # providers and AF_XDP operations which take an ifindex and queue id
1102
+ # to allow applications to bind against virtual devices in containers.
1103
+ class Lease < Attribute
1104
+ TYPE: ::Integer
1105
+
1106
+ NAME: ::Symbol
1107
+
1108
+ # @private
1109
+ ORDER: ::Integer
1110
+ end
1111
+
1112
+ # @private
1113
+ BY_NAME: Hash[::Symbol, Attribute]
1114
+
1115
+ # @private
1116
+ BY_TYPE: Hash[::Integer, Attribute]
1117
+
1118
+ # Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
1119
+ # @rbs return: ::Integer
1120
+ # @return [Integer]
1121
+ # @see Id
1122
+ def id: () -> ::Integer
1123
+
1124
+ # ifindex of the netdevice to which the queue belongs.
1125
+ # @rbs return: ::Integer
1126
+ # @return [Integer]
1127
+ # @see Ifindex
1128
+ def ifindex: () -> ::Integer
1129
+
1130
+ # Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
1131
+ #
1132
+ # Known enum values are defined in {Enums::QueueType}.
1133
+ # @rbs return: ::Integer
1134
+ # @return [Integer]
1135
+ # @see Type
1136
+ def type: () -> ::Integer
1137
+
1138
+ # ID of the NAPI instance which services this queue.
1139
+ # @rbs return: ::Integer
1140
+ # @return [Integer]
1141
+ # @see NapiId
1142
+ def napi_id: () -> ::Integer
1143
+
1144
+ # ID of the dmabuf attached to this queue, if any.
1145
+ # @rbs return: ::Integer
1146
+ # @return [Integer]
1147
+ # @see Dmabuf
1148
+ def dmabuf: () -> ::Integer
1149
+
1150
+ # io_uring memory provider information.
1151
+ # @rbs return: AttributeSets::IoUringProviderInfo
1152
+ # @return [AttributeSets::IoUringProviderInfo]
1153
+ # @see IoUring
1154
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
1155
+
1156
+ # XSK information for this queue, if any.
1157
+ # @rbs return: AttributeSets::XskInfo
1158
+ # @return [AttributeSets::XskInfo]
1159
+ # @see Xsk
1160
+ def xsk: () -> AttributeSets::XskInfo
1161
+
1162
+ # A queue from a virtual device can have a lease which refers to
1163
+ # another queue from a physical device. This is useful for memory
1164
+ # providers and AF_XDP operations which take an ifindex and queue id
1165
+ # to allow applications to bind against virtual devices in containers.
1166
+ # @rbs return: AttributeSets::Lease
1167
+ # @return [AttributeSets::Lease]
1168
+ # @see Lease
1169
+ def lease: () -> AttributeSets::Lease
1170
+
1171
+ # Looks up Attribute class by name.
1172
+ # @rbs name: Symbol
1173
+ # @rbs return: Attribute
1174
+ # @param [Symbol] name
1175
+ # @return [Attribute]
1176
+ def self.by_name: (Symbol name) -> Attribute
1177
+
1178
+ # Looks up Attribute class by type value.
1179
+ # @rbs type: Integer
1180
+ # @rbs return: Attribute
1181
+ # @param [Integer] type
1182
+ # @return [Attribute]
1183
+ def self.by_type: (Integer type) -> Attribute
1184
+ end
1185
+
1186
+ # Get device statistics, scoped to a device or a queue.
1187
+ # These statistics extend (and partially duplicate) statistics available
1188
+ # in struct rtnl_link_stats64.
1189
+ # Value of the `scope` attribute determines how statistics are
1190
+ # aggregated. When aggregated for the entire device the statistics
1191
+ # represent the total number of events since last explicit reset of
1192
+ # the device (i.e. not a reconfiguration like changing queue count).
1193
+ # When reported per-queue, however, the statistics may not add
1194
+ # up to the total number of events, will only be reported for currently
1195
+ # active objects, and will likely report the number of events since last
1196
+ # reconfiguration.
1197
+ class Qstats < ::Nl::AttributeSet
1198
+ # Abstract class
1199
+ class Attribute < ::Nl::AttributeSet::Attribute
1200
+ end
1201
+
1202
+ # ifindex of the netdevice to which stats belong.
1203
+ class Ifindex < Attribute
1204
+ TYPE: ::Integer
1205
+
1206
+ NAME: ::Symbol
1207
+
1208
+ # @private
1209
+ ORDER: ::Integer
1210
+
1211
+ # @private
1212
+ DATATYPE: untyped
1213
+ end
1214
+
1215
+ # Queue type as rx, tx, for queue-id.
1216
+ #
1217
+ # Known enum values are defined in {Enums::QueueType}.
1218
+ class QueueType < Attribute
1219
+ TYPE: ::Integer
1220
+
1221
+ NAME: ::Symbol
1222
+
1223
+ # @private
1224
+ ORDER: ::Integer
1225
+
1226
+ # @private
1227
+ DATATYPE: untyped
1228
+ end
1229
+
1230
+ # Queue ID, if stats are scoped to a single queue instance.
1231
+ class QueueId < Attribute
1232
+ TYPE: ::Integer
1233
+
1234
+ NAME: ::Symbol
1235
+
1236
+ # @private
1237
+ ORDER: ::Integer
1238
+
1239
+ # @private
1240
+ DATATYPE: untyped
1241
+ end
1242
+
1243
+ # What object type should be used to iterate over the stats.
1244
+ #
1245
+ #
1246
+ # Known flags are defined in {Flags::QstatsScope}.
1247
+ class Scope < Attribute
1248
+ TYPE: ::Integer
1249
+
1250
+ NAME: ::Symbol
1251
+
1252
+ # @private
1253
+ ORDER: ::Integer
1254
+
1255
+ # @private
1256
+ DATATYPE: untyped
1257
+ end
1258
+
1259
+ # Number of wire packets successfully received and passed to the stack.
1260
+ # For drivers supporting XDP, XDP is considered the first layer
1261
+ # of the stack, so packets consumed by XDP are still counted here.
1262
+ class RxPackets < Attribute
1263
+ TYPE: ::Integer
1264
+
1265
+ NAME: ::Symbol
1266
+
1267
+ # @private
1268
+ ORDER: ::Integer
1269
+
1270
+ # @private
1271
+ DATATYPE: untyped
1272
+ end
1273
+
1274
+ # Successfully received bytes, see `rx-packets`.
1275
+ class RxBytes < Attribute
1276
+ TYPE: ::Integer
1277
+
1278
+ NAME: ::Symbol
1279
+
1280
+ # @private
1281
+ ORDER: ::Integer
1282
+
1283
+ # @private
1284
+ DATATYPE: untyped
1285
+ end
1286
+
1287
+ # Number of wire packets successfully sent. Packet is considered to be
1288
+ # successfully sent once it is in device memory (usually this means
1289
+ # the device has issued a DMA completion for the packet).
1290
+ class TxPackets < Attribute
1291
+ TYPE: ::Integer
1292
+
1293
+ NAME: ::Symbol
1294
+
1295
+ # @private
1296
+ ORDER: ::Integer
1297
+
1298
+ # @private
1299
+ DATATYPE: untyped
1300
+ end
1301
+
1302
+ # Successfully sent bytes, see `tx-packets`.
1303
+ class TxBytes < Attribute
1304
+ TYPE: ::Integer
1305
+
1306
+ NAME: ::Symbol
1307
+
1308
+ # @private
1309
+ ORDER: ::Integer
1310
+
1311
+ # @private
1312
+ DATATYPE: untyped
1313
+ end
1314
+
1315
+ # Number of times skb or buffer allocation failed on the Rx datapath.
1316
+ # Allocation failure may, or may not result in a packet drop, depending
1317
+ # on driver implementation and whether system recovers quickly.
1318
+ class RxAllocFail < Attribute
1319
+ TYPE: ::Integer
1320
+
1321
+ NAME: ::Symbol
1322
+
1323
+ # @private
1324
+ ORDER: ::Integer
1325
+
1326
+ # @private
1327
+ DATATYPE: untyped
1328
+ end
1329
+
1330
+ # Number of all packets which entered the device, but never left it,
1331
+ # including but not limited to: packets dropped due to lack of buffer
1332
+ # space, processing errors, explicit or implicit policies and packet
1333
+ # filters.
1334
+ class RxHwDrops < Attribute
1335
+ TYPE: ::Integer
1336
+
1337
+ NAME: ::Symbol
1338
+
1339
+ # @private
1340
+ ORDER: ::Integer
1341
+
1342
+ # @private
1343
+ DATATYPE: untyped
1344
+ end
1345
+
1346
+ # Number of packets dropped due to transient lack of resources, such as
1347
+ # buffer space, host descriptors etc.
1348
+ class RxHwDropOverruns < Attribute
1349
+ TYPE: ::Integer
1350
+
1351
+ NAME: ::Symbol
1352
+
1353
+ # @private
1354
+ ORDER: ::Integer
1355
+
1356
+ # @private
1357
+ DATATYPE: untyped
1358
+ end
1359
+
1360
+ # Number of packets that were marked as CHECKSUM_COMPLETE.
1361
+ class RxCsumComplete < Attribute
1362
+ TYPE: ::Integer
1363
+
1364
+ NAME: ::Symbol
1365
+
1366
+ # @private
1367
+ ORDER: ::Integer
1368
+
1369
+ # @private
1370
+ DATATYPE: untyped
1371
+ end
1372
+
1373
+ # Number of packets that were marked as CHECKSUM_UNNECESSARY.
1374
+ class RxCsumUnnecessary < Attribute
1375
+ TYPE: ::Integer
1376
+
1377
+ NAME: ::Symbol
1378
+
1379
+ # @private
1380
+ ORDER: ::Integer
1381
+
1382
+ # @private
1383
+ DATATYPE: untyped
1384
+ end
1385
+
1386
+ # Number of packets that were not checksummed by device.
1387
+ class RxCsumNone < Attribute
1388
+ TYPE: ::Integer
1389
+
1390
+ NAME: ::Symbol
1391
+
1392
+ # @private
1393
+ ORDER: ::Integer
1394
+
1395
+ # @private
1396
+ DATATYPE: untyped
1397
+ end
1398
+
1399
+ # Number of packets with bad checksum. The packets are not discarded,
1400
+ # but still delivered to the stack.
1401
+ class RxCsumBad < Attribute
1402
+ TYPE: ::Integer
1403
+
1404
+ NAME: ::Symbol
1405
+
1406
+ # @private
1407
+ ORDER: ::Integer
1408
+
1409
+ # @private
1410
+ DATATYPE: untyped
1411
+ end
1412
+
1413
+ # Number of packets that were coalesced from smaller packets by the
1414
+ # device. Counts only packets coalesced with the HW-GRO netdevice
1415
+ # feature, LRO-coalesced packets are not counted.
1416
+ class RxHwGroPackets < Attribute
1417
+ TYPE: ::Integer
1418
+
1419
+ NAME: ::Symbol
1420
+
1421
+ # @private
1422
+ ORDER: ::Integer
1423
+
1424
+ # @private
1425
+ DATATYPE: untyped
1426
+ end
1427
+
1428
+ # See `rx-hw-gro-packets`.
1429
+ class RxHwGroBytes < Attribute
1430
+ TYPE: ::Integer
1431
+
1432
+ NAME: ::Symbol
1433
+
1434
+ # @private
1435
+ ORDER: ::Integer
1436
+
1437
+ # @private
1438
+ DATATYPE: untyped
1439
+ end
1440
+
1441
+ # Number of packets that were coalesced to bigger packetss with the
1442
+ # HW-GRO netdevice feature. LRO-coalesced packets are not counted.
1443
+ class RxHwGroWirePackets < Attribute
1444
+ TYPE: ::Integer
1445
+
1446
+ NAME: ::Symbol
1447
+
1448
+ # @private
1449
+ ORDER: ::Integer
1450
+
1451
+ # @private
1452
+ DATATYPE: untyped
1453
+ end
1454
+
1455
+ # See `rx-hw-gro-wire-packets`.
1456
+ class RxHwGroWireBytes < Attribute
1457
+ TYPE: ::Integer
1458
+
1459
+ NAME: ::Symbol
1460
+
1461
+ # @private
1462
+ ORDER: ::Integer
1463
+
1464
+ # @private
1465
+ DATATYPE: untyped
1466
+ end
1467
+
1468
+ # Number of the packets dropped by the device due to the received
1469
+ # packets bitrate exceeding the device rate limit.
1470
+ class RxHwDropRatelimits < Attribute
1471
+ TYPE: ::Integer
1472
+
1473
+ NAME: ::Symbol
1474
+
1475
+ # @private
1476
+ ORDER: ::Integer
1477
+
1478
+ # @private
1479
+ DATATYPE: untyped
1480
+ end
1481
+
1482
+ # Number of packets that arrived at the device but never left it,
1483
+ # encompassing packets dropped for reasons such as processing errors, as
1484
+ # well as those affected by explicitly defined policies and packet
1485
+ # filtering criteria.
1486
+ class TxHwDrops < Attribute
1487
+ TYPE: ::Integer
1488
+
1489
+ NAME: ::Symbol
1490
+
1491
+ # @private
1492
+ ORDER: ::Integer
1493
+
1494
+ # @private
1495
+ DATATYPE: untyped
1496
+ end
1497
+
1498
+ # Number of packets dropped because they were invalid or malformed.
1499
+ class TxHwDropErrors < Attribute
1500
+ TYPE: ::Integer
1501
+
1502
+ NAME: ::Symbol
1503
+
1504
+ # @private
1505
+ ORDER: ::Integer
1506
+
1507
+ # @private
1508
+ DATATYPE: untyped
1509
+ end
1510
+
1511
+ # Number of packets that did not require the device to calculate the
1512
+ # checksum.
1513
+ class TxCsumNone < Attribute
1514
+ TYPE: ::Integer
1515
+
1516
+ NAME: ::Symbol
1517
+
1518
+ # @private
1519
+ ORDER: ::Integer
1520
+
1521
+ # @private
1522
+ DATATYPE: untyped
1523
+ end
1524
+
1525
+ # Number of packets that required the device to calculate the checksum.
1526
+ # This counter includes the number of GSO wire packets for which device
1527
+ # calculated the L4 checksum.
1528
+ class TxNeedsCsum < Attribute
1529
+ TYPE: ::Integer
1530
+
1531
+ NAME: ::Symbol
1532
+
1533
+ # @private
1534
+ ORDER: ::Integer
1535
+
1536
+ # @private
1537
+ DATATYPE: untyped
1538
+ end
1539
+
1540
+ # Number of packets that necessitated segmentation into smaller packets
1541
+ # by the device.
1542
+ class TxHwGsoPackets < Attribute
1543
+ TYPE: ::Integer
1544
+
1545
+ NAME: ::Symbol
1546
+
1547
+ # @private
1548
+ ORDER: ::Integer
1549
+
1550
+ # @private
1551
+ DATATYPE: untyped
1552
+ end
1553
+
1554
+ # See `tx-hw-gso-packets`.
1555
+ class TxHwGsoBytes < Attribute
1556
+ TYPE: ::Integer
1557
+
1558
+ NAME: ::Symbol
1559
+
1560
+ # @private
1561
+ ORDER: ::Integer
1562
+
1563
+ # @private
1564
+ DATATYPE: untyped
1565
+ end
1566
+
1567
+ # Number of wire-sized packets generated by processing
1568
+ # `tx-hw-gso-packets`
1569
+ class TxHwGsoWirePackets < Attribute
1570
+ TYPE: ::Integer
1571
+
1572
+ NAME: ::Symbol
1573
+
1574
+ # @private
1575
+ ORDER: ::Integer
1576
+
1577
+ # @private
1578
+ DATATYPE: untyped
1579
+ end
1580
+
1581
+ # See `tx-hw-gso-wire-packets`.
1582
+ class TxHwGsoWireBytes < Attribute
1583
+ TYPE: ::Integer
1584
+
1585
+ NAME: ::Symbol
1586
+
1587
+ # @private
1588
+ ORDER: ::Integer
1589
+
1590
+ # @private
1591
+ DATATYPE: untyped
1592
+ end
1593
+
1594
+ # Number of the packets dropped by the device due to the transmit
1595
+ # packets bitrate exceeding the device rate limit.
1596
+ class TxHwDropRatelimits < Attribute
1597
+ TYPE: ::Integer
1598
+
1599
+ NAME: ::Symbol
1600
+
1601
+ # @private
1602
+ ORDER: ::Integer
1603
+
1604
+ # @private
1605
+ DATATYPE: untyped
1606
+ end
1607
+
1608
+ # Number of times driver paused accepting new tx packets
1609
+ # from the stack to this queue, because the queue was full.
1610
+ # Note that if BQL is supported and enabled on the device
1611
+ # the networking stack will avoid queuing a lot of data at once.
1612
+ class TxStop < Attribute
1613
+ TYPE: ::Integer
1614
+
1615
+ NAME: ::Symbol
1616
+
1617
+ # @private
1618
+ ORDER: ::Integer
1619
+
1620
+ # @private
1621
+ DATATYPE: untyped
1622
+ end
1623
+
1624
+ # Number of times driver re-started accepting send
1625
+ # requests to this queue from the stack.
1626
+ class TxWake < Attribute
1627
+ TYPE: ::Integer
1628
+
1629
+ NAME: ::Symbol
1630
+
1631
+ # @private
1632
+ ORDER: ::Integer
1633
+
1634
+ # @private
1635
+ DATATYPE: untyped
1636
+ end
1637
+
1638
+ # @private
1639
+ BY_NAME: Hash[::Symbol, Attribute]
1640
+
1641
+ # @private
1642
+ BY_TYPE: Hash[::Integer, Attribute]
1643
+
1644
+ # ifindex of the netdevice to which stats belong.
1645
+ # @rbs return: ::Integer
1646
+ # @return [Integer]
1647
+ # @see Ifindex
1648
+ def ifindex: () -> ::Integer
1649
+
1650
+ # Queue type as rx, tx, for queue-id.
1651
+ #
1652
+ # Known enum values are defined in {Enums::QueueType}.
1653
+ # @rbs return: ::Integer
1654
+ # @return [Integer]
1655
+ # @see QueueType
1656
+ def queue_type: () -> ::Integer
1657
+
1658
+ # Queue ID, if stats are scoped to a single queue instance.
1659
+ # @rbs return: ::Integer
1660
+ # @return [Integer]
1661
+ # @see QueueId
1662
+ def queue_id: () -> ::Integer
1663
+
1664
+ # What object type should be used to iterate over the stats.
1665
+ #
1666
+ #
1667
+ # Known flags are defined in {Flags::QstatsScope}.
1668
+ # @rbs return: ::Integer
1669
+ # @return [Integer]
1670
+ # @see Scope
1671
+ def scope: () -> ::Integer
1672
+
1673
+ # Number of wire packets successfully received and passed to the stack.
1674
+ # For drivers supporting XDP, XDP is considered the first layer
1675
+ # of the stack, so packets consumed by XDP are still counted here.
1676
+ # @rbs return: ::Integer
1677
+ # @return [Integer]
1678
+ # @see RxPackets
1679
+ def rx_packets: () -> ::Integer
1680
+
1681
+ # Successfully received bytes, see `rx-packets`.
1682
+ # @rbs return: ::Integer
1683
+ # @return [Integer]
1684
+ # @see RxBytes
1685
+ def rx_bytes: () -> ::Integer
1686
+
1687
+ # Number of wire packets successfully sent. Packet is considered to be
1688
+ # successfully sent once it is in device memory (usually this means
1689
+ # the device has issued a DMA completion for the packet).
1690
+ # @rbs return: ::Integer
1691
+ # @return [Integer]
1692
+ # @see TxPackets
1693
+ def tx_packets: () -> ::Integer
1694
+
1695
+ # Successfully sent bytes, see `tx-packets`.
1696
+ # @rbs return: ::Integer
1697
+ # @return [Integer]
1698
+ # @see TxBytes
1699
+ def tx_bytes: () -> ::Integer
1700
+
1701
+ # Number of times skb or buffer allocation failed on the Rx datapath.
1702
+ # Allocation failure may, or may not result in a packet drop, depending
1703
+ # on driver implementation and whether system recovers quickly.
1704
+ # @rbs return: ::Integer
1705
+ # @return [Integer]
1706
+ # @see RxAllocFail
1707
+ def rx_alloc_fail: () -> ::Integer
1708
+
1709
+ # Number of all packets which entered the device, but never left it,
1710
+ # including but not limited to: packets dropped due to lack of buffer
1711
+ # space, processing errors, explicit or implicit policies and packet
1712
+ # filters.
1713
+ # @rbs return: ::Integer
1714
+ # @return [Integer]
1715
+ # @see RxHwDrops
1716
+ def rx_hw_drops: () -> ::Integer
1717
+
1718
+ # Number of packets dropped due to transient lack of resources, such as
1719
+ # buffer space, host descriptors etc.
1720
+ # @rbs return: ::Integer
1721
+ # @return [Integer]
1722
+ # @see RxHwDropOverruns
1723
+ def rx_hw_drop_overruns: () -> ::Integer
1724
+
1725
+ # Number of packets that were marked as CHECKSUM_COMPLETE.
1726
+ # @rbs return: ::Integer
1727
+ # @return [Integer]
1728
+ # @see RxCsumComplete
1729
+ def rx_csum_complete: () -> ::Integer
1730
+
1731
+ # Number of packets that were marked as CHECKSUM_UNNECESSARY.
1732
+ # @rbs return: ::Integer
1733
+ # @return [Integer]
1734
+ # @see RxCsumUnnecessary
1735
+ def rx_csum_unnecessary: () -> ::Integer
1736
+
1737
+ # Number of packets that were not checksummed by device.
1738
+ # @rbs return: ::Integer
1739
+ # @return [Integer]
1740
+ # @see RxCsumNone
1741
+ def rx_csum_none: () -> ::Integer
1742
+
1743
+ # Number of packets with bad checksum. The packets are not discarded,
1744
+ # but still delivered to the stack.
1745
+ # @rbs return: ::Integer
1746
+ # @return [Integer]
1747
+ # @see RxCsumBad
1748
+ def rx_csum_bad: () -> ::Integer
1749
+
1750
+ # Number of packets that were coalesced from smaller packets by the
1751
+ # device. Counts only packets coalesced with the HW-GRO netdevice
1752
+ # feature, LRO-coalesced packets are not counted.
1753
+ # @rbs return: ::Integer
1754
+ # @return [Integer]
1755
+ # @see RxHwGroPackets
1756
+ def rx_hw_gro_packets: () -> ::Integer
1757
+
1758
+ # See `rx-hw-gro-packets`.
1759
+ # @rbs return: ::Integer
1760
+ # @return [Integer]
1761
+ # @see RxHwGroBytes
1762
+ def rx_hw_gro_bytes: () -> ::Integer
1763
+
1764
+ # Number of packets that were coalesced to bigger packetss with the
1765
+ # HW-GRO netdevice feature. LRO-coalesced packets are not counted.
1766
+ # @rbs return: ::Integer
1767
+ # @return [Integer]
1768
+ # @see RxHwGroWirePackets
1769
+ def rx_hw_gro_wire_packets: () -> ::Integer
1770
+
1771
+ # See `rx-hw-gro-wire-packets`.
1772
+ # @rbs return: ::Integer
1773
+ # @return [Integer]
1774
+ # @see RxHwGroWireBytes
1775
+ def rx_hw_gro_wire_bytes: () -> ::Integer
1776
+
1777
+ # Number of the packets dropped by the device due to the received
1778
+ # packets bitrate exceeding the device rate limit.
1779
+ # @rbs return: ::Integer
1780
+ # @return [Integer]
1781
+ # @see RxHwDropRatelimits
1782
+ def rx_hw_drop_ratelimits: () -> ::Integer
1783
+
1784
+ # Number of packets that arrived at the device but never left it,
1785
+ # encompassing packets dropped for reasons such as processing errors, as
1786
+ # well as those affected by explicitly defined policies and packet
1787
+ # filtering criteria.
1788
+ # @rbs return: ::Integer
1789
+ # @return [Integer]
1790
+ # @see TxHwDrops
1791
+ def tx_hw_drops: () -> ::Integer
1792
+
1793
+ # Number of packets dropped because they were invalid or malformed.
1794
+ # @rbs return: ::Integer
1795
+ # @return [Integer]
1796
+ # @see TxHwDropErrors
1797
+ def tx_hw_drop_errors: () -> ::Integer
1798
+
1799
+ # Number of packets that did not require the device to calculate the
1800
+ # checksum.
1801
+ # @rbs return: ::Integer
1802
+ # @return [Integer]
1803
+ # @see TxCsumNone
1804
+ def tx_csum_none: () -> ::Integer
1805
+
1806
+ # Number of packets that required the device to calculate the checksum.
1807
+ # This counter includes the number of GSO wire packets for which device
1808
+ # calculated the L4 checksum.
1809
+ # @rbs return: ::Integer
1810
+ # @return [Integer]
1811
+ # @see TxNeedsCsum
1812
+ def tx_needs_csum: () -> ::Integer
1813
+
1814
+ # Number of packets that necessitated segmentation into smaller packets
1815
+ # by the device.
1816
+ # @rbs return: ::Integer
1817
+ # @return [Integer]
1818
+ # @see TxHwGsoPackets
1819
+ def tx_hw_gso_packets: () -> ::Integer
1820
+
1821
+ # See `tx-hw-gso-packets`.
1822
+ # @rbs return: ::Integer
1823
+ # @return [Integer]
1824
+ # @see TxHwGsoBytes
1825
+ def tx_hw_gso_bytes: () -> ::Integer
1826
+
1827
+ # Number of wire-sized packets generated by processing
1828
+ # `tx-hw-gso-packets`
1829
+ # @rbs return: ::Integer
1830
+ # @return [Integer]
1831
+ # @see TxHwGsoWirePackets
1832
+ def tx_hw_gso_wire_packets: () -> ::Integer
1833
+
1834
+ # See `tx-hw-gso-wire-packets`.
1835
+ # @rbs return: ::Integer
1836
+ # @return [Integer]
1837
+ # @see TxHwGsoWireBytes
1838
+ def tx_hw_gso_wire_bytes: () -> ::Integer
1839
+
1840
+ # Number of the packets dropped by the device due to the transmit
1841
+ # packets bitrate exceeding the device rate limit.
1842
+ # @rbs return: ::Integer
1843
+ # @return [Integer]
1844
+ # @see TxHwDropRatelimits
1845
+ def tx_hw_drop_ratelimits: () -> ::Integer
1846
+
1847
+ # Number of times driver paused accepting new tx packets
1848
+ # from the stack to this queue, because the queue was full.
1849
+ # Note that if BQL is supported and enabled on the device
1850
+ # the networking stack will avoid queuing a lot of data at once.
1851
+ # @rbs return: ::Integer
1852
+ # @return [Integer]
1853
+ # @see TxStop
1854
+ def tx_stop: () -> ::Integer
1855
+
1856
+ # Number of times driver re-started accepting send
1857
+ # requests to this queue from the stack.
1858
+ # @rbs return: ::Integer
1859
+ # @return [Integer]
1860
+ # @see TxWake
1861
+ def tx_wake: () -> ::Integer
1862
+
1863
+ # Looks up Attribute class by name.
1864
+ # @rbs name: Symbol
1865
+ # @rbs return: Attribute
1866
+ # @param [Symbol] name
1867
+ # @return [Attribute]
1868
+ def self.by_name: (Symbol name) -> Attribute
1869
+
1870
+ # Looks up Attribute class by type value.
1871
+ # @rbs type: Integer
1872
+ # @rbs return: Attribute
1873
+ # @param [Integer] type
1874
+ # @return [Attribute]
1875
+ def self.by_type: (Integer type) -> Attribute
1876
+ end
1877
+
1878
+ class QueueId < ::Nl::AttributeSet
1879
+ # Abstract class
1880
+ class Attribute < ::Nl::AttributeSet::Attribute
1881
+ end
1882
+
1883
+ # Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
1884
+ class Id < Attribute
1885
+ TYPE: ::Integer
1886
+
1887
+ NAME: ::Symbol
1888
+
1889
+ # @private
1890
+ ORDER: ::Integer
1891
+
1892
+ # @private
1893
+ DATATYPE: untyped
1894
+ end
1895
+
1896
+ # Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
1897
+ #
1898
+ # Known enum values are defined in {Enums::QueueType}.
1899
+ class Type < Attribute
1900
+ TYPE: ::Integer
1901
+
1902
+ NAME: ::Symbol
1903
+
1904
+ # @private
1905
+ ORDER: ::Integer
1906
+
1907
+ # @private
1908
+ DATATYPE: untyped
1909
+ end
1910
+
1911
+ # @private
1912
+ BY_NAME: Hash[::Symbol, Attribute]
1913
+
1914
+ # @private
1915
+ BY_TYPE: Hash[::Integer, Attribute]
1916
+
1917
+ # Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
1918
+ # @rbs return: ::Integer
1919
+ # @return [Integer]
1920
+ # @see Id
1921
+ def id: () -> ::Integer
1922
+
1923
+ # Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
1924
+ #
1925
+ # Known enum values are defined in {Enums::QueueType}.
1926
+ # @rbs return: ::Integer
1927
+ # @return [Integer]
1928
+ # @see Type
1929
+ def type: () -> ::Integer
1930
+
1931
+ # Looks up Attribute class by name.
1932
+ # @rbs name: Symbol
1933
+ # @rbs return: Attribute
1934
+ # @param [Symbol] name
1935
+ # @return [Attribute]
1936
+ def self.by_name: (Symbol name) -> Attribute
1937
+
1938
+ # Looks up Attribute class by type value.
1939
+ # @rbs type: Integer
1940
+ # @rbs return: Attribute
1941
+ # @param [Integer] type
1942
+ # @return [Attribute]
1943
+ def self.by_type: (Integer type) -> Attribute
1944
+ end
1945
+
1946
+ class Lease < ::Nl::AttributeSet
1947
+ # Abstract class
1948
+ class Attribute < ::Nl::AttributeSet::Attribute
1949
+ end
1950
+
1951
+ # The netdev ifindex to lease the queue from.
1952
+ class Ifindex < Attribute
1953
+ TYPE: ::Integer
1954
+
1955
+ NAME: ::Symbol
1956
+
1957
+ # @private
1958
+ ORDER: ::Integer
1959
+
1960
+ # @private
1961
+ DATATYPE: untyped
1962
+ end
1963
+
1964
+ # The netdev queue to lease from.
1965
+ class Queue < Attribute
1966
+ TYPE: ::Integer
1967
+
1968
+ NAME: ::Symbol
1969
+
1970
+ # @private
1971
+ ORDER: ::Integer
1972
+ end
1973
+
1974
+ # The network namespace id of the netdev.
1975
+ class NetnsId < Attribute
1976
+ TYPE: ::Integer
1977
+
1978
+ NAME: ::Symbol
1979
+
1980
+ # @private
1981
+ ORDER: ::Integer
1982
+
1983
+ # @private
1984
+ DATATYPE: untyped
1985
+ end
1986
+
1987
+ # @private
1988
+ BY_NAME: Hash[::Symbol, Attribute]
1989
+
1990
+ # @private
1991
+ BY_TYPE: Hash[::Integer, Attribute]
1992
+
1993
+ # The netdev ifindex to lease the queue from.
1994
+ # @rbs return: ::Integer
1995
+ # @return [Integer]
1996
+ # @see Ifindex
1997
+ def ifindex: () -> ::Integer
1998
+
1999
+ # The netdev queue to lease from.
2000
+ # @rbs return: AttributeSets::QueueId
2001
+ # @return [AttributeSets::QueueId]
2002
+ # @see Queue
2003
+ def queue: () -> AttributeSets::QueueId
2004
+
2005
+ # The network namespace id of the netdev.
2006
+ # @rbs return: ::Integer
2007
+ # @return [Integer]
2008
+ # @see NetnsId
2009
+ def netns_id: () -> ::Integer
2010
+
2011
+ # Looks up Attribute class by name.
2012
+ # @rbs name: Symbol
2013
+ # @rbs return: Attribute
2014
+ # @param [Symbol] name
2015
+ # @return [Attribute]
2016
+ def self.by_name: (Symbol name) -> Attribute
2017
+
2018
+ # Looks up Attribute class by type value.
2019
+ # @rbs type: Integer
2020
+ # @rbs return: Attribute
2021
+ # @param [Integer] type
2022
+ # @return [Attribute]
2023
+ def self.by_type: (Integer type) -> Attribute
2024
+ end
2025
+
2026
+ class Dmabuf < ::Nl::AttributeSet
2027
+ # Abstract class
2028
+ class Attribute < ::Nl::AttributeSet::Attribute
2029
+ end
2030
+
2031
+ # netdev ifindex to bind the dmabuf to.
2032
+ class Ifindex < Attribute
2033
+ TYPE: ::Integer
2034
+
2035
+ NAME: ::Symbol
2036
+
2037
+ # @private
2038
+ ORDER: ::Integer
2039
+
2040
+ # @private
2041
+ DATATYPE: untyped
2042
+ end
2043
+
2044
+ # receive queues to bind the dmabuf to.
2045
+ class Queues < Attribute
2046
+ TYPE: ::Integer
2047
+
2048
+ NAME: ::Symbol
2049
+
2050
+ # @private
2051
+ MULTI: bool
2052
+
2053
+ # @private
2054
+ ORDER: ::Integer
2055
+ end
2056
+
2057
+ # dmabuf file descriptor to bind.
2058
+ class Fd < Attribute
2059
+ TYPE: ::Integer
2060
+
2061
+ NAME: ::Symbol
2062
+
2063
+ # @private
2064
+ ORDER: ::Integer
2065
+
2066
+ # @private
2067
+ DATATYPE: untyped
2068
+ end
2069
+
2070
+ # id of the dmabuf binding
2071
+ class Id < Attribute
2072
+ TYPE: ::Integer
2073
+
2074
+ NAME: ::Symbol
2075
+
2076
+ # @private
2077
+ ORDER: ::Integer
2078
+
2079
+ # @private
2080
+ DATATYPE: untyped
2081
+ end
2082
+
2083
+ # @private
2084
+ BY_NAME: Hash[::Symbol, Attribute]
2085
+
2086
+ # @private
2087
+ BY_TYPE: Hash[::Integer, Attribute]
2088
+
2089
+ # netdev ifindex to bind the dmabuf to.
2090
+ # @rbs return: ::Integer
2091
+ # @return [Integer]
2092
+ # @see Ifindex
2093
+ def ifindex: () -> ::Integer
2094
+
2095
+ # receive queues to bind the dmabuf to.
2096
+ # @rbs return: ::Array[AttributeSets::QueueId]
2097
+ # @return [Array<AttributeSets::QueueId>]
2098
+ # @see Queues
2099
+ def queues: () -> ::Array[AttributeSets::QueueId]
2100
+
2101
+ # dmabuf file descriptor to bind.
2102
+ # @rbs return: ::Integer
2103
+ # @return [Integer]
2104
+ # @see Fd
2105
+ def fd: () -> ::Integer
2106
+
2107
+ # id of the dmabuf binding
2108
+ # @rbs return: ::Integer
2109
+ # @return [Integer]
2110
+ # @see Id
2111
+ def id: () -> ::Integer
2112
+
2113
+ # Looks up Attribute class by name.
2114
+ # @rbs name: Symbol
2115
+ # @rbs return: Attribute
2116
+ # @param [Symbol] name
2117
+ # @return [Attribute]
2118
+ def self.by_name: (Symbol name) -> Attribute
2119
+
2120
+ # Looks up Attribute class by type value.
2121
+ # @rbs type: Integer
2122
+ # @rbs return: Attribute
2123
+ # @param [Integer] type
2124
+ # @return [Attribute]
2125
+ def self.by_type: (Integer type) -> Attribute
2126
+ end
2127
+ end
2128
+
2129
+ module Messages
2130
+ # Get / dump information about a netdev.
2131
+ class DoDevGetRequest < ::Nl::Genl::Message
2132
+ TYPE: ::Integer
2133
+
2134
+ FIXED_HEADER: untyped
2135
+
2136
+ ATTRIBUTE_SET: untyped
2137
+
2138
+ ATTRIBUTES: untyped
2139
+
2140
+ # netdev ifindex
2141
+ # @rbs return: ::Integer
2142
+ # @return [Integer]
2143
+ # @see AttributeSets::Dev::Ifindex
2144
+ def ifindex: () -> ::Integer
2145
+ end
2146
+
2147
+ # Get / dump information about a netdev.
2148
+ class DoDevGetReply < ::Nl::Genl::Message
2149
+ TYPE: ::Integer
2150
+
2151
+ FIXED_HEADER: untyped
2152
+
2153
+ ATTRIBUTE_SET: untyped
2154
+
2155
+ ATTRIBUTES: untyped
2156
+
2157
+ # netdev ifindex
2158
+ # @rbs return: ::Integer
2159
+ # @return [Integer]
2160
+ # @see AttributeSets::Dev::Ifindex
2161
+ def ifindex: () -> ::Integer
2162
+
2163
+ # Bitmask of enabled xdp-features.
2164
+ #
2165
+ # Known flags are defined in {Flags::XdpAct}.
2166
+ # @rbs return: ::Integer
2167
+ # @return [Integer]
2168
+ # @see AttributeSets::Dev::XdpFeatures
2169
+ def xdp_features: () -> ::Integer
2170
+
2171
+ # max fragment count supported by ZC driver
2172
+ # @rbs return: ::Integer
2173
+ # @return [Integer]
2174
+ # @see AttributeSets::Dev::XdpZcMaxSegs
2175
+ def xdp_zc_max_segs: () -> ::Integer
2176
+
2177
+ # Bitmask of supported XDP receive metadata features. See {https://docs.kernel.org/networking/xdp-rx-metadata.html Documentation/networking/xdp-rx-metadata.rst} for more details.
2178
+ #
2179
+ # Known flags are defined in {Flags::XdpRxMetadata}.
2180
+ # @rbs return: ::Integer
2181
+ # @return [Integer]
2182
+ # @see AttributeSets::Dev::XdpRxMetadataFeatures
2183
+ def xdp_rx_metadata_features: () -> ::Integer
2184
+
2185
+ # Bitmask of enabled AF_XDP features.
2186
+ #
2187
+ # Known flags are defined in {Flags::XskFlags}.
2188
+ # @rbs return: ::Integer
2189
+ # @return [Integer]
2190
+ # @see AttributeSets::Dev::XskFeatures
2191
+ def xsk_features: () -> ::Integer
2192
+ end
2193
+
2194
+ # Get / dump information about a netdev.
2195
+ class DumpDevGetRequest < ::Nl::Genl::Message
2196
+ TYPE: ::Integer
2197
+
2198
+ FIXED_HEADER: untyped
2199
+
2200
+ ATTRIBUTE_SET: untyped
2201
+
2202
+ ATTRIBUTES: untyped
2203
+ end
2204
+
2205
+ # Get / dump information about a netdev.
2206
+ class DumpDevGetReply < ::Nl::Genl::Message
2207
+ TYPE: ::Integer
2208
+
2209
+ FIXED_HEADER: untyped
2210
+
2211
+ ATTRIBUTE_SET: untyped
2212
+
2213
+ ATTRIBUTES: untyped
2214
+
2215
+ # netdev ifindex
2216
+ # @rbs return: ::Integer
2217
+ # @return [Integer]
2218
+ # @see AttributeSets::Dev::Ifindex
2219
+ def ifindex: () -> ::Integer
2220
+
2221
+ # Bitmask of enabled xdp-features.
2222
+ #
2223
+ # Known flags are defined in {Flags::XdpAct}.
2224
+ # @rbs return: ::Integer
2225
+ # @return [Integer]
2226
+ # @see AttributeSets::Dev::XdpFeatures
2227
+ def xdp_features: () -> ::Integer
2228
+
2229
+ # max fragment count supported by ZC driver
2230
+ # @rbs return: ::Integer
2231
+ # @return [Integer]
2232
+ # @see AttributeSets::Dev::XdpZcMaxSegs
2233
+ def xdp_zc_max_segs: () -> ::Integer
2234
+
2235
+ # Bitmask of supported XDP receive metadata features. See {https://docs.kernel.org/networking/xdp-rx-metadata.html Documentation/networking/xdp-rx-metadata.rst} for more details.
2236
+ #
2237
+ # Known flags are defined in {Flags::XdpRxMetadata}.
2238
+ # @rbs return: ::Integer
2239
+ # @return [Integer]
2240
+ # @see AttributeSets::Dev::XdpRxMetadataFeatures
2241
+ def xdp_rx_metadata_features: () -> ::Integer
2242
+
2243
+ # Bitmask of enabled AF_XDP features.
2244
+ #
2245
+ # Known flags are defined in {Flags::XskFlags}.
2246
+ # @rbs return: ::Integer
2247
+ # @return [Integer]
2248
+ # @see AttributeSets::Dev::XskFeatures
2249
+ def xsk_features: () -> ::Integer
2250
+ end
2251
+
2252
+ # Get / dump information about Page Pools.
2253
+ # Only Page Pools associated by the driver with a net_device
2254
+ # can be listed. ifindex will not be reported if the net_device
2255
+ # no longer exists.
2256
+ class DoPagePoolGetRequest < ::Nl::Genl::Message
2257
+ TYPE: ::Integer
2258
+
2259
+ FIXED_HEADER: untyped
2260
+
2261
+ ATTRIBUTE_SET: untyped
2262
+
2263
+ ATTRIBUTES: untyped
2264
+
2265
+ # Unique ID of a Page Pool instance.
2266
+ # @rbs return: ::Integer
2267
+ # @return [Integer]
2268
+ # @see AttributeSets::PagePool::Id
2269
+ def id: () -> ::Integer
2270
+ end
2271
+
2272
+ # Get / dump information about Page Pools.
2273
+ # Only Page Pools associated by the driver with a net_device
2274
+ # can be listed. ifindex will not be reported if the net_device
2275
+ # no longer exists.
2276
+ class DoPagePoolGetReply < ::Nl::Genl::Message
2277
+ TYPE: ::Integer
2278
+
2279
+ FIXED_HEADER: untyped
2280
+
2281
+ ATTRIBUTE_SET: untyped
2282
+
2283
+ ATTRIBUTES: untyped
2284
+
2285
+ # Unique ID of a Page Pool instance.
2286
+ # @rbs return: ::Integer
2287
+ # @return [Integer]
2288
+ # @see AttributeSets::PagePool::Id
2289
+ def id: () -> ::Integer
2290
+
2291
+ # ifindex of the netdev to which the pool belongs.
2292
+ # May not be reported if the page pool was allocated for a netdev
2293
+ # which got destroyed already (page pools may outlast their netdevs
2294
+ # because they wait for all memory to be returned).
2295
+ # @rbs return: ::Integer
2296
+ # @return [Integer]
2297
+ # @see AttributeSets::PagePool::Ifindex
2298
+ def ifindex: () -> ::Integer
2299
+
2300
+ # Id of NAPI using this Page Pool instance.
2301
+ # @rbs return: ::Integer
2302
+ # @return [Integer]
2303
+ # @see AttributeSets::PagePool::NapiId
2304
+ def napi_id: () -> ::Integer
2305
+
2306
+ # Number of outstanding references to this page pool (allocated
2307
+ # but yet to be freed pages). Allocated pages may be held in
2308
+ # socket receive queues, driver receive ring, page pool recycling
2309
+ # ring, the page pool cache, etc.
2310
+ # @rbs return: ::Integer
2311
+ # @return [Integer]
2312
+ # @see AttributeSets::PagePool::Inflight
2313
+ def inflight: () -> ::Integer
2314
+
2315
+ # Amount of memory held by inflight pages.
2316
+ # @rbs return: ::Integer
2317
+ # @return [Integer]
2318
+ # @see AttributeSets::PagePool::InflightMem
2319
+ def inflight_mem: () -> ::Integer
2320
+
2321
+ # Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
2322
+ # the driver. Once detached Page Pool can no longer be used to
2323
+ # allocate memory.
2324
+ # Page Pools wait for all the memory allocated from them to be freed
2325
+ # before truly disappearing. "Detached" Page Pools cannot be
2326
+ # "re-attached", they are just waiting to disappear.
2327
+ # Attribute is absent if Page Pool has not been detached, and
2328
+ # can still be used to allocate new memory.
2329
+ # @rbs return: ::Integer
2330
+ # @return [Integer]
2331
+ # @see AttributeSets::PagePool::DetachTime
2332
+ def detach_time: () -> ::Integer
2333
+
2334
+ # ID of the dmabuf this page-pool is attached to.
2335
+ # @rbs return: ::Integer
2336
+ # @return [Integer]
2337
+ # @see AttributeSets::PagePool::Dmabuf
2338
+ def dmabuf: () -> ::Integer
2339
+
2340
+ # io-uring memory provider information.
2341
+ # @rbs return: AttributeSets::IoUringProviderInfo
2342
+ # @return [AttributeSets::IoUringProviderInfo]
2343
+ # @see AttributeSets::PagePool::IoUring
2344
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
2345
+ end
2346
+
2347
+ # Get / dump information about Page Pools.
2348
+ # Only Page Pools associated by the driver with a net_device
2349
+ # can be listed. ifindex will not be reported if the net_device
2350
+ # no longer exists.
2351
+ class DumpPagePoolGetRequest < ::Nl::Genl::Message
2352
+ TYPE: ::Integer
2353
+
2354
+ FIXED_HEADER: untyped
2355
+
2356
+ ATTRIBUTE_SET: untyped
2357
+
2358
+ ATTRIBUTES: untyped
2359
+
2360
+ # ifindex of the netdev to which the pool belongs.
2361
+ # May not be reported if the page pool was allocated for a netdev
2362
+ # which got destroyed already (page pools may outlast their netdevs
2363
+ # because they wait for all memory to be returned).
2364
+ # @rbs return: ::Integer
2365
+ # @return [Integer]
2366
+ # @see AttributeSets::PagePool::Ifindex
2367
+ def ifindex: () -> ::Integer
2368
+ end
2369
+
2370
+ # Get / dump information about Page Pools.
2371
+ # Only Page Pools associated by the driver with a net_device
2372
+ # can be listed. ifindex will not be reported if the net_device
2373
+ # no longer exists.
2374
+ class DumpPagePoolGetReply < ::Nl::Genl::Message
2375
+ TYPE: ::Integer
2376
+
2377
+ FIXED_HEADER: untyped
2378
+
2379
+ ATTRIBUTE_SET: untyped
2380
+
2381
+ ATTRIBUTES: untyped
2382
+
2383
+ # Unique ID of a Page Pool instance.
2384
+ # @rbs return: ::Integer
2385
+ # @return [Integer]
2386
+ # @see AttributeSets::PagePool::Id
2387
+ def id: () -> ::Integer
2388
+
2389
+ # ifindex of the netdev to which the pool belongs.
2390
+ # May not be reported if the page pool was allocated for a netdev
2391
+ # which got destroyed already (page pools may outlast their netdevs
2392
+ # because they wait for all memory to be returned).
2393
+ # @rbs return: ::Integer
2394
+ # @return [Integer]
2395
+ # @see AttributeSets::PagePool::Ifindex
2396
+ def ifindex: () -> ::Integer
2397
+
2398
+ # Id of NAPI using this Page Pool instance.
2399
+ # @rbs return: ::Integer
2400
+ # @return [Integer]
2401
+ # @see AttributeSets::PagePool::NapiId
2402
+ def napi_id: () -> ::Integer
2403
+
2404
+ # Number of outstanding references to this page pool (allocated
2405
+ # but yet to be freed pages). Allocated pages may be held in
2406
+ # socket receive queues, driver receive ring, page pool recycling
2407
+ # ring, the page pool cache, etc.
2408
+ # @rbs return: ::Integer
2409
+ # @return [Integer]
2410
+ # @see AttributeSets::PagePool::Inflight
2411
+ def inflight: () -> ::Integer
2412
+
2413
+ # Amount of memory held by inflight pages.
2414
+ # @rbs return: ::Integer
2415
+ # @return [Integer]
2416
+ # @see AttributeSets::PagePool::InflightMem
2417
+ def inflight_mem: () -> ::Integer
2418
+
2419
+ # Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
2420
+ # the driver. Once detached Page Pool can no longer be used to
2421
+ # allocate memory.
2422
+ # Page Pools wait for all the memory allocated from them to be freed
2423
+ # before truly disappearing. "Detached" Page Pools cannot be
2424
+ # "re-attached", they are just waiting to disappear.
2425
+ # Attribute is absent if Page Pool has not been detached, and
2426
+ # can still be used to allocate new memory.
2427
+ # @rbs return: ::Integer
2428
+ # @return [Integer]
2429
+ # @see AttributeSets::PagePool::DetachTime
2430
+ def detach_time: () -> ::Integer
2431
+
2432
+ # ID of the dmabuf this page-pool is attached to.
2433
+ # @rbs return: ::Integer
2434
+ # @return [Integer]
2435
+ # @see AttributeSets::PagePool::Dmabuf
2436
+ def dmabuf: () -> ::Integer
2437
+
2438
+ # io-uring memory provider information.
2439
+ # @rbs return: AttributeSets::IoUringProviderInfo
2440
+ # @return [AttributeSets::IoUringProviderInfo]
2441
+ # @see AttributeSets::PagePool::IoUring
2442
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
2443
+ end
2444
+
2445
+ # Get page pool statistics.
2446
+ class DoPagePoolStatsGetRequest < ::Nl::Genl::Message
2447
+ TYPE: ::Integer
2448
+
2449
+ FIXED_HEADER: untyped
2450
+
2451
+ ATTRIBUTE_SET: untyped
2452
+
2453
+ ATTRIBUTES: untyped
2454
+
2455
+ # Page pool identifying information.
2456
+ # @rbs return: AttributeSets::PagePoolInfo
2457
+ # @return [AttributeSets::PagePoolInfo]
2458
+ # @see AttributeSets::PagePoolStats::Info
2459
+ def info: () -> AttributeSets::PagePoolInfo
2460
+ end
2461
+
2462
+ # Get page pool statistics.
2463
+ class DoPagePoolStatsGetReply < ::Nl::Genl::Message
2464
+ TYPE: ::Integer
2465
+
2466
+ FIXED_HEADER: untyped
2467
+
2468
+ ATTRIBUTE_SET: untyped
2469
+
2470
+ ATTRIBUTES: untyped
2471
+
2472
+ # Page pool identifying information.
2473
+ # @rbs return: AttributeSets::PagePoolInfo
2474
+ # @return [AttributeSets::PagePoolInfo]
2475
+ # @see AttributeSets::PagePoolStats::Info
2476
+ def info: () -> AttributeSets::PagePoolInfo
2477
+
2478
+ # @rbs return: ::Integer
2479
+ # @return [Integer]
2480
+ # @see AttributeSets::PagePoolStats::AllocFast
2481
+ def alloc_fast: () -> ::Integer
2482
+
2483
+ # @rbs return: ::Integer
2484
+ # @return [Integer]
2485
+ # @see AttributeSets::PagePoolStats::AllocSlow
2486
+ def alloc_slow: () -> ::Integer
2487
+
2488
+ # @rbs return: ::Integer
2489
+ # @return [Integer]
2490
+ # @see AttributeSets::PagePoolStats::AllocSlowHighOrder
2491
+ def alloc_slow_high_order: () -> ::Integer
2492
+
2493
+ # @rbs return: ::Integer
2494
+ # @return [Integer]
2495
+ # @see AttributeSets::PagePoolStats::AllocEmpty
2496
+ def alloc_empty: () -> ::Integer
2497
+
2498
+ # @rbs return: ::Integer
2499
+ # @return [Integer]
2500
+ # @see AttributeSets::PagePoolStats::AllocRefill
2501
+ def alloc_refill: () -> ::Integer
2502
+
2503
+ # @rbs return: ::Integer
2504
+ # @return [Integer]
2505
+ # @see AttributeSets::PagePoolStats::AllocWaive
2506
+ def alloc_waive: () -> ::Integer
2507
+
2508
+ # @rbs return: ::Integer
2509
+ # @return [Integer]
2510
+ # @see AttributeSets::PagePoolStats::RecycleCached
2511
+ def recycle_cached: () -> ::Integer
2512
+
2513
+ # @rbs return: ::Integer
2514
+ # @return [Integer]
2515
+ # @see AttributeSets::PagePoolStats::RecycleCacheFull
2516
+ def recycle_cache_full: () -> ::Integer
2517
+
2518
+ # @rbs return: ::Integer
2519
+ # @return [Integer]
2520
+ # @see AttributeSets::PagePoolStats::RecycleRing
2521
+ def recycle_ring: () -> ::Integer
2522
+
2523
+ # @rbs return: ::Integer
2524
+ # @return [Integer]
2525
+ # @see AttributeSets::PagePoolStats::RecycleRingFull
2526
+ def recycle_ring_full: () -> ::Integer
2527
+
2528
+ # @rbs return: ::Integer
2529
+ # @return [Integer]
2530
+ # @see AttributeSets::PagePoolStats::RecycleReleasedRefcnt
2531
+ def recycle_released_refcnt: () -> ::Integer
2532
+ end
2533
+
2534
+ # Get page pool statistics.
2535
+ class DumpPagePoolStatsGetRequest < ::Nl::Genl::Message
2536
+ TYPE: ::Integer
2537
+
2538
+ FIXED_HEADER: untyped
2539
+
2540
+ ATTRIBUTE_SET: untyped
2541
+
2542
+ ATTRIBUTES: untyped
2543
+
2544
+ # Page pool identifying information.
2545
+ # @rbs return: AttributeSets::PagePoolInfo
2546
+ # @return [AttributeSets::PagePoolInfo]
2547
+ # @see AttributeSets::PagePoolStats::Info
2548
+ def info: () -> AttributeSets::PagePoolInfo
2549
+ end
2550
+
2551
+ # Get page pool statistics.
2552
+ class DumpPagePoolStatsGetReply < ::Nl::Genl::Message
2553
+ TYPE: ::Integer
2554
+
2555
+ FIXED_HEADER: untyped
2556
+
2557
+ ATTRIBUTE_SET: untyped
2558
+
2559
+ ATTRIBUTES: untyped
2560
+
2561
+ # Page pool identifying information.
2562
+ # @rbs return: AttributeSets::PagePoolInfo
2563
+ # @return [AttributeSets::PagePoolInfo]
2564
+ # @see AttributeSets::PagePoolStats::Info
2565
+ def info: () -> AttributeSets::PagePoolInfo
2566
+
2567
+ # @rbs return: ::Integer
2568
+ # @return [Integer]
2569
+ # @see AttributeSets::PagePoolStats::AllocFast
2570
+ def alloc_fast: () -> ::Integer
2571
+
2572
+ # @rbs return: ::Integer
2573
+ # @return [Integer]
2574
+ # @see AttributeSets::PagePoolStats::AllocSlow
2575
+ def alloc_slow: () -> ::Integer
2576
+
2577
+ # @rbs return: ::Integer
2578
+ # @return [Integer]
2579
+ # @see AttributeSets::PagePoolStats::AllocSlowHighOrder
2580
+ def alloc_slow_high_order: () -> ::Integer
2581
+
2582
+ # @rbs return: ::Integer
2583
+ # @return [Integer]
2584
+ # @see AttributeSets::PagePoolStats::AllocEmpty
2585
+ def alloc_empty: () -> ::Integer
2586
+
2587
+ # @rbs return: ::Integer
2588
+ # @return [Integer]
2589
+ # @see AttributeSets::PagePoolStats::AllocRefill
2590
+ def alloc_refill: () -> ::Integer
2591
+
2592
+ # @rbs return: ::Integer
2593
+ # @return [Integer]
2594
+ # @see AttributeSets::PagePoolStats::AllocWaive
2595
+ def alloc_waive: () -> ::Integer
2596
+
2597
+ # @rbs return: ::Integer
2598
+ # @return [Integer]
2599
+ # @see AttributeSets::PagePoolStats::RecycleCached
2600
+ def recycle_cached: () -> ::Integer
2601
+
2602
+ # @rbs return: ::Integer
2603
+ # @return [Integer]
2604
+ # @see AttributeSets::PagePoolStats::RecycleCacheFull
2605
+ def recycle_cache_full: () -> ::Integer
2606
+
2607
+ # @rbs return: ::Integer
2608
+ # @return [Integer]
2609
+ # @see AttributeSets::PagePoolStats::RecycleRing
2610
+ def recycle_ring: () -> ::Integer
2611
+
2612
+ # @rbs return: ::Integer
2613
+ # @return [Integer]
2614
+ # @see AttributeSets::PagePoolStats::RecycleRingFull
2615
+ def recycle_ring_full: () -> ::Integer
2616
+
2617
+ # @rbs return: ::Integer
2618
+ # @return [Integer]
2619
+ # @see AttributeSets::PagePoolStats::RecycleReleasedRefcnt
2620
+ def recycle_released_refcnt: () -> ::Integer
2621
+ end
2622
+
2623
+ # Get queue information from the kernel. Only configured queues will be reported (as opposed to all available hardware queues).
2624
+ class DoQueueGetRequest < ::Nl::Genl::Message
2625
+ TYPE: ::Integer
2626
+
2627
+ FIXED_HEADER: untyped
2628
+
2629
+ ATTRIBUTE_SET: untyped
2630
+
2631
+ ATTRIBUTES: untyped
2632
+
2633
+ # Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
2634
+ # @rbs return: ::Integer
2635
+ # @return [Integer]
2636
+ # @see AttributeSets::Queue::Id
2637
+ def id: () -> ::Integer
2638
+
2639
+ # ifindex of the netdevice to which the queue belongs.
2640
+ # @rbs return: ::Integer
2641
+ # @return [Integer]
2642
+ # @see AttributeSets::Queue::Ifindex
2643
+ def ifindex: () -> ::Integer
2644
+
2645
+ # Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
2646
+ #
2647
+ # Known enum values are defined in {Enums::QueueType}.
2648
+ # @rbs return: ::Integer
2649
+ # @return [Integer]
2650
+ # @see AttributeSets::Queue::Type
2651
+ def type: () -> ::Integer
2652
+ end
2653
+
2654
+ # Get queue information from the kernel. Only configured queues will be reported (as opposed to all available hardware queues).
2655
+ class DoQueueGetReply < ::Nl::Genl::Message
2656
+ TYPE: ::Integer
2657
+
2658
+ FIXED_HEADER: untyped
2659
+
2660
+ ATTRIBUTE_SET: untyped
2661
+
2662
+ ATTRIBUTES: untyped
2663
+
2664
+ # Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
2665
+ # @rbs return: ::Integer
2666
+ # @return [Integer]
2667
+ # @see AttributeSets::Queue::Id
2668
+ def id: () -> ::Integer
2669
+
2670
+ # ifindex of the netdevice to which the queue belongs.
2671
+ # @rbs return: ::Integer
2672
+ # @return [Integer]
2673
+ # @see AttributeSets::Queue::Ifindex
2674
+ def ifindex: () -> ::Integer
2675
+
2676
+ # Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
2677
+ #
2678
+ # Known enum values are defined in {Enums::QueueType}.
2679
+ # @rbs return: ::Integer
2680
+ # @return [Integer]
2681
+ # @see AttributeSets::Queue::Type
2682
+ def type: () -> ::Integer
2683
+
2684
+ # ID of the NAPI instance which services this queue.
2685
+ # @rbs return: ::Integer
2686
+ # @return [Integer]
2687
+ # @see AttributeSets::Queue::NapiId
2688
+ def napi_id: () -> ::Integer
2689
+
2690
+ # ID of the dmabuf attached to this queue, if any.
2691
+ # @rbs return: ::Integer
2692
+ # @return [Integer]
2693
+ # @see AttributeSets::Queue::Dmabuf
2694
+ def dmabuf: () -> ::Integer
2695
+
2696
+ # io_uring memory provider information.
2697
+ # @rbs return: AttributeSets::IoUringProviderInfo
2698
+ # @return [AttributeSets::IoUringProviderInfo]
2699
+ # @see AttributeSets::Queue::IoUring
2700
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
2701
+
2702
+ # XSK information for this queue, if any.
2703
+ # @rbs return: AttributeSets::XskInfo
2704
+ # @return [AttributeSets::XskInfo]
2705
+ # @see AttributeSets::Queue::Xsk
2706
+ def xsk: () -> AttributeSets::XskInfo
2707
+
2708
+ # A queue from a virtual device can have a lease which refers to
2709
+ # another queue from a physical device. This is useful for memory
2710
+ # providers and AF_XDP operations which take an ifindex and queue id
2711
+ # to allow applications to bind against virtual devices in containers.
2712
+ # @rbs return: AttributeSets::Lease
2713
+ # @return [AttributeSets::Lease]
2714
+ # @see AttributeSets::Queue::Lease
2715
+ def lease: () -> AttributeSets::Lease
2716
+ end
2717
+
2718
+ # Get queue information from the kernel. Only configured queues will be reported (as opposed to all available hardware queues).
2719
+ class DumpQueueGetRequest < ::Nl::Genl::Message
2720
+ TYPE: ::Integer
2721
+
2722
+ FIXED_HEADER: untyped
2723
+
2724
+ ATTRIBUTE_SET: untyped
2725
+
2726
+ ATTRIBUTES: untyped
2727
+
2728
+ # ifindex of the netdevice to which the queue belongs.
2729
+ # @rbs return: ::Integer
2730
+ # @return [Integer]
2731
+ # @see AttributeSets::Queue::Ifindex
2732
+ def ifindex: () -> ::Integer
2733
+ end
2734
+
2735
+ # Get queue information from the kernel. Only configured queues will be reported (as opposed to all available hardware queues).
2736
+ class DumpQueueGetReply < ::Nl::Genl::Message
2737
+ TYPE: ::Integer
2738
+
2739
+ FIXED_HEADER: untyped
2740
+
2741
+ ATTRIBUTE_SET: untyped
2742
+
2743
+ ATTRIBUTES: untyped
2744
+
2745
+ # Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
2746
+ # @rbs return: ::Integer
2747
+ # @return [Integer]
2748
+ # @see AttributeSets::Queue::Id
2749
+ def id: () -> ::Integer
2750
+
2751
+ # ifindex of the netdevice to which the queue belongs.
2752
+ # @rbs return: ::Integer
2753
+ # @return [Integer]
2754
+ # @see AttributeSets::Queue::Ifindex
2755
+ def ifindex: () -> ::Integer
2756
+
2757
+ # Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
2758
+ #
2759
+ # Known enum values are defined in {Enums::QueueType}.
2760
+ # @rbs return: ::Integer
2761
+ # @return [Integer]
2762
+ # @see AttributeSets::Queue::Type
2763
+ def type: () -> ::Integer
2764
+
2765
+ # ID of the NAPI instance which services this queue.
2766
+ # @rbs return: ::Integer
2767
+ # @return [Integer]
2768
+ # @see AttributeSets::Queue::NapiId
2769
+ def napi_id: () -> ::Integer
2770
+
2771
+ # ID of the dmabuf attached to this queue, if any.
2772
+ # @rbs return: ::Integer
2773
+ # @return [Integer]
2774
+ # @see AttributeSets::Queue::Dmabuf
2775
+ def dmabuf: () -> ::Integer
2776
+
2777
+ # io_uring memory provider information.
2778
+ # @rbs return: AttributeSets::IoUringProviderInfo
2779
+ # @return [AttributeSets::IoUringProviderInfo]
2780
+ # @see AttributeSets::Queue::IoUring
2781
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
2782
+
2783
+ # XSK information for this queue, if any.
2784
+ # @rbs return: AttributeSets::XskInfo
2785
+ # @return [AttributeSets::XskInfo]
2786
+ # @see AttributeSets::Queue::Xsk
2787
+ def xsk: () -> AttributeSets::XskInfo
2788
+
2789
+ # A queue from a virtual device can have a lease which refers to
2790
+ # another queue from a physical device. This is useful for memory
2791
+ # providers and AF_XDP operations which take an ifindex and queue id
2792
+ # to allow applications to bind against virtual devices in containers.
2793
+ # @rbs return: AttributeSets::Lease
2794
+ # @return [AttributeSets::Lease]
2795
+ # @see AttributeSets::Queue::Lease
2796
+ def lease: () -> AttributeSets::Lease
2797
+ end
2798
+
2799
+ # Get information about NAPI instances configured on the system.
2800
+ class DoNapiGetRequest < ::Nl::Genl::Message
2801
+ TYPE: ::Integer
2802
+
2803
+ FIXED_HEADER: untyped
2804
+
2805
+ ATTRIBUTE_SET: untyped
2806
+
2807
+ ATTRIBUTES: untyped
2808
+
2809
+ # ID of the NAPI instance.
2810
+ # @rbs return: ::Integer
2811
+ # @return [Integer]
2812
+ # @see AttributeSets::Napi::Id
2813
+ def id: () -> ::Integer
2814
+ end
2815
+
2816
+ # Get information about NAPI instances configured on the system.
2817
+ class DoNapiGetReply < ::Nl::Genl::Message
2818
+ TYPE: ::Integer
2819
+
2820
+ FIXED_HEADER: untyped
2821
+
2822
+ ATTRIBUTE_SET: untyped
2823
+
2824
+ ATTRIBUTES: untyped
2825
+
2826
+ # ifindex of the netdevice to which NAPI instance belongs.
2827
+ # @rbs return: ::Integer
2828
+ # @return [Integer]
2829
+ # @see AttributeSets::Napi::Ifindex
2830
+ def ifindex: () -> ::Integer
2831
+
2832
+ # ID of the NAPI instance.
2833
+ # @rbs return: ::Integer
2834
+ # @return [Integer]
2835
+ # @see AttributeSets::Napi::Id
2836
+ def id: () -> ::Integer
2837
+
2838
+ # The associated interrupt vector number for the napi
2839
+ # @rbs return: ::Integer
2840
+ # @return [Integer]
2841
+ # @see AttributeSets::Napi::Irq
2842
+ def irq: () -> ::Integer
2843
+
2844
+ # PID of the napi thread, if NAPI is configured to operate in threaded mode. If NAPI is not in threaded mode (i.e. uses normal softirq context), the attribute will be absent.
2845
+ # @rbs return: ::Integer
2846
+ # @return [Integer]
2847
+ # @see AttributeSets::Napi::Pid
2848
+ def pid: () -> ::Integer
2849
+
2850
+ # The number of consecutive empty polls before IRQ deferral ends and hardware IRQs are re-enabled.
2851
+ # @rbs return: ::Integer
2852
+ # @return [Integer]
2853
+ # @see AttributeSets::Napi::DeferHardIrqs
2854
+ def defer_hard_irqs: () -> ::Integer
2855
+
2856
+ # The timeout, in nanoseconds, of when to trigger the NAPI watchdog timer which schedules NAPI processing. Additionally, a non-zero value will also prevent GRO from flushing recent super-frames at the end of a NAPI cycle. This may add receive latency in exchange for reducing the number of frames processed by the network stack.
2857
+ # @rbs return: ::Integer
2858
+ # @return [Integer]
2859
+ # @see AttributeSets::Napi::GroFlushTimeout
2860
+ def gro_flush_timeout: () -> ::Integer
2861
+
2862
+ # The timeout, in nanoseconds, of how long to suspend irq processing, if event polling finds events
2863
+ # @rbs return: ::Integer
2864
+ # @return [Integer]
2865
+ # @see AttributeSets::Napi::IrqSuspendTimeout
2866
+ def irq_suspend_timeout: () -> ::Integer
2867
+
2868
+ # Whether the NAPI is configured to operate in threaded polling mode. If this is set to enabled then the NAPI context operates in threaded polling mode. If this is set to busy-poll, then the threaded polling mode also busy polls.
2869
+ #
2870
+ # Known enum values are defined in {Enums::NapiThreaded}.
2871
+ # @rbs return: ::Integer
2872
+ # @return [Integer]
2873
+ # @see AttributeSets::Napi::Threaded
2874
+ def threaded: () -> ::Integer
2875
+ end
2876
+
2877
+ # Get information about NAPI instances configured on the system.
2878
+ class DumpNapiGetRequest < ::Nl::Genl::Message
2879
+ TYPE: ::Integer
2880
+
2881
+ FIXED_HEADER: untyped
2882
+
2883
+ ATTRIBUTE_SET: untyped
2884
+
2885
+ ATTRIBUTES: untyped
2886
+
2887
+ # ifindex of the netdevice to which NAPI instance belongs.
2888
+ # @rbs return: ::Integer
2889
+ # @return [Integer]
2890
+ # @see AttributeSets::Napi::Ifindex
2891
+ def ifindex: () -> ::Integer
2892
+ end
2893
+
2894
+ # Get information about NAPI instances configured on the system.
2895
+ class DumpNapiGetReply < ::Nl::Genl::Message
2896
+ TYPE: ::Integer
2897
+
2898
+ FIXED_HEADER: untyped
2899
+
2900
+ ATTRIBUTE_SET: untyped
2901
+
2902
+ ATTRIBUTES: untyped
2903
+
2904
+ # ifindex of the netdevice to which NAPI instance belongs.
2905
+ # @rbs return: ::Integer
2906
+ # @return [Integer]
2907
+ # @see AttributeSets::Napi::Ifindex
2908
+ def ifindex: () -> ::Integer
2909
+
2910
+ # ID of the NAPI instance.
2911
+ # @rbs return: ::Integer
2912
+ # @return [Integer]
2913
+ # @see AttributeSets::Napi::Id
2914
+ def id: () -> ::Integer
2915
+
2916
+ # The associated interrupt vector number for the napi
2917
+ # @rbs return: ::Integer
2918
+ # @return [Integer]
2919
+ # @see AttributeSets::Napi::Irq
2920
+ def irq: () -> ::Integer
2921
+
2922
+ # PID of the napi thread, if NAPI is configured to operate in threaded mode. If NAPI is not in threaded mode (i.e. uses normal softirq context), the attribute will be absent.
2923
+ # @rbs return: ::Integer
2924
+ # @return [Integer]
2925
+ # @see AttributeSets::Napi::Pid
2926
+ def pid: () -> ::Integer
2927
+
2928
+ # The number of consecutive empty polls before IRQ deferral ends and hardware IRQs are re-enabled.
2929
+ # @rbs return: ::Integer
2930
+ # @return [Integer]
2931
+ # @see AttributeSets::Napi::DeferHardIrqs
2932
+ def defer_hard_irqs: () -> ::Integer
2933
+
2934
+ # The timeout, in nanoseconds, of when to trigger the NAPI watchdog timer which schedules NAPI processing. Additionally, a non-zero value will also prevent GRO from flushing recent super-frames at the end of a NAPI cycle. This may add receive latency in exchange for reducing the number of frames processed by the network stack.
2935
+ # @rbs return: ::Integer
2936
+ # @return [Integer]
2937
+ # @see AttributeSets::Napi::GroFlushTimeout
2938
+ def gro_flush_timeout: () -> ::Integer
2939
+
2940
+ # The timeout, in nanoseconds, of how long to suspend irq processing, if event polling finds events
2941
+ # @rbs return: ::Integer
2942
+ # @return [Integer]
2943
+ # @see AttributeSets::Napi::IrqSuspendTimeout
2944
+ def irq_suspend_timeout: () -> ::Integer
2945
+
2946
+ # Whether the NAPI is configured to operate in threaded polling mode. If this is set to enabled then the NAPI context operates in threaded polling mode. If this is set to busy-poll, then the threaded polling mode also busy polls.
2947
+ #
2948
+ # Known enum values are defined in {Enums::NapiThreaded}.
2949
+ # @rbs return: ::Integer
2950
+ # @return [Integer]
2951
+ # @see AttributeSets::Napi::Threaded
2952
+ def threaded: () -> ::Integer
2953
+ end
2954
+
2955
+ # Get / dump fine grained statistics. Which statistics are reported
2956
+ # depends on the device and the driver, and whether the driver stores
2957
+ # software counters per-queue.
2958
+ class DumpQstatsGetRequest < ::Nl::Genl::Message
2959
+ TYPE: ::Integer
2960
+
2961
+ FIXED_HEADER: untyped
2962
+
2963
+ ATTRIBUTE_SET: untyped
2964
+
2965
+ ATTRIBUTES: untyped
2966
+
2967
+ # ifindex of the netdevice to which stats belong.
2968
+ # @rbs return: ::Integer
2969
+ # @return [Integer]
2970
+ # @see AttributeSets::Qstats::Ifindex
2971
+ def ifindex: () -> ::Integer
2972
+
2973
+ # What object type should be used to iterate over the stats.
2974
+ #
2975
+ #
2976
+ # Known flags are defined in {Flags::QstatsScope}.
2977
+ # @rbs return: ::Integer
2978
+ # @return [Integer]
2979
+ # @see AttributeSets::Qstats::Scope
2980
+ def scope: () -> ::Integer
2981
+ end
2982
+
2983
+ # Get / dump fine grained statistics. Which statistics are reported
2984
+ # depends on the device and the driver, and whether the driver stores
2985
+ # software counters per-queue.
2986
+ class DumpQstatsGetReply < ::Nl::Genl::Message
2987
+ TYPE: ::Integer
2988
+
2989
+ FIXED_HEADER: untyped
2990
+
2991
+ ATTRIBUTE_SET: untyped
2992
+
2993
+ ATTRIBUTES: untyped
2994
+
2995
+ # ifindex of the netdevice to which stats belong.
2996
+ # @rbs return: ::Integer
2997
+ # @return [Integer]
2998
+ # @see AttributeSets::Qstats::Ifindex
2999
+ def ifindex: () -> ::Integer
3000
+
3001
+ # Queue type as rx, tx, for queue-id.
3002
+ #
3003
+ # Known enum values are defined in {Enums::QueueType}.
3004
+ # @rbs return: ::Integer
3005
+ # @return [Integer]
3006
+ # @see AttributeSets::Qstats::QueueType
3007
+ def queue_type: () -> ::Integer
3008
+
3009
+ # Queue ID, if stats are scoped to a single queue instance.
3010
+ # @rbs return: ::Integer
3011
+ # @return [Integer]
3012
+ # @see AttributeSets::Qstats::QueueId
3013
+ def queue_id: () -> ::Integer
3014
+
3015
+ # Number of wire packets successfully received and passed to the stack.
3016
+ # For drivers supporting XDP, XDP is considered the first layer
3017
+ # of the stack, so packets consumed by XDP are still counted here.
3018
+ # @rbs return: ::Integer
3019
+ # @return [Integer]
3020
+ # @see AttributeSets::Qstats::RxPackets
3021
+ def rx_packets: () -> ::Integer
3022
+
3023
+ # Successfully received bytes, see `rx-packets`.
3024
+ # @rbs return: ::Integer
3025
+ # @return [Integer]
3026
+ # @see AttributeSets::Qstats::RxBytes
3027
+ def rx_bytes: () -> ::Integer
3028
+
3029
+ # Number of wire packets successfully sent. Packet is considered to be
3030
+ # successfully sent once it is in device memory (usually this means
3031
+ # the device has issued a DMA completion for the packet).
3032
+ # @rbs return: ::Integer
3033
+ # @return [Integer]
3034
+ # @see AttributeSets::Qstats::TxPackets
3035
+ def tx_packets: () -> ::Integer
3036
+
3037
+ # Successfully sent bytes, see `tx-packets`.
3038
+ # @rbs return: ::Integer
3039
+ # @return [Integer]
3040
+ # @see AttributeSets::Qstats::TxBytes
3041
+ def tx_bytes: () -> ::Integer
3042
+
3043
+ # Number of times skb or buffer allocation failed on the Rx datapath.
3044
+ # Allocation failure may, or may not result in a packet drop, depending
3045
+ # on driver implementation and whether system recovers quickly.
3046
+ # @rbs return: ::Integer
3047
+ # @return [Integer]
3048
+ # @see AttributeSets::Qstats::RxAllocFail
3049
+ def rx_alloc_fail: () -> ::Integer
3050
+
3051
+ # Number of all packets which entered the device, but never left it,
3052
+ # including but not limited to: packets dropped due to lack of buffer
3053
+ # space, processing errors, explicit or implicit policies and packet
3054
+ # filters.
3055
+ # @rbs return: ::Integer
3056
+ # @return [Integer]
3057
+ # @see AttributeSets::Qstats::RxHwDrops
3058
+ def rx_hw_drops: () -> ::Integer
3059
+
3060
+ # Number of packets dropped due to transient lack of resources, such as
3061
+ # buffer space, host descriptors etc.
3062
+ # @rbs return: ::Integer
3063
+ # @return [Integer]
3064
+ # @see AttributeSets::Qstats::RxHwDropOverruns
3065
+ def rx_hw_drop_overruns: () -> ::Integer
3066
+
3067
+ # Number of packets that were marked as CHECKSUM_COMPLETE.
3068
+ # @rbs return: ::Integer
3069
+ # @return [Integer]
3070
+ # @see AttributeSets::Qstats::RxCsumComplete
3071
+ def rx_csum_complete: () -> ::Integer
3072
+
3073
+ # Number of packets that were marked as CHECKSUM_UNNECESSARY.
3074
+ # @rbs return: ::Integer
3075
+ # @return [Integer]
3076
+ # @see AttributeSets::Qstats::RxCsumUnnecessary
3077
+ def rx_csum_unnecessary: () -> ::Integer
3078
+
3079
+ # Number of packets that were not checksummed by device.
3080
+ # @rbs return: ::Integer
3081
+ # @return [Integer]
3082
+ # @see AttributeSets::Qstats::RxCsumNone
3083
+ def rx_csum_none: () -> ::Integer
3084
+
3085
+ # Number of packets with bad checksum. The packets are not discarded,
3086
+ # but still delivered to the stack.
3087
+ # @rbs return: ::Integer
3088
+ # @return [Integer]
3089
+ # @see AttributeSets::Qstats::RxCsumBad
3090
+ def rx_csum_bad: () -> ::Integer
3091
+
3092
+ # Number of packets that were coalesced from smaller packets by the
3093
+ # device. Counts only packets coalesced with the HW-GRO netdevice
3094
+ # feature, LRO-coalesced packets are not counted.
3095
+ # @rbs return: ::Integer
3096
+ # @return [Integer]
3097
+ # @see AttributeSets::Qstats::RxHwGroPackets
3098
+ def rx_hw_gro_packets: () -> ::Integer
3099
+
3100
+ # See `rx-hw-gro-packets`.
3101
+ # @rbs return: ::Integer
3102
+ # @return [Integer]
3103
+ # @see AttributeSets::Qstats::RxHwGroBytes
3104
+ def rx_hw_gro_bytes: () -> ::Integer
3105
+
3106
+ # Number of packets that were coalesced to bigger packetss with the
3107
+ # HW-GRO netdevice feature. LRO-coalesced packets are not counted.
3108
+ # @rbs return: ::Integer
3109
+ # @return [Integer]
3110
+ # @see AttributeSets::Qstats::RxHwGroWirePackets
3111
+ def rx_hw_gro_wire_packets: () -> ::Integer
3112
+
3113
+ # See `rx-hw-gro-wire-packets`.
3114
+ # @rbs return: ::Integer
3115
+ # @return [Integer]
3116
+ # @see AttributeSets::Qstats::RxHwGroWireBytes
3117
+ def rx_hw_gro_wire_bytes: () -> ::Integer
3118
+
3119
+ # Number of the packets dropped by the device due to the received
3120
+ # packets bitrate exceeding the device rate limit.
3121
+ # @rbs return: ::Integer
3122
+ # @return [Integer]
3123
+ # @see AttributeSets::Qstats::RxHwDropRatelimits
3124
+ def rx_hw_drop_ratelimits: () -> ::Integer
3125
+
3126
+ # Number of packets that arrived at the device but never left it,
3127
+ # encompassing packets dropped for reasons such as processing errors, as
3128
+ # well as those affected by explicitly defined policies and packet
3129
+ # filtering criteria.
3130
+ # @rbs return: ::Integer
3131
+ # @return [Integer]
3132
+ # @see AttributeSets::Qstats::TxHwDrops
3133
+ def tx_hw_drops: () -> ::Integer
3134
+
3135
+ # Number of packets dropped because they were invalid or malformed.
3136
+ # @rbs return: ::Integer
3137
+ # @return [Integer]
3138
+ # @see AttributeSets::Qstats::TxHwDropErrors
3139
+ def tx_hw_drop_errors: () -> ::Integer
3140
+
3141
+ # Number of packets that did not require the device to calculate the
3142
+ # checksum.
3143
+ # @rbs return: ::Integer
3144
+ # @return [Integer]
3145
+ # @see AttributeSets::Qstats::TxCsumNone
3146
+ def tx_csum_none: () -> ::Integer
3147
+
3148
+ # Number of packets that required the device to calculate the checksum.
3149
+ # This counter includes the number of GSO wire packets for which device
3150
+ # calculated the L4 checksum.
3151
+ # @rbs return: ::Integer
3152
+ # @return [Integer]
3153
+ # @see AttributeSets::Qstats::TxNeedsCsum
3154
+ def tx_needs_csum: () -> ::Integer
3155
+
3156
+ # Number of packets that necessitated segmentation into smaller packets
3157
+ # by the device.
3158
+ # @rbs return: ::Integer
3159
+ # @return [Integer]
3160
+ # @see AttributeSets::Qstats::TxHwGsoPackets
3161
+ def tx_hw_gso_packets: () -> ::Integer
3162
+
3163
+ # See `tx-hw-gso-packets`.
3164
+ # @rbs return: ::Integer
3165
+ # @return [Integer]
3166
+ # @see AttributeSets::Qstats::TxHwGsoBytes
3167
+ def tx_hw_gso_bytes: () -> ::Integer
3168
+
3169
+ # Number of wire-sized packets generated by processing
3170
+ # `tx-hw-gso-packets`
3171
+ # @rbs return: ::Integer
3172
+ # @return [Integer]
3173
+ # @see AttributeSets::Qstats::TxHwGsoWirePackets
3174
+ def tx_hw_gso_wire_packets: () -> ::Integer
3175
+
3176
+ # See `tx-hw-gso-wire-packets`.
3177
+ # @rbs return: ::Integer
3178
+ # @return [Integer]
3179
+ # @see AttributeSets::Qstats::TxHwGsoWireBytes
3180
+ def tx_hw_gso_wire_bytes: () -> ::Integer
3181
+
3182
+ # Number of the packets dropped by the device due to the transmit
3183
+ # packets bitrate exceeding the device rate limit.
3184
+ # @rbs return: ::Integer
3185
+ # @return [Integer]
3186
+ # @see AttributeSets::Qstats::TxHwDropRatelimits
3187
+ def tx_hw_drop_ratelimits: () -> ::Integer
3188
+
3189
+ # Number of times driver paused accepting new tx packets
3190
+ # from the stack to this queue, because the queue was full.
3191
+ # Note that if BQL is supported and enabled on the device
3192
+ # the networking stack will avoid queuing a lot of data at once.
3193
+ # @rbs return: ::Integer
3194
+ # @return [Integer]
3195
+ # @see AttributeSets::Qstats::TxStop
3196
+ def tx_stop: () -> ::Integer
3197
+
3198
+ # Number of times driver re-started accepting send
3199
+ # requests to this queue from the stack.
3200
+ # @rbs return: ::Integer
3201
+ # @return [Integer]
3202
+ # @see AttributeSets::Qstats::TxWake
3203
+ def tx_wake: () -> ::Integer
3204
+ end
3205
+
3206
+ # Bind dmabuf to netdev
3207
+ #
3208
+ # Requires CAP_NET_ADMIN in the user namespace owning the network namespace.
3209
+ class DoBindRxRequest < ::Nl::Genl::Message
3210
+ TYPE: ::Integer
3211
+
3212
+ FIXED_HEADER: untyped
3213
+
3214
+ ATTRIBUTE_SET: untyped
3215
+
3216
+ ATTRIBUTES: untyped
3217
+
3218
+ # netdev ifindex to bind the dmabuf to.
3219
+ # @rbs return: ::Integer
3220
+ # @return [Integer]
3221
+ # @see AttributeSets::Dmabuf::Ifindex
3222
+ def ifindex: () -> ::Integer
3223
+
3224
+ # receive queues to bind the dmabuf to.
3225
+ # @rbs return: ::Array[AttributeSets::QueueId]
3226
+ # @return [Array<AttributeSets::QueueId>]
3227
+ # @see AttributeSets::Dmabuf::Queues
3228
+ def queues: () -> ::Array[AttributeSets::QueueId]
3229
+
3230
+ # dmabuf file descriptor to bind.
3231
+ # @rbs return: ::Integer
3232
+ # @return [Integer]
3233
+ # @see AttributeSets::Dmabuf::Fd
3234
+ def fd: () -> ::Integer
3235
+ end
3236
+
3237
+ # Bind dmabuf to netdev
3238
+ #
3239
+ # Requires CAP_NET_ADMIN in the user namespace owning the network namespace.
3240
+ class DoBindRxReply < ::Nl::Genl::Message
3241
+ TYPE: ::Integer
3242
+
3243
+ FIXED_HEADER: untyped
3244
+
3245
+ ATTRIBUTE_SET: untyped
3246
+
3247
+ ATTRIBUTES: untyped
3248
+
3249
+ # id of the dmabuf binding
3250
+ # @rbs return: ::Integer
3251
+ # @return [Integer]
3252
+ # @see AttributeSets::Dmabuf::Id
3253
+ def id: () -> ::Integer
3254
+ end
3255
+
3256
+ # Set configurable NAPI instance settings.
3257
+ #
3258
+ # Requires CAP_NET_ADMIN in the initial user namespace.
3259
+ class DoNapiSetRequest < ::Nl::Genl::Message
3260
+ TYPE: ::Integer
3261
+
3262
+ FIXED_HEADER: untyped
3263
+
3264
+ ATTRIBUTE_SET: untyped
3265
+
3266
+ ATTRIBUTES: untyped
3267
+
3268
+ # ID of the NAPI instance.
3269
+ # @rbs return: ::Integer
3270
+ # @return [Integer]
3271
+ # @see AttributeSets::Napi::Id
3272
+ def id: () -> ::Integer
3273
+
3274
+ # The number of consecutive empty polls before IRQ deferral ends and hardware IRQs are re-enabled.
3275
+ # @rbs return: ::Integer
3276
+ # @return [Integer]
3277
+ # @see AttributeSets::Napi::DeferHardIrqs
3278
+ def defer_hard_irqs: () -> ::Integer
3279
+
3280
+ # The timeout, in nanoseconds, of when to trigger the NAPI watchdog timer which schedules NAPI processing. Additionally, a non-zero value will also prevent GRO from flushing recent super-frames at the end of a NAPI cycle. This may add receive latency in exchange for reducing the number of frames processed by the network stack.
3281
+ # @rbs return: ::Integer
3282
+ # @return [Integer]
3283
+ # @see AttributeSets::Napi::GroFlushTimeout
3284
+ def gro_flush_timeout: () -> ::Integer
3285
+
3286
+ # The timeout, in nanoseconds, of how long to suspend irq processing, if event polling finds events
3287
+ # @rbs return: ::Integer
3288
+ # @return [Integer]
3289
+ # @see AttributeSets::Napi::IrqSuspendTimeout
3290
+ def irq_suspend_timeout: () -> ::Integer
3291
+
3292
+ # Whether the NAPI is configured to operate in threaded polling mode. If this is set to enabled then the NAPI context operates in threaded polling mode. If this is set to busy-poll, then the threaded polling mode also busy polls.
3293
+ #
3294
+ # Known enum values are defined in {Enums::NapiThreaded}.
3295
+ # @rbs return: ::Integer
3296
+ # @return [Integer]
3297
+ # @see AttributeSets::Napi::Threaded
3298
+ def threaded: () -> ::Integer
3299
+ end
3300
+
3301
+ # Bind dmabuf to netdev for TX
3302
+ class DoBindTxRequest < ::Nl::Genl::Message
3303
+ TYPE: ::Integer
3304
+
3305
+ FIXED_HEADER: untyped
3306
+
3307
+ ATTRIBUTE_SET: untyped
3308
+
3309
+ ATTRIBUTES: untyped
3310
+
3311
+ # netdev ifindex to bind the dmabuf to.
3312
+ # @rbs return: ::Integer
3313
+ # @return [Integer]
3314
+ # @see AttributeSets::Dmabuf::Ifindex
3315
+ def ifindex: () -> ::Integer
3316
+
3317
+ # dmabuf file descriptor to bind.
3318
+ # @rbs return: ::Integer
3319
+ # @return [Integer]
3320
+ # @see AttributeSets::Dmabuf::Fd
3321
+ def fd: () -> ::Integer
3322
+ end
3323
+
3324
+ # Bind dmabuf to netdev for TX
3325
+ class DoBindTxReply < ::Nl::Genl::Message
3326
+ TYPE: ::Integer
3327
+
3328
+ FIXED_HEADER: untyped
3329
+
3330
+ ATTRIBUTE_SET: untyped
3331
+
3332
+ ATTRIBUTES: untyped
3333
+
3334
+ # id of the dmabuf binding
3335
+ # @rbs return: ::Integer
3336
+ # @return [Integer]
3337
+ # @see AttributeSets::Dmabuf::Id
3338
+ def id: () -> ::Integer
3339
+ end
3340
+
3341
+ # Create a new queue for the given netdevice. Whether this operation
3342
+ # is supported depends on the device and the driver.
3343
+ #
3344
+ #
3345
+ # Requires CAP_NET_ADMIN in the initial user namespace.
3346
+ class DoQueueCreateRequest < ::Nl::Genl::Message
3347
+ TYPE: ::Integer
3348
+
3349
+ FIXED_HEADER: untyped
3350
+
3351
+ ATTRIBUTE_SET: untyped
3352
+
3353
+ ATTRIBUTES: untyped
3354
+
3355
+ # ifindex of the netdevice to which the queue belongs.
3356
+ # @rbs return: ::Integer
3357
+ # @return [Integer]
3358
+ # @see AttributeSets::Queue::Ifindex
3359
+ def ifindex: () -> ::Integer
3360
+
3361
+ # Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
3362
+ #
3363
+ # Known enum values are defined in {Enums::QueueType}.
3364
+ # @rbs return: ::Integer
3365
+ # @return [Integer]
3366
+ # @see AttributeSets::Queue::Type
3367
+ def type: () -> ::Integer
3368
+
3369
+ # A queue from a virtual device can have a lease which refers to
3370
+ # another queue from a physical device. This is useful for memory
3371
+ # providers and AF_XDP operations which take an ifindex and queue id
3372
+ # to allow applications to bind against virtual devices in containers.
3373
+ # @rbs return: AttributeSets::Lease
3374
+ # @return [AttributeSets::Lease]
3375
+ # @see AttributeSets::Queue::Lease
3376
+ def lease: () -> AttributeSets::Lease
3377
+ end
3378
+
3379
+ # Create a new queue for the given netdevice. Whether this operation
3380
+ # is supported depends on the device and the driver.
3381
+ #
3382
+ #
3383
+ # Requires CAP_NET_ADMIN in the initial user namespace.
3384
+ class DoQueueCreateReply < ::Nl::Genl::Message
3385
+ TYPE: ::Integer
3386
+
3387
+ FIXED_HEADER: untyped
3388
+
3389
+ ATTRIBUTE_SET: untyped
3390
+
3391
+ ATTRIBUTES: untyped
3392
+
3393
+ # Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
3394
+ # @rbs return: ::Integer
3395
+ # @return [Integer]
3396
+ # @see AttributeSets::Queue::Id
3397
+ def id: () -> ::Integer
3398
+ end
3399
+ end
3400
+
3401
+ module Notifications
3402
+ # Notification about device appearing.
3403
+ #
3404
+ # Multicast group: `mgmt`.
3405
+ class DevAddNtf < ::Nl::Genl::Message
3406
+ TYPE: ::Integer
3407
+
3408
+ FIXED_HEADER: untyped
3409
+
3410
+ ATTRIBUTE_SET: untyped
3411
+
3412
+ ATTRIBUTES: untyped
3413
+
3414
+ # netdev ifindex
3415
+ # @rbs return: ::Integer
3416
+ # @return [Integer]
3417
+ # @see AttributeSets::Dev::Ifindex
3418
+ def ifindex: () -> ::Integer
3419
+
3420
+ # Bitmask of enabled xdp-features.
3421
+ #
3422
+ # Known flags are defined in {Flags::XdpAct}.
3423
+ # @rbs return: ::Integer
3424
+ # @return [Integer]
3425
+ # @see AttributeSets::Dev::XdpFeatures
3426
+ def xdp_features: () -> ::Integer
3427
+
3428
+ # max fragment count supported by ZC driver
3429
+ # @rbs return: ::Integer
3430
+ # @return [Integer]
3431
+ # @see AttributeSets::Dev::XdpZcMaxSegs
3432
+ def xdp_zc_max_segs: () -> ::Integer
3433
+
3434
+ # Bitmask of supported XDP receive metadata features. See {https://docs.kernel.org/networking/xdp-rx-metadata.html Documentation/networking/xdp-rx-metadata.rst} for more details.
3435
+ #
3436
+ # Known flags are defined in {Flags::XdpRxMetadata}.
3437
+ # @rbs return: ::Integer
3438
+ # @return [Integer]
3439
+ # @see AttributeSets::Dev::XdpRxMetadataFeatures
3440
+ def xdp_rx_metadata_features: () -> ::Integer
3441
+
3442
+ # Bitmask of enabled AF_XDP features.
3443
+ #
3444
+ # Known flags are defined in {Flags::XskFlags}.
3445
+ # @rbs return: ::Integer
3446
+ # @return [Integer]
3447
+ # @see AttributeSets::Dev::XskFeatures
3448
+ def xsk_features: () -> ::Integer
3449
+ end
3450
+
3451
+ # Notification about device disappearing.
3452
+ #
3453
+ # Multicast group: `mgmt`.
3454
+ class DevDelNtf < ::Nl::Genl::Message
3455
+ TYPE: ::Integer
3456
+
3457
+ FIXED_HEADER: untyped
3458
+
3459
+ ATTRIBUTE_SET: untyped
3460
+
3461
+ ATTRIBUTES: untyped
3462
+
3463
+ # netdev ifindex
3464
+ # @rbs return: ::Integer
3465
+ # @return [Integer]
3466
+ # @see AttributeSets::Dev::Ifindex
3467
+ def ifindex: () -> ::Integer
3468
+
3469
+ # Bitmask of enabled xdp-features.
3470
+ #
3471
+ # Known flags are defined in {Flags::XdpAct}.
3472
+ # @rbs return: ::Integer
3473
+ # @return [Integer]
3474
+ # @see AttributeSets::Dev::XdpFeatures
3475
+ def xdp_features: () -> ::Integer
3476
+
3477
+ # max fragment count supported by ZC driver
3478
+ # @rbs return: ::Integer
3479
+ # @return [Integer]
3480
+ # @see AttributeSets::Dev::XdpZcMaxSegs
3481
+ def xdp_zc_max_segs: () -> ::Integer
3482
+
3483
+ # Bitmask of supported XDP receive metadata features. See {https://docs.kernel.org/networking/xdp-rx-metadata.html Documentation/networking/xdp-rx-metadata.rst} for more details.
3484
+ #
3485
+ # Known flags are defined in {Flags::XdpRxMetadata}.
3486
+ # @rbs return: ::Integer
3487
+ # @return [Integer]
3488
+ # @see AttributeSets::Dev::XdpRxMetadataFeatures
3489
+ def xdp_rx_metadata_features: () -> ::Integer
3490
+
3491
+ # Bitmask of enabled AF_XDP features.
3492
+ #
3493
+ # Known flags are defined in {Flags::XskFlags}.
3494
+ # @rbs return: ::Integer
3495
+ # @return [Integer]
3496
+ # @see AttributeSets::Dev::XskFeatures
3497
+ def xsk_features: () -> ::Integer
3498
+ end
3499
+
3500
+ # Notification about device configuration being changed.
3501
+ #
3502
+ # Multicast group: `mgmt`.
3503
+ class DevChangeNtf < ::Nl::Genl::Message
3504
+ TYPE: ::Integer
3505
+
3506
+ FIXED_HEADER: untyped
3507
+
3508
+ ATTRIBUTE_SET: untyped
3509
+
3510
+ ATTRIBUTES: untyped
3511
+
3512
+ # netdev ifindex
3513
+ # @rbs return: ::Integer
3514
+ # @return [Integer]
3515
+ # @see AttributeSets::Dev::Ifindex
3516
+ def ifindex: () -> ::Integer
3517
+
3518
+ # Bitmask of enabled xdp-features.
3519
+ #
3520
+ # Known flags are defined in {Flags::XdpAct}.
3521
+ # @rbs return: ::Integer
3522
+ # @return [Integer]
3523
+ # @see AttributeSets::Dev::XdpFeatures
3524
+ def xdp_features: () -> ::Integer
3525
+
3526
+ # max fragment count supported by ZC driver
3527
+ # @rbs return: ::Integer
3528
+ # @return [Integer]
3529
+ # @see AttributeSets::Dev::XdpZcMaxSegs
3530
+ def xdp_zc_max_segs: () -> ::Integer
3531
+
3532
+ # Bitmask of supported XDP receive metadata features. See {https://docs.kernel.org/networking/xdp-rx-metadata.html Documentation/networking/xdp-rx-metadata.rst} for more details.
3533
+ #
3534
+ # Known flags are defined in {Flags::XdpRxMetadata}.
3535
+ # @rbs return: ::Integer
3536
+ # @return [Integer]
3537
+ # @see AttributeSets::Dev::XdpRxMetadataFeatures
3538
+ def xdp_rx_metadata_features: () -> ::Integer
3539
+
3540
+ # Bitmask of enabled AF_XDP features.
3541
+ #
3542
+ # Known flags are defined in {Flags::XskFlags}.
3543
+ # @rbs return: ::Integer
3544
+ # @return [Integer]
3545
+ # @see AttributeSets::Dev::XskFeatures
3546
+ def xsk_features: () -> ::Integer
3547
+ end
3548
+
3549
+ # Notification about page pool appearing.
3550
+ #
3551
+ # Multicast group: `page-pool`.
3552
+ class PagePoolAddNtf < ::Nl::Genl::Message
3553
+ TYPE: ::Integer
3554
+
3555
+ FIXED_HEADER: untyped
3556
+
3557
+ ATTRIBUTE_SET: untyped
3558
+
3559
+ ATTRIBUTES: untyped
3560
+
3561
+ # Unique ID of a Page Pool instance.
3562
+ # @rbs return: ::Integer
3563
+ # @return [Integer]
3564
+ # @see AttributeSets::PagePool::Id
3565
+ def id: () -> ::Integer
3566
+
3567
+ # ifindex of the netdev to which the pool belongs.
3568
+ # May not be reported if the page pool was allocated for a netdev
3569
+ # which got destroyed already (page pools may outlast their netdevs
3570
+ # because they wait for all memory to be returned).
3571
+ # @rbs return: ::Integer
3572
+ # @return [Integer]
3573
+ # @see AttributeSets::PagePool::Ifindex
3574
+ def ifindex: () -> ::Integer
3575
+
3576
+ # Id of NAPI using this Page Pool instance.
3577
+ # @rbs return: ::Integer
3578
+ # @return [Integer]
3579
+ # @see AttributeSets::PagePool::NapiId
3580
+ def napi_id: () -> ::Integer
3581
+
3582
+ # Number of outstanding references to this page pool (allocated
3583
+ # but yet to be freed pages). Allocated pages may be held in
3584
+ # socket receive queues, driver receive ring, page pool recycling
3585
+ # ring, the page pool cache, etc.
3586
+ # @rbs return: ::Integer
3587
+ # @return [Integer]
3588
+ # @see AttributeSets::PagePool::Inflight
3589
+ def inflight: () -> ::Integer
3590
+
3591
+ # Amount of memory held by inflight pages.
3592
+ # @rbs return: ::Integer
3593
+ # @return [Integer]
3594
+ # @see AttributeSets::PagePool::InflightMem
3595
+ def inflight_mem: () -> ::Integer
3596
+
3597
+ # Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
3598
+ # the driver. Once detached Page Pool can no longer be used to
3599
+ # allocate memory.
3600
+ # Page Pools wait for all the memory allocated from them to be freed
3601
+ # before truly disappearing. "Detached" Page Pools cannot be
3602
+ # "re-attached", they are just waiting to disappear.
3603
+ # Attribute is absent if Page Pool has not been detached, and
3604
+ # can still be used to allocate new memory.
3605
+ # @rbs return: ::Integer
3606
+ # @return [Integer]
3607
+ # @see AttributeSets::PagePool::DetachTime
3608
+ def detach_time: () -> ::Integer
3609
+
3610
+ # ID of the dmabuf this page-pool is attached to.
3611
+ # @rbs return: ::Integer
3612
+ # @return [Integer]
3613
+ # @see AttributeSets::PagePool::Dmabuf
3614
+ def dmabuf: () -> ::Integer
3615
+
3616
+ # io-uring memory provider information.
3617
+ # @rbs return: AttributeSets::IoUringProviderInfo
3618
+ # @return [AttributeSets::IoUringProviderInfo]
3619
+ # @see AttributeSets::PagePool::IoUring
3620
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
3621
+ end
3622
+
3623
+ # Notification about page pool disappearing.
3624
+ #
3625
+ # Multicast group: `page-pool`.
3626
+ class PagePoolDelNtf < ::Nl::Genl::Message
3627
+ TYPE: ::Integer
3628
+
3629
+ FIXED_HEADER: untyped
3630
+
3631
+ ATTRIBUTE_SET: untyped
3632
+
3633
+ ATTRIBUTES: untyped
3634
+
3635
+ # Unique ID of a Page Pool instance.
3636
+ # @rbs return: ::Integer
3637
+ # @return [Integer]
3638
+ # @see AttributeSets::PagePool::Id
3639
+ def id: () -> ::Integer
3640
+
3641
+ # ifindex of the netdev to which the pool belongs.
3642
+ # May not be reported if the page pool was allocated for a netdev
3643
+ # which got destroyed already (page pools may outlast their netdevs
3644
+ # because they wait for all memory to be returned).
3645
+ # @rbs return: ::Integer
3646
+ # @return [Integer]
3647
+ # @see AttributeSets::PagePool::Ifindex
3648
+ def ifindex: () -> ::Integer
3649
+
3650
+ # Id of NAPI using this Page Pool instance.
3651
+ # @rbs return: ::Integer
3652
+ # @return [Integer]
3653
+ # @see AttributeSets::PagePool::NapiId
3654
+ def napi_id: () -> ::Integer
3655
+
3656
+ # Number of outstanding references to this page pool (allocated
3657
+ # but yet to be freed pages). Allocated pages may be held in
3658
+ # socket receive queues, driver receive ring, page pool recycling
3659
+ # ring, the page pool cache, etc.
3660
+ # @rbs return: ::Integer
3661
+ # @return [Integer]
3662
+ # @see AttributeSets::PagePool::Inflight
3663
+ def inflight: () -> ::Integer
3664
+
3665
+ # Amount of memory held by inflight pages.
3666
+ # @rbs return: ::Integer
3667
+ # @return [Integer]
3668
+ # @see AttributeSets::PagePool::InflightMem
3669
+ def inflight_mem: () -> ::Integer
3670
+
3671
+ # Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
3672
+ # the driver. Once detached Page Pool can no longer be used to
3673
+ # allocate memory.
3674
+ # Page Pools wait for all the memory allocated from them to be freed
3675
+ # before truly disappearing. "Detached" Page Pools cannot be
3676
+ # "re-attached", they are just waiting to disappear.
3677
+ # Attribute is absent if Page Pool has not been detached, and
3678
+ # can still be used to allocate new memory.
3679
+ # @rbs return: ::Integer
3680
+ # @return [Integer]
3681
+ # @see AttributeSets::PagePool::DetachTime
3682
+ def detach_time: () -> ::Integer
3683
+
3684
+ # ID of the dmabuf this page-pool is attached to.
3685
+ # @rbs return: ::Integer
3686
+ # @return [Integer]
3687
+ # @see AttributeSets::PagePool::Dmabuf
3688
+ def dmabuf: () -> ::Integer
3689
+
3690
+ # io-uring memory provider information.
3691
+ # @rbs return: AttributeSets::IoUringProviderInfo
3692
+ # @return [AttributeSets::IoUringProviderInfo]
3693
+ # @see AttributeSets::PagePool::IoUring
3694
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
3695
+ end
3696
+
3697
+ # Notification about page pool configuration being changed.
3698
+ #
3699
+ # Multicast group: `page-pool`.
3700
+ class PagePoolChangeNtf < ::Nl::Genl::Message
3701
+ TYPE: ::Integer
3702
+
3703
+ FIXED_HEADER: untyped
3704
+
3705
+ ATTRIBUTE_SET: untyped
3706
+
3707
+ ATTRIBUTES: untyped
3708
+
3709
+ # Unique ID of a Page Pool instance.
3710
+ # @rbs return: ::Integer
3711
+ # @return [Integer]
3712
+ # @see AttributeSets::PagePool::Id
3713
+ def id: () -> ::Integer
3714
+
3715
+ # ifindex of the netdev to which the pool belongs.
3716
+ # May not be reported if the page pool was allocated for a netdev
3717
+ # which got destroyed already (page pools may outlast their netdevs
3718
+ # because they wait for all memory to be returned).
3719
+ # @rbs return: ::Integer
3720
+ # @return [Integer]
3721
+ # @see AttributeSets::PagePool::Ifindex
3722
+ def ifindex: () -> ::Integer
3723
+
3724
+ # Id of NAPI using this Page Pool instance.
3725
+ # @rbs return: ::Integer
3726
+ # @return [Integer]
3727
+ # @see AttributeSets::PagePool::NapiId
3728
+ def napi_id: () -> ::Integer
3729
+
3730
+ # Number of outstanding references to this page pool (allocated
3731
+ # but yet to be freed pages). Allocated pages may be held in
3732
+ # socket receive queues, driver receive ring, page pool recycling
3733
+ # ring, the page pool cache, etc.
3734
+ # @rbs return: ::Integer
3735
+ # @return [Integer]
3736
+ # @see AttributeSets::PagePool::Inflight
3737
+ def inflight: () -> ::Integer
3738
+
3739
+ # Amount of memory held by inflight pages.
3740
+ # @rbs return: ::Integer
3741
+ # @return [Integer]
3742
+ # @see AttributeSets::PagePool::InflightMem
3743
+ def inflight_mem: () -> ::Integer
3744
+
3745
+ # Seconds in CLOCK_BOOTTIME of when Page Pool was detached by
3746
+ # the driver. Once detached Page Pool can no longer be used to
3747
+ # allocate memory.
3748
+ # Page Pools wait for all the memory allocated from them to be freed
3749
+ # before truly disappearing. "Detached" Page Pools cannot be
3750
+ # "re-attached", they are just waiting to disappear.
3751
+ # Attribute is absent if Page Pool has not been detached, and
3752
+ # can still be used to allocate new memory.
3753
+ # @rbs return: ::Integer
3754
+ # @return [Integer]
3755
+ # @see AttributeSets::PagePool::DetachTime
3756
+ def detach_time: () -> ::Integer
3757
+
3758
+ # ID of the dmabuf this page-pool is attached to.
3759
+ # @rbs return: ::Integer
3760
+ # @return [Integer]
3761
+ # @see AttributeSets::PagePool::Dmabuf
3762
+ def dmabuf: () -> ::Integer
3763
+
3764
+ # io-uring memory provider information.
3765
+ # @rbs return: AttributeSets::IoUringProviderInfo
3766
+ # @return [AttributeSets::IoUringProviderInfo]
3767
+ # @see AttributeSets::PagePool::IoUring
3768
+ def io_uring: () -> AttributeSets::IoUringProviderInfo
3769
+ end
3770
+ end
3771
+
3772
+ # @private
3773
+ NOTIFICATIONS: Hash[::Integer, ::Class]
3774
+
3775
+ # Get / dump information about a netdev.
3776
+ # @rbs (?ifindex: ::Integer) -> Messages::DoDevGetReply
3777
+ # @param [Hash] args
3778
+ # @option args [Integer] ifindex netdev ifindex
3779
+ # @return [Messages::DoDevGetReply]
3780
+ # @see Messages::DoDevGetRequest
3781
+ def do_dev_get: (?ifindex: ::Integer) -> Messages::DoDevGetReply
3782
+
3783
+ # Get / dump information about a netdev.
3784
+ # @rbs () -> Array[Messages::DumpDevGetReply]
3785
+ # | () { (Messages::DumpDevGetReply) -> void } -> void
3786
+ # @overload dump_dev_get(**args)
3787
+ # Returns an array when no block is given.
3788
+ # @param [Hash] args
3789
+ # @return [Array<Messages::DumpDevGetReply>]
3790
+ # @overload dump_dev_get(**args, &block)
3791
+ # Yields each reply when a block is given.
3792
+ # @param [Hash] args
3793
+ # @yieldparam [Messages::DumpDevGetReply] reply
3794
+ # @return [void]
3795
+ # @see Messages::DumpDevGetRequest
3796
+ def dump_dev_get: () -> Array[Messages::DumpDevGetReply]
3797
+ | () { (Messages::DumpDevGetReply) -> void } -> void
3798
+
3799
+ # Get / dump information about Page Pools.
3800
+ # Only Page Pools associated by the driver with a net_device
3801
+ # can be listed. ifindex will not be reported if the net_device
3802
+ # no longer exists.
3803
+ # @rbs (?id: ::Integer) -> Messages::DoPagePoolGetReply
3804
+ # @param [Hash] args
3805
+ # @option args [Integer] id Unique ID of a Page Pool instance.
3806
+ # @return [Messages::DoPagePoolGetReply]
3807
+ # @see Messages::DoPagePoolGetRequest
3808
+ def do_page_pool_get: (?id: ::Integer) -> Messages::DoPagePoolGetReply
3809
+
3810
+ # Get / dump information about Page Pools.
3811
+ # Only Page Pools associated by the driver with a net_device
3812
+ # can be listed. ifindex will not be reported if the net_device
3813
+ # no longer exists.
3814
+ # @rbs (?ifindex: ::Integer) -> Array[Messages::DumpPagePoolGetReply]
3815
+ # | (?ifindex: ::Integer) { (Messages::DumpPagePoolGetReply) -> void } -> void
3816
+ # @overload dump_page_pool_get(**args)
3817
+ # Returns an array when no block is given.
3818
+ # @param [Hash] args
3819
+ # @option args [Integer] ifindex ifindex of the netdev to which the pool belongs.
3820
+ # May not be reported if the page pool was allocated for a netdev
3821
+ # which got destroyed already (page pools may outlast their netdevs
3822
+ # because they wait for all memory to be returned).
3823
+ # @return [Array<Messages::DumpPagePoolGetReply>]
3824
+ # @overload dump_page_pool_get(**args, &block)
3825
+ # Yields each reply when a block is given.
3826
+ # @param [Hash] args
3827
+ # @option args [Integer] ifindex ifindex of the netdev to which the pool belongs.
3828
+ # May not be reported if the page pool was allocated for a netdev
3829
+ # which got destroyed already (page pools may outlast their netdevs
3830
+ # because they wait for all memory to be returned).
3831
+ # @yieldparam [Messages::DumpPagePoolGetReply] reply
3832
+ # @return [void]
3833
+ # @see Messages::DumpPagePoolGetRequest
3834
+ def dump_page_pool_get: (?ifindex: ::Integer) -> Array[Messages::DumpPagePoolGetReply]
3835
+ | (?ifindex: ::Integer) { (Messages::DumpPagePoolGetReply) -> void } -> void
3836
+
3837
+ # Get page pool statistics.
3838
+ # @rbs (?info: (AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped])) -> Messages::DoPagePoolStatsGetReply
3839
+ # @param [Hash] args
3840
+ # @option args [AttributeSets::PagePoolInfo, Hash<Symbol, Object>] info Page pool identifying information.
3841
+ # @return [Messages::DoPagePoolStatsGetReply]
3842
+ # @see Messages::DoPagePoolStatsGetRequest
3843
+ def do_page_pool_stats_get: (?info: AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped]) -> Messages::DoPagePoolStatsGetReply
3844
+
3845
+ # Get page pool statistics.
3846
+ # @rbs (?info: (AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped])) -> Array[Messages::DumpPagePoolStatsGetReply]
3847
+ # | (?info: (AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped])) { (Messages::DumpPagePoolStatsGetReply) -> void } -> void
3848
+ # @overload dump_page_pool_stats_get(**args)
3849
+ # Returns an array when no block is given.
3850
+ # @param [Hash] args
3851
+ # @option args [AttributeSets::PagePoolInfo, Hash<Symbol, Object>] info Page pool identifying information.
3852
+ # @return [Array<Messages::DumpPagePoolStatsGetReply>]
3853
+ # @overload dump_page_pool_stats_get(**args, &block)
3854
+ # Yields each reply when a block is given.
3855
+ # @param [Hash] args
3856
+ # @option args [AttributeSets::PagePoolInfo, Hash<Symbol, Object>] info Page pool identifying information.
3857
+ # @yieldparam [Messages::DumpPagePoolStatsGetReply] reply
3858
+ # @return [void]
3859
+ # @see Messages::DumpPagePoolStatsGetRequest
3860
+ def dump_page_pool_stats_get: (?info: AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped]) -> Array[Messages::DumpPagePoolStatsGetReply]
3861
+ | (?info: AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped]) { (Messages::DumpPagePoolStatsGetReply) -> void } -> void
3862
+
3863
+ # Get queue information from the kernel. Only configured queues will be reported (as opposed to all available hardware queues).
3864
+ # @rbs (?id: ::Integer, ?ifindex: ::Integer, ?type: ::Integer) -> Messages::DoQueueGetReply
3865
+ # @param [Hash] args
3866
+ # @option args [Integer] id Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
3867
+ # @option args [Integer] ifindex ifindex of the netdevice to which the queue belongs.
3868
+ # @option args [Integer] type Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
3869
+ #
3870
+ # Known enum values are defined in {Enums::QueueType}.
3871
+ # @return [Messages::DoQueueGetReply]
3872
+ # @see Messages::DoQueueGetRequest
3873
+ def do_queue_get: (?id: ::Integer, ?ifindex: ::Integer, ?type: ::Integer) -> Messages::DoQueueGetReply
3874
+
3875
+ # Get queue information from the kernel. Only configured queues will be reported (as opposed to all available hardware queues).
3876
+ # @rbs (?ifindex: ::Integer) -> Array[Messages::DumpQueueGetReply]
3877
+ # | (?ifindex: ::Integer) { (Messages::DumpQueueGetReply) -> void } -> void
3878
+ # @overload dump_queue_get(**args)
3879
+ # Returns an array when no block is given.
3880
+ # @param [Hash] args
3881
+ # @option args [Integer] ifindex ifindex of the netdevice to which the queue belongs.
3882
+ # @return [Array<Messages::DumpQueueGetReply>]
3883
+ # @overload dump_queue_get(**args, &block)
3884
+ # Yields each reply when a block is given.
3885
+ # @param [Hash] args
3886
+ # @option args [Integer] ifindex ifindex of the netdevice to which the queue belongs.
3887
+ # @yieldparam [Messages::DumpQueueGetReply] reply
3888
+ # @return [void]
3889
+ # @see Messages::DumpQueueGetRequest
3890
+ def dump_queue_get: (?ifindex: ::Integer) -> Array[Messages::DumpQueueGetReply]
3891
+ | (?ifindex: ::Integer) { (Messages::DumpQueueGetReply) -> void } -> void
3892
+
3893
+ # Get information about NAPI instances configured on the system.
3894
+ # @rbs (?id: ::Integer) -> Messages::DoNapiGetReply
3895
+ # @param [Hash] args
3896
+ # @option args [Integer] id ID of the NAPI instance.
3897
+ # @return [Messages::DoNapiGetReply]
3898
+ # @see Messages::DoNapiGetRequest
3899
+ def do_napi_get: (?id: ::Integer) -> Messages::DoNapiGetReply
3900
+
3901
+ # Get information about NAPI instances configured on the system.
3902
+ # @rbs (?ifindex: ::Integer) -> Array[Messages::DumpNapiGetReply]
3903
+ # | (?ifindex: ::Integer) { (Messages::DumpNapiGetReply) -> void } -> void
3904
+ # @overload dump_napi_get(**args)
3905
+ # Returns an array when no block is given.
3906
+ # @param [Hash] args
3907
+ # @option args [Integer] ifindex ifindex of the netdevice to which NAPI instance belongs.
3908
+ # @return [Array<Messages::DumpNapiGetReply>]
3909
+ # @overload dump_napi_get(**args, &block)
3910
+ # Yields each reply when a block is given.
3911
+ # @param [Hash] args
3912
+ # @option args [Integer] ifindex ifindex of the netdevice to which NAPI instance belongs.
3913
+ # @yieldparam [Messages::DumpNapiGetReply] reply
3914
+ # @return [void]
3915
+ # @see Messages::DumpNapiGetRequest
3916
+ def dump_napi_get: (?ifindex: ::Integer) -> Array[Messages::DumpNapiGetReply]
3917
+ | (?ifindex: ::Integer) { (Messages::DumpNapiGetReply) -> void } -> void
3918
+
3919
+ # Get / dump fine grained statistics. Which statistics are reported
3920
+ # depends on the device and the driver, and whether the driver stores
3921
+ # software counters per-queue.
3922
+ # @rbs (?ifindex: ::Integer, ?scope: ::Integer) -> Array[Messages::DumpQstatsGetReply]
3923
+ # | (?ifindex: ::Integer, ?scope: ::Integer) { (Messages::DumpQstatsGetReply) -> void } -> void
3924
+ # @overload dump_qstats_get(**args)
3925
+ # Returns an array when no block is given.
3926
+ # @param [Hash] args
3927
+ # @option args [Integer] ifindex ifindex of the netdevice to which stats belong.
3928
+ # @option args [Integer] scope What object type should be used to iterate over the stats.
3929
+ #
3930
+ #
3931
+ # Known flags are defined in {Flags::QstatsScope}.
3932
+ # @return [Array<Messages::DumpQstatsGetReply>]
3933
+ # @overload dump_qstats_get(**args, &block)
3934
+ # Yields each reply when a block is given.
3935
+ # @param [Hash] args
3936
+ # @option args [Integer] ifindex ifindex of the netdevice to which stats belong.
3937
+ # @option args [Integer] scope What object type should be used to iterate over the stats.
3938
+ #
3939
+ #
3940
+ # Known flags are defined in {Flags::QstatsScope}.
3941
+ # @yieldparam [Messages::DumpQstatsGetReply] reply
3942
+ # @return [void]
3943
+ # @see Messages::DumpQstatsGetRequest
3944
+ def dump_qstats_get: (?ifindex: ::Integer, ?scope: ::Integer) -> Array[Messages::DumpQstatsGetReply]
3945
+ | (?ifindex: ::Integer, ?scope: ::Integer) { (Messages::DumpQstatsGetReply) -> void } -> void
3946
+
3947
+ # Bind dmabuf to netdev
3948
+ #
3949
+ # Requires CAP_NET_ADMIN in the user namespace owning the network namespace.
3950
+ # @rbs (?ifindex: ::Integer, ?queues: ::Array[(AttributeSets::QueueId | ::Hash[::Symbol, untyped])], ?fd: ::Integer) -> Messages::DoBindRxReply
3951
+ # @param [Hash] args
3952
+ # @option args [Integer] ifindex netdev ifindex to bind the dmabuf to.
3953
+ # @option args [Array<AttributeSets::QueueId, Hash<Symbol, Object>>] queues receive queues to bind the dmabuf to.
3954
+ # @option args [Integer] fd dmabuf file descriptor to bind.
3955
+ # @return [Messages::DoBindRxReply]
3956
+ # @see Messages::DoBindRxRequest
3957
+ def do_bind_rx: (?ifindex: ::Integer, ?queues: ::Array[AttributeSets::QueueId | ::Hash[::Symbol, untyped]], ?fd: ::Integer) -> Messages::DoBindRxReply
3958
+
3959
+ # Set configurable NAPI instance settings.
3960
+ #
3961
+ # Requires CAP_NET_ADMIN in the initial user namespace.
3962
+ # @rbs (?id: ::Integer, ?defer_hard_irqs: ::Integer, ?gro_flush_timeout: ::Integer, ?irq_suspend_timeout: ::Integer, ?threaded: ::Integer) -> void
3963
+ # @param [Hash] args
3964
+ # @option args [Integer] id ID of the NAPI instance.
3965
+ # @option args [Integer] defer_hard_irqs The number of consecutive empty polls before IRQ deferral ends and hardware IRQs are re-enabled.
3966
+ # @option args [Integer] gro_flush_timeout The timeout, in nanoseconds, of when to trigger the NAPI watchdog timer which schedules NAPI processing. Additionally, a non-zero value will also prevent GRO from flushing recent super-frames at the end of a NAPI cycle. This may add receive latency in exchange for reducing the number of frames processed by the network stack.
3967
+ # @option args [Integer] irq_suspend_timeout The timeout, in nanoseconds, of how long to suspend irq processing, if event polling finds events
3968
+ # @option args [Integer] threaded Whether the NAPI is configured to operate in threaded polling mode. If this is set to enabled then the NAPI context operates in threaded polling mode. If this is set to busy-poll, then the threaded polling mode also busy polls.
3969
+ #
3970
+ # Known enum values are defined in {Enums::NapiThreaded}.
3971
+ # @return [void]
3972
+ # @see Messages::DoNapiSetRequest
3973
+ def do_napi_set: (?id: ::Integer, ?defer_hard_irqs: ::Integer, ?gro_flush_timeout: ::Integer, ?irq_suspend_timeout: ::Integer, ?threaded: ::Integer) -> void
3974
+
3975
+ # Bind dmabuf to netdev for TX
3976
+ # @rbs (?ifindex: ::Integer, ?fd: ::Integer) -> Messages::DoBindTxReply
3977
+ # @param [Hash] args
3978
+ # @option args [Integer] ifindex netdev ifindex to bind the dmabuf to.
3979
+ # @option args [Integer] fd dmabuf file descriptor to bind.
3980
+ # @return [Messages::DoBindTxReply]
3981
+ # @see Messages::DoBindTxRequest
3982
+ def do_bind_tx: (?ifindex: ::Integer, ?fd: ::Integer) -> Messages::DoBindTxReply
3983
+
3984
+ # Create a new queue for the given netdevice. Whether this operation
3985
+ # is supported depends on the device and the driver.
3986
+ #
3987
+ #
3988
+ # Requires CAP_NET_ADMIN in the initial user namespace.
3989
+ # @rbs (?ifindex: ::Integer, ?type: ::Integer, ?lease: (AttributeSets::Lease | ::Hash[::Symbol, untyped])) -> Messages::DoQueueCreateReply
3990
+ # @param [Hash] args
3991
+ # @option args [Integer] ifindex ifindex of the netdevice to which the queue belongs.
3992
+ # @option args [Integer] type Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
3993
+ #
3994
+ # Known enum values are defined in {Enums::QueueType}.
3995
+ # @option args [AttributeSets::Lease, Hash<Symbol, Object>] lease A queue from a virtual device can have a lease which refers to
3996
+ # another queue from a physical device. This is useful for memory
3997
+ # providers and AF_XDP operations which take an ifindex and queue id
3998
+ # to allow applications to bind against virtual devices in containers.
3999
+ # @return [Messages::DoQueueCreateReply]
4000
+ # @see Messages::DoQueueCreateRequest
4001
+ def do_queue_create: (?ifindex: ::Integer, ?type: ::Integer, ?lease: AttributeSets::Lease | ::Hash[::Symbol, untyped]) -> Messages::DoQueueCreateReply
4002
+
4003
+ class AsyncOperations
4004
+ # @private
4005
+ def initialize: () ?{ (?) -> untyped } -> untyped
4006
+
4007
+ # Get / dump information about a netdev.
4008
+ # @rbs (?ifindex: ::Integer) -> ::Nl::Async::Future[Messages::DoDevGetReply]
4009
+ # @param [Hash] args
4010
+ # @option args [Integer] ifindex netdev ifindex
4011
+ # @return [Nl::Async::Future<Messages::DoDevGetReply>]
4012
+ # @see Messages::DoDevGetRequest
4013
+ def do_dev_get: (?ifindex: ::Integer) -> ::Nl::Async::Future[Messages::DoDevGetReply]
4014
+
4015
+ # Get / dump information about a netdev.
4016
+ # @rbs () -> ::Nl::Async::Stream[Messages::DumpDevGetReply]
4017
+ # @param [Hash] args
4018
+ # @return [Nl::Async::Stream<Messages::DumpDevGetReply>]
4019
+ # @see Messages::DumpDevGetRequest
4020
+ def dump_dev_get: () -> ::Nl::Async::Stream[Messages::DumpDevGetReply]
4021
+
4022
+ # Get / dump information about Page Pools.
4023
+ # Only Page Pools associated by the driver with a net_device
4024
+ # can be listed. ifindex will not be reported if the net_device
4025
+ # no longer exists.
4026
+ # @rbs (?id: ::Integer) -> ::Nl::Async::Future[Messages::DoPagePoolGetReply]
4027
+ # @param [Hash] args
4028
+ # @option args [Integer] id Unique ID of a Page Pool instance.
4029
+ # @return [Nl::Async::Future<Messages::DoPagePoolGetReply>]
4030
+ # @see Messages::DoPagePoolGetRequest
4031
+ def do_page_pool_get: (?id: ::Integer) -> ::Nl::Async::Future[Messages::DoPagePoolGetReply]
4032
+
4033
+ # Get / dump information about Page Pools.
4034
+ # Only Page Pools associated by the driver with a net_device
4035
+ # can be listed. ifindex will not be reported if the net_device
4036
+ # no longer exists.
4037
+ # @rbs (?ifindex: ::Integer) -> ::Nl::Async::Stream[Messages::DumpPagePoolGetReply]
4038
+ # @param [Hash] args
4039
+ # @option args [Integer] ifindex ifindex of the netdev to which the pool belongs.
4040
+ # May not be reported if the page pool was allocated for a netdev
4041
+ # which got destroyed already (page pools may outlast their netdevs
4042
+ # because they wait for all memory to be returned).
4043
+ # @return [Nl::Async::Stream<Messages::DumpPagePoolGetReply>]
4044
+ # @see Messages::DumpPagePoolGetRequest
4045
+ def dump_page_pool_get: (?ifindex: ::Integer) -> ::Nl::Async::Stream[Messages::DumpPagePoolGetReply]
4046
+
4047
+ # Get page pool statistics.
4048
+ # @rbs (?info: (AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped])) -> ::Nl::Async::Future[Messages::DoPagePoolStatsGetReply]
4049
+ # @param [Hash] args
4050
+ # @option args [AttributeSets::PagePoolInfo, Hash<Symbol, Object>] info Page pool identifying information.
4051
+ # @return [Nl::Async::Future<Messages::DoPagePoolStatsGetReply>]
4052
+ # @see Messages::DoPagePoolStatsGetRequest
4053
+ def do_page_pool_stats_get: (?info: AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped]) -> ::Nl::Async::Future[Messages::DoPagePoolStatsGetReply]
4054
+
4055
+ # Get page pool statistics.
4056
+ # @rbs (?info: (AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped])) -> ::Nl::Async::Stream[Messages::DumpPagePoolStatsGetReply]
4057
+ # @param [Hash] args
4058
+ # @option args [AttributeSets::PagePoolInfo, Hash<Symbol, Object>] info Page pool identifying information.
4059
+ # @return [Nl::Async::Stream<Messages::DumpPagePoolStatsGetReply>]
4060
+ # @see Messages::DumpPagePoolStatsGetRequest
4061
+ def dump_page_pool_stats_get: (?info: AttributeSets::PagePoolInfo | ::Hash[::Symbol, untyped]) -> ::Nl::Async::Stream[Messages::DumpPagePoolStatsGetReply]
4062
+
4063
+ # Get queue information from the kernel. Only configured queues will be reported (as opposed to all available hardware queues).
4064
+ # @rbs (?id: ::Integer, ?ifindex: ::Integer, ?type: ::Integer) -> ::Nl::Async::Future[Messages::DoQueueGetReply]
4065
+ # @param [Hash] args
4066
+ # @option args [Integer] id Queue index; most queue types are indexed like a C array, with indexes starting at 0 and ending at queue count - 1. Queue indexes are scoped to an interface and queue type.
4067
+ # @option args [Integer] ifindex ifindex of the netdevice to which the queue belongs.
4068
+ # @option args [Integer] type Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
4069
+ #
4070
+ # Known enum values are defined in {Enums::QueueType}.
4071
+ # @return [Nl::Async::Future<Messages::DoQueueGetReply>]
4072
+ # @see Messages::DoQueueGetRequest
4073
+ def do_queue_get: (?id: ::Integer, ?ifindex: ::Integer, ?type: ::Integer) -> ::Nl::Async::Future[Messages::DoQueueGetReply]
4074
+
4075
+ # Get queue information from the kernel. Only configured queues will be reported (as opposed to all available hardware queues).
4076
+ # @rbs (?ifindex: ::Integer) -> ::Nl::Async::Stream[Messages::DumpQueueGetReply]
4077
+ # @param [Hash] args
4078
+ # @option args [Integer] ifindex ifindex of the netdevice to which the queue belongs.
4079
+ # @return [Nl::Async::Stream<Messages::DumpQueueGetReply>]
4080
+ # @see Messages::DumpQueueGetRequest
4081
+ def dump_queue_get: (?ifindex: ::Integer) -> ::Nl::Async::Stream[Messages::DumpQueueGetReply]
4082
+
4083
+ # Get information about NAPI instances configured on the system.
4084
+ # @rbs (?id: ::Integer) -> ::Nl::Async::Future[Messages::DoNapiGetReply]
4085
+ # @param [Hash] args
4086
+ # @option args [Integer] id ID of the NAPI instance.
4087
+ # @return [Nl::Async::Future<Messages::DoNapiGetReply>]
4088
+ # @see Messages::DoNapiGetRequest
4089
+ def do_napi_get: (?id: ::Integer) -> ::Nl::Async::Future[Messages::DoNapiGetReply]
4090
+
4091
+ # Get information about NAPI instances configured on the system.
4092
+ # @rbs (?ifindex: ::Integer) -> ::Nl::Async::Stream[Messages::DumpNapiGetReply]
4093
+ # @param [Hash] args
4094
+ # @option args [Integer] ifindex ifindex of the netdevice to which NAPI instance belongs.
4095
+ # @return [Nl::Async::Stream<Messages::DumpNapiGetReply>]
4096
+ # @see Messages::DumpNapiGetRequest
4097
+ def dump_napi_get: (?ifindex: ::Integer) -> ::Nl::Async::Stream[Messages::DumpNapiGetReply]
4098
+
4099
+ # Get / dump fine grained statistics. Which statistics are reported
4100
+ # depends on the device and the driver, and whether the driver stores
4101
+ # software counters per-queue.
4102
+ # @rbs (?ifindex: ::Integer, ?scope: ::Integer) -> ::Nl::Async::Stream[Messages::DumpQstatsGetReply]
4103
+ # @param [Hash] args
4104
+ # @option args [Integer] ifindex ifindex of the netdevice to which stats belong.
4105
+ # @option args [Integer] scope What object type should be used to iterate over the stats.
4106
+ #
4107
+ #
4108
+ # Known flags are defined in {Flags::QstatsScope}.
4109
+ # @return [Nl::Async::Stream<Messages::DumpQstatsGetReply>]
4110
+ # @see Messages::DumpQstatsGetRequest
4111
+ def dump_qstats_get: (?ifindex: ::Integer, ?scope: ::Integer) -> ::Nl::Async::Stream[Messages::DumpQstatsGetReply]
4112
+
4113
+ # Bind dmabuf to netdev
4114
+ #
4115
+ # Requires CAP_NET_ADMIN in the user namespace owning the network namespace.
4116
+ # @rbs (?ifindex: ::Integer, ?queues: ::Array[(AttributeSets::QueueId | ::Hash[::Symbol, untyped])], ?fd: ::Integer) -> ::Nl::Async::Future[Messages::DoBindRxReply]
4117
+ # @param [Hash] args
4118
+ # @option args [Integer] ifindex netdev ifindex to bind the dmabuf to.
4119
+ # @option args [Array<AttributeSets::QueueId, Hash<Symbol, Object>>] queues receive queues to bind the dmabuf to.
4120
+ # @option args [Integer] fd dmabuf file descriptor to bind.
4121
+ # @return [Nl::Async::Future<Messages::DoBindRxReply>]
4122
+ # @see Messages::DoBindRxRequest
4123
+ def do_bind_rx: (?ifindex: ::Integer, ?queues: ::Array[AttributeSets::QueueId | ::Hash[::Symbol, untyped]], ?fd: ::Integer) -> ::Nl::Async::Future[Messages::DoBindRxReply]
4124
+
4125
+ # Set configurable NAPI instance settings.
4126
+ #
4127
+ # Requires CAP_NET_ADMIN in the initial user namespace.
4128
+ # @rbs (?id: ::Integer, ?defer_hard_irqs: ::Integer, ?gro_flush_timeout: ::Integer, ?irq_suspend_timeout: ::Integer, ?threaded: ::Integer) -> ::Nl::Async::Future[void]
4129
+ # @param [Hash] args
4130
+ # @option args [Integer] id ID of the NAPI instance.
4131
+ # @option args [Integer] defer_hard_irqs The number of consecutive empty polls before IRQ deferral ends and hardware IRQs are re-enabled.
4132
+ # @option args [Integer] gro_flush_timeout The timeout, in nanoseconds, of when to trigger the NAPI watchdog timer which schedules NAPI processing. Additionally, a non-zero value will also prevent GRO from flushing recent super-frames at the end of a NAPI cycle. This may add receive latency in exchange for reducing the number of frames processed by the network stack.
4133
+ # @option args [Integer] irq_suspend_timeout The timeout, in nanoseconds, of how long to suspend irq processing, if event polling finds events
4134
+ # @option args [Integer] threaded Whether the NAPI is configured to operate in threaded polling mode. If this is set to enabled then the NAPI context operates in threaded polling mode. If this is set to busy-poll, then the threaded polling mode also busy polls.
4135
+ #
4136
+ # Known enum values are defined in {Enums::NapiThreaded}.
4137
+ # @return [Nl::Async::Future<void>]
4138
+ # @see Messages::DoNapiSetRequest
4139
+ def do_napi_set: (?id: ::Integer, ?defer_hard_irqs: ::Integer, ?gro_flush_timeout: ::Integer, ?irq_suspend_timeout: ::Integer, ?threaded: ::Integer) -> ::Nl::Async::Future[void]
4140
+
4141
+ # Bind dmabuf to netdev for TX
4142
+ # @rbs (?ifindex: ::Integer, ?fd: ::Integer) -> ::Nl::Async::Future[Messages::DoBindTxReply]
4143
+ # @param [Hash] args
4144
+ # @option args [Integer] ifindex netdev ifindex to bind the dmabuf to.
4145
+ # @option args [Integer] fd dmabuf file descriptor to bind.
4146
+ # @return [Nl::Async::Future<Messages::DoBindTxReply>]
4147
+ # @see Messages::DoBindTxRequest
4148
+ def do_bind_tx: (?ifindex: ::Integer, ?fd: ::Integer) -> ::Nl::Async::Future[Messages::DoBindTxReply]
4149
+
4150
+ # Create a new queue for the given netdevice. Whether this operation
4151
+ # is supported depends on the device and the driver.
4152
+ #
4153
+ #
4154
+ # Requires CAP_NET_ADMIN in the initial user namespace.
4155
+ # @rbs (?ifindex: ::Integer, ?type: ::Integer, ?lease: (AttributeSets::Lease | ::Hash[::Symbol, untyped])) -> ::Nl::Async::Future[Messages::DoQueueCreateReply]
4156
+ # @param [Hash] args
4157
+ # @option args [Integer] ifindex ifindex of the netdevice to which the queue belongs.
4158
+ # @option args [Integer] type Queue type as rx, tx. Each queue type defines a separate ID space. XDP TX queues allocated in the kernel are not linked to NAPIs and thus not listed. AF_XDP queues will have more information set in the xsk attribute.
4159
+ #
4160
+ # Known enum values are defined in {Enums::QueueType}.
4161
+ # @option args [AttributeSets::Lease, Hash<Symbol, Object>] lease A queue from a virtual device can have a lease which refers to
4162
+ # another queue from a physical device. This is useful for memory
4163
+ # providers and AF_XDP operations which take an ifindex and queue id
4164
+ # to allow applications to bind against virtual devices in containers.
4165
+ # @return [Nl::Async::Future<Messages::DoQueueCreateReply>]
4166
+ # @see Messages::DoQueueCreateRequest
4167
+ def do_queue_create: (?ifindex: ::Integer, ?type: ::Integer, ?lease: AttributeSets::Lease | ::Hash[::Symbol, untyped]) -> ::Nl::Async::Future[Messages::DoQueueCreateReply]
4168
+ end
4169
+
4170
+ # Returns the asynchronous operation facade for this family.
4171
+ # @rbs (?stream_capacity: ::Integer?) -> AsyncOperations
4172
+ # @param [::Integer, nil] stream_capacity
4173
+ # @return [AsyncOperations]
4174
+ def async: (?stream_capacity: ::Integer?) -> AsyncOperations
4175
+
4176
+ # @rbs (*(:mgmt | :page_pool) groups) -> self
4177
+ # @param [Array<:mgmt, :page_pool>] groups
4178
+ # @return [self]
4179
+ def subscribe: (*:mgmt | :page_pool groups) -> self
4180
+
4181
+ # @rbs (*(:mgmt | :page_pool) groups) -> self
4182
+ # @param [Array<:mgmt, :page_pool>] groups
4183
+ # @return [self]
4184
+ def unsubscribe: (*:mgmt | :page_pool groups) -> self
4185
+ end
4186
+ end
4187
+ end