Skip to content

Commit abbeaee

Browse files
committedFeb 6, 2025
sync to upstream 0bdcfaf84a94 ("tools: ynl: add all headers to makefile deps")
Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 2c3da0c commit abbeaee

31 files changed

+4116
-986
lines changed
 

‎Documentation/netlink/genetlink-c.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ $defs:
1414
pattern: ^[0-9A-Za-z_-]+( - 1)?$
1515
minimum: 0
1616
len-or-limit:
17-
# literal int or limit based on fixed-width type e.g. u8-min, u16-max, etc.
17+
# literal int, const name, or limit based on fixed-width type
18+
# e.g. u8-min, u16-max, etc.
1819
type: [ string, integer ]
19-
pattern: ^[su](8|16|32|64)-(min|max)$
20+
pattern: ^[0-9A-Za-z_-]+$
2021
minimum: 0
2122

2223
# Schema for specs
@@ -106,6 +107,9 @@ properties:
106107
name-prefix:
107108
description: For enum the prefix of the values, optional.
108109
type: string
110+
enum-cnt-name:
111+
description: Name of the render-max counter enum entry.
112+
type: string
109113
# End genetlink-c
110114

111115
attribute-sets:

‎Documentation/netlink/genetlink-legacy.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ $defs:
1414
pattern: ^[0-9A-Za-z_-]+( - 1)?$
1515
minimum: 0
1616
len-or-limit:
17-
# literal int or limit based on fixed-width type e.g. u8-min, u16-max, etc.
17+
# literal int, const name, or limit based on fixed-width type
18+
# e.g. u8-min, u16-max, etc.
1819
type: [ string, integer ]
19-
pattern: ^[su](8|16|32|64)-(min|max)$
20+
pattern: ^[0-9A-Za-z_-]+$
2021
minimum: 0
2122

2223
# Schema for specs
@@ -117,6 +118,9 @@ properties:
117118
name-prefix:
118119
description: For enum the prefix of the values, optional.
119120
type: string
121+
enum-cnt-name:
122+
description: Name of the render-max counter enum entry.
123+
type: string
120124
# End genetlink-c
121125
# Start genetlink-legacy
122126
members:

‎Documentation/netlink/genetlink.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ $defs:
1414
pattern: ^[0-9A-Za-z_-]+( - 1)?$
1515
minimum: 0
1616
len-or-limit:
17-
# literal int or limit based on fixed-width type e.g. u8-min, u16-max, etc.
17+
# literal int, const name, or limit based on fixed-width type
18+
# e.g. u8-min, u16-max, etc.
1819
type: [ string, integer ]
19-
pattern: ^[su](8|16|32|64)-(min|max)$
20+
pattern: ^[0-9A-Za-z_-]+$
2021
minimum: 0
2122

2223
# Schema for specs

‎Documentation/netlink/netlink-raw.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ properties:
221221
type: &attr-type
222222
description: The netlink attribute type
223223
enum: [ unused, pad, flag, binary, bitfield32,
224-
u8, u16, u32, u64, s8, s16, s32, s64,
224+
uint, sint, u8, u16, u32, u64, s8, s16, s32, s64,
225225
string, nest, indexed-array, nest-type-value,
226226
sub-message ]
227227
doc:

‎Documentation/netlink/specs/dpll.yaml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,36 @@ definitions:
8585
This may happen for example if dpll device was previously
8686
locked on an input pin of type PIN_TYPE_SYNCE_ETH_PORT.
8787
render-max: true
88+
-
89+
type: enum
90+
name: clock-quality-level
91+
doc: |
92+
level of quality of a clock device. This mainly applies when
93+
the dpll lock-status is DPLL_LOCK_STATUS_HOLDOVER.
94+
The current list is defined according to the table 11-7 contained
95+
in ITU-T G.8264/Y.1364 document. One may extend this list freely
96+
by other ITU-T defined clock qualities, or different ones defined
97+
by another standardization body (for those, please use
98+
different prefix).
99+
entries:
100+
-
101+
name: itu-opt1-prc
102+
value: 1
103+
-
104+
name: itu-opt1-ssu-a
105+
-
106+
name: itu-opt1-ssu-b
107+
-
108+
name: itu-opt1-eec1
109+
-
110+
name: itu-opt1-prtc
111+
-
112+
name: itu-opt1-eprtc
113+
-
114+
name: itu-opt1-eeec
115+
-
116+
name: itu-opt1-eprc
117+
render-max: true
88118
-
89119
type: const
90120
name: temp-divider
@@ -252,6 +282,17 @@ attribute-sets:
252282
name: lock-status-error
253283
type: u32
254284
enum: lock-status-error
285+
-
286+
name: clock-quality-level
287+
type: u32
288+
enum: clock-quality-level
289+
multi-attr: true
290+
doc: |
291+
Level of quality of a clock device. This mainly applies when
292+
the dpll lock-status is DPLL_LOCK_STATUS_HOLDOVER. This could
293+
be put to message multiple times to indicate possible parallel
294+
quality levels (e.g. one specified by ITU option 1 and another
295+
one specified by option 2).
255296
-
256297
name: pin
257298
enum-name: dpll_a_pin

‎Documentation/netlink/specs/ethtool.yaml

Lines changed: 443 additions & 13 deletions
Large diffs are not rendered by default.

‎Documentation/netlink/specs/mptcp_pm.yaml

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,65 +22,67 @@ definitions:
2222
doc: unused event
2323
-
2424
name: created
25-
doc:
26-
token, family, saddr4 | saddr6, daddr4 | daddr6, sport, dport
25+
doc: >-
2726
A new MPTCP connection has been created. It is the good time to
2827
allocate memory and send ADD_ADDR if needed. Depending on the
2928
traffic-patterns it can take a long time until the
3029
MPTCP_EVENT_ESTABLISHED is sent.
30+
Attributes: token, family, saddr4 | saddr6, daddr4 | daddr6, sport,
31+
dport, server-side.
3132
-
3233
name: established
33-
doc:
34-
token, family, saddr4 | saddr6, daddr4 | daddr6, sport, dport
34+
doc: >-
3535
A MPTCP connection is established (can start new subflows).
36+
Attributes: token, family, saddr4 | saddr6, daddr4 | daddr6, sport,
37+
dport, server-side.
3638
-
3739
name: closed
38-
doc:
39-
token
40+
doc: >-
4041
A MPTCP connection has stopped.
42+
Attribute: token.
4143
-
4244
name: announced
4345
value: 6
44-
doc:
45-
token, rem_id, family, daddr4 | daddr6 [, dport]
46+
doc: >-
4647
A new address has been announced by the peer.
48+
Attributes: token, rem_id, family, daddr4 | daddr6 [, dport].
4749
-
4850
name: removed
49-
doc:
50-
token, rem_id
51+
doc: >-
5152
An address has been lost by the peer.
53+
Attributes: token, rem_id.
5254
-
5355
name: sub-established
5456
value: 10
55-
doc:
56-
token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
57-
dport, backup, if_idx [, error]
57+
doc: >-
5858
A new subflow has been established. 'error' should not be set.
59+
Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 |
60+
daddr6, sport, dport, backup, if_idx [, error].
5961
-
6062
name: sub-closed
61-
doc:
62-
token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
63-
dport, backup, if_idx [, error]
63+
doc: >-
6464
A subflow has been closed. An error (copy of sk_err) could be set if an
6565
error has been detected for this subflow.
66+
Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 |
67+
daddr6, sport, dport, backup, if_idx [, error].
6668
-
6769
name: sub-priority
6870
value: 13
69-
doc:
70-
token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
71-
dport, backup, if_idx [, error]
71+
doc: >-
7272
The priority of a subflow has changed. 'error' should not be set.
73+
Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 |
74+
daddr6, sport, dport, backup, if_idx [, error].
7375
-
7476
name: listener-created
7577
value: 15
76-
doc:
77-
family, sport, saddr4 | saddr6
78+
doc: >-
7879
A new PM listener is created.
80+
Attributes: family, sport, saddr4 | saddr6.
7981
-
8082
name: listener-closed
81-
doc:
82-
family, sport, saddr4 | saddr6
83+
doc: >-
8384
A PM listener is closed.
85+
Attributes: family, sport, saddr4 | saddr6.
8486
8587
attribute-sets:
8688
-
@@ -293,7 +295,6 @@ operations:
293295
doc: Get endpoint information
294296
attribute-set: attr
295297
dont-validate: [ strict ]
296-
flags: [ uns-admin-perm ]
297298
do: &get-addr-attrs
298299
request:
299300
attributes:
@@ -307,8 +308,8 @@ operations:
307308
attributes:
308309
- addr
309310
-
310-
name: flush-addrs
311-
doc: flush addresses
311+
name: flush-addrs
312+
doc: Flush addresses
312313
attribute-set: endpoint
313314
dont-validate: [ strict ]
314315
flags: [ uns-admin-perm ]
@@ -352,7 +353,7 @@ operations:
352353
- addr-remote
353354
-
354355
name: announce
355-
doc: announce new sf
356+
doc: Announce new address
356357
attribute-set: attr
357358
dont-validate: [ strict ]
358359
flags: [ uns-admin-perm ]
@@ -363,7 +364,7 @@ operations:
363364
- token
364365
-
365366
name: remove
366-
doc: announce removal
367+
doc: Announce removal
367368
attribute-set: attr
368369
dont-validate: [ strict ]
369370
flags: [ uns-admin-perm ]
@@ -374,7 +375,7 @@ operations:
374375
- loc-id
375376
-
376377
name: subflow-create
377-
doc: todo
378+
doc: Create subflow
378379
attribute-set: attr
379380
dont-validate: [ strict ]
380381
flags: [ uns-admin-perm ]
@@ -386,7 +387,7 @@ operations:
386387
- addr-remote
387388
-
388389
name: subflow-destroy
389-
doc: todo
390+
doc: Destroy subflow
390391
attribute-set: attr
391392
dont-validate: [ strict ]
392393
flags: [ uns-admin-perm ]
Lines changed: 362 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,362 @@
1+
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2+
name: net-shaper
3+
4+
doc: |
5+
Networking HW rate limiting configuration.
6+
7+
This API allows configuring HW shapers available on the network
8+
devices at different levels (queues, network device) and allows
9+
arbitrary manipulation of the scheduling tree of the involved
10+
shapers.
11+
12+
Each @shaper is identified within the given device, by a @handle,
13+
comprising both a @scope and an @id.
14+
15+
Depending on the @scope value, the shapers are attached to specific
16+
HW objects (queues, devices) or, for @node scope, represent a
17+
scheduling group, that can be placed in an arbitrary location of
18+
the scheduling tree.
19+
20+
Shapers can be created with two different operations: the @set
21+
operation, to create and update a single "attached" shaper, and
22+
the @group operation, to create and update a scheduling
23+
group. Only the @group operation can create @node scope shapers.
24+
25+
Existing shapers can be deleted/reset via the @delete operation.
26+
27+
The user can query the running configuration via the @get operation.
28+
29+
Different devices can provide different feature sets, e.g. with no
30+
support for complex scheduling hierarchy, or for some shaping
31+
parameters. The user can introspect the HW capabilities via the
32+
@cap-get operation.
33+
34+
definitions:
35+
-
36+
type: enum
37+
name: scope
38+
doc: Defines the shaper @id interpretation.
39+
render-max: true
40+
entries:
41+
- name: unspec
42+
doc: The scope is not specified.
43+
-
44+
name: netdev
45+
doc: The main shaper for the given network device.
46+
-
47+
name: queue
48+
doc: |
49+
The shaper is attached to the given device queue,
50+
the @id represents the queue number.
51+
-
52+
name: node
53+
doc: |
54+
The shaper allows grouping of queues or other
55+
node shapers; can be nested in either @netdev
56+
shapers or other @node shapers, allowing placement
57+
in any location of the scheduling tree, except
58+
leaves and root.
59+
-
60+
type: enum
61+
name: metric
62+
doc: Different metric supported by the shaper.
63+
entries:
64+
-
65+
name: bps
66+
doc: Shaper operates on a bits per second basis.
67+
-
68+
name: pps
69+
doc: Shaper operates on a packets per second basis.
70+
71+
attribute-sets:
72+
-
73+
name: net-shaper
74+
attributes:
75+
-
76+
name: handle
77+
type: nest
78+
nested-attributes: handle
79+
doc: Unique identifier for the given shaper inside the owning device.
80+
-
81+
name: metric
82+
type: u32
83+
enum: metric
84+
doc: Metric used by the given shaper for bw-min, bw-max and burst.
85+
-
86+
name: bw-min
87+
type: uint
88+
doc: Guaranteed bandwidth for the given shaper.
89+
-
90+
name: bw-max
91+
type: uint
92+
doc: Maximum bandwidth for the given shaper or 0 when unlimited.
93+
-
94+
name: burst
95+
type: uint
96+
doc: |
97+
Maximum burst-size for shaping. Should not be interpreted
98+
as a quantum.
99+
-
100+
name: priority
101+
type: u32
102+
doc: |
103+
Scheduling priority for the given shaper. The priority
104+
scheduling is applied to sibling shapers.
105+
-
106+
name: weight
107+
type: u32
108+
doc: |
109+
Relative weight for round robin scheduling of the
110+
given shaper.
111+
The scheduling is applied to all sibling shapers
112+
with the same priority.
113+
-
114+
name: ifindex
115+
type: u32
116+
doc: Interface index owning the specified shaper.
117+
-
118+
name: parent
119+
type: nest
120+
nested-attributes: handle
121+
doc: |
122+
Identifier for the parent of the affected shaper.
123+
Only needed for @group operation.
124+
-
125+
name: leaves
126+
type: nest
127+
multi-attr: true
128+
nested-attributes: leaf-info
129+
doc: |
130+
Describes a set of leaves shapers for a @group operation.
131+
-
132+
name: handle
133+
attributes:
134+
-
135+
name: scope
136+
type: u32
137+
enum: scope
138+
doc: Defines the shaper @id interpretation.
139+
-
140+
name: id
141+
type: u32
142+
doc: |
143+
Numeric identifier of a shaper. The id semantic depends on
144+
the scope. For @queue scope it's the queue id and for @node
145+
scope it's the node identifier.
146+
-
147+
name: leaf-info
148+
subset-of: net-shaper
149+
attributes:
150+
-
151+
name: handle
152+
-
153+
name: priority
154+
-
155+
name: weight
156+
-
157+
name: caps
158+
attributes:
159+
-
160+
name: ifindex
161+
type: u32
162+
doc: Interface index queried for shapers capabilities.
163+
-
164+
name: scope
165+
type: u32
166+
enum: scope
167+
doc: The scope to which the queried capabilities apply.
168+
-
169+
name: support-metric-bps
170+
type: flag
171+
doc: The device accepts 'bps' metric for bw-min, bw-max and burst.
172+
-
173+
name: support-metric-pps
174+
type: flag
175+
doc: The device accepts 'pps' metric for bw-min, bw-max and burst.
176+
-
177+
name: support-nesting
178+
type: flag
179+
doc: |
180+
The device supports nesting shaper belonging to this scope
181+
below 'node' scoped shapers. Only 'queue' and 'node'
182+
scope can have flag 'support-nesting'.
183+
-
184+
name: support-bw-min
185+
type: flag
186+
doc: The device supports a minimum guaranteed B/W.
187+
-
188+
name: support-bw-max
189+
type: flag
190+
doc: The device supports maximum B/W shaping.
191+
-
192+
name: support-burst
193+
type: flag
194+
doc: The device supports a maximum burst size.
195+
-
196+
name: support-priority
197+
type: flag
198+
doc: The device supports priority scheduling.
199+
-
200+
name: support-weight
201+
type: flag
202+
doc: The device supports weighted round robin scheduling.
203+
204+
operations:
205+
list:
206+
-
207+
name: get
208+
doc: |
209+
Get information about a shaper for a given device.
210+
attribute-set: net-shaper
211+
212+
do:
213+
pre: net-shaper-nl-pre-doit
214+
post: net-shaper-nl-post-doit
215+
request:
216+
attributes: &ns-binding
217+
- ifindex
218+
- handle
219+
reply:
220+
attributes: &ns-attrs
221+
- ifindex
222+
- parent
223+
- handle
224+
- metric
225+
- bw-min
226+
- bw-max
227+
- burst
228+
- priority
229+
- weight
230+
231+
dump:
232+
pre: net-shaper-nl-pre-dumpit
233+
post: net-shaper-nl-post-dumpit
234+
request:
235+
attributes:
236+
- ifindex
237+
reply:
238+
attributes: *ns-attrs
239+
-
240+
name: set
241+
doc: |
242+
Create or update the specified shaper.
243+
The set operation can't be used to create a @node scope shaper,
244+
use the @group operation instead.
245+
attribute-set: net-shaper
246+
flags: [ admin-perm ]
247+
248+
do:
249+
pre: net-shaper-nl-pre-doit
250+
post: net-shaper-nl-post-doit
251+
request:
252+
attributes:
253+
- ifindex
254+
- handle
255+
- metric
256+
- bw-min
257+
- bw-max
258+
- burst
259+
- priority
260+
- weight
261+
262+
-
263+
name: delete
264+
doc: |
265+
Clear (remove) the specified shaper. When deleting
266+
a @node shaper, reattach all the node's leaves to the
267+
deleted node's parent.
268+
If, after the removal, the parent shaper has no more
269+
leaves and the parent shaper scope is @node, the parent
270+
node is deleted, recursively.
271+
When deleting a @queue shaper or a @netdev shaper,
272+
the shaper disappears from the hierarchy, but the
273+
queue/device can still send traffic: it has an implicit
274+
node with infinite bandwidth. The queue's implicit node
275+
feeds an implicit RR node at the root of the hierarchy.
276+
attribute-set: net-shaper
277+
flags: [ admin-perm ]
278+
279+
do:
280+
pre: net-shaper-nl-pre-doit
281+
post: net-shaper-nl-post-doit
282+
request:
283+
attributes: *ns-binding
284+
285+
-
286+
name: group
287+
doc: |
288+
Create or update a scheduling group, attaching the specified
289+
@leaves shapers under the specified node identified by @handle.
290+
The @leaves shapers scope must be @queue and the node shaper
291+
scope must be either @node or @netdev.
292+
When the node shaper has @node scope, if the @handle @id is not
293+
specified, a new shaper of such scope is created, otherwise the
294+
specified node must already exist.
295+
When updating an existing node shaper, the specified @leaves are
296+
added to the existing node; such node will also retain any preexisting
297+
leave.
298+
The @parent handle for a new node shaper defaults to the parent
299+
of all the leaves, provided all the leaves share the same parent.
300+
Otherwise @parent handle must be specified.
301+
The user can optionally provide shaping attributes for the node
302+
shaper.
303+
The operation is atomic, on failure no change is applied to
304+
the device shaping configuration, otherwise the @node shaper
305+
full identifier, comprising @binding and @handle, is provided
306+
as the reply.
307+
attribute-set: net-shaper
308+
flags: [ admin-perm ]
309+
310+
do:
311+
pre: net-shaper-nl-pre-doit
312+
post: net-shaper-nl-post-doit
313+
request:
314+
attributes:
315+
- ifindex
316+
- parent
317+
- handle
318+
- metric
319+
- bw-min
320+
- bw-max
321+
- burst
322+
- priority
323+
- weight
324+
- leaves
325+
reply:
326+
attributes: *ns-binding
327+
328+
-
329+
name: cap-get
330+
doc: |
331+
Get the shaper capabilities supported by the given device
332+
for the specified scope.
333+
attribute-set: caps
334+
335+
do:
336+
pre: net-shaper-nl-cap-pre-doit
337+
post: net-shaper-nl-cap-post-doit
338+
request:
339+
attributes:
340+
- ifindex
341+
- scope
342+
reply:
343+
attributes: &cap-attrs
344+
- ifindex
345+
- scope
346+
- support-metric-bps
347+
- support-metric-pps
348+
- support-nesting
349+
- support-bw-min
350+
- support-bw-max
351+
- support-burst
352+
- support-priority
353+
- support-weight
354+
355+
dump:
356+
pre: net-shaper-nl-cap-pre-dumpit
357+
post: net-shaper-nl-cap-post-dumpit
358+
request:
359+
attributes:
360+
- ifindex
361+
reply:
362+
attributes: *cap-attrs

‎Documentation/netlink/specs/netdev.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,26 @@ attribute-sets:
248248
threaded mode. If NAPI is not in threaded mode (i.e. uses normal
249249
softirq context), the attribute will be absent.
250250
type: u32
251+
-
252+
name: defer-hard-irqs
253+
doc: The number of consecutive empty polls before IRQ deferral ends
254+
and hardware IRQs are re-enabled.
255+
type: u32
256+
checks:
257+
max: s32-max
258+
-
259+
name: gro-flush-timeout
260+
doc: The timeout, in nanoseconds, of when to trigger the NAPI watchdog
261+
timer which schedules NAPI processing. Additionally, a non-zero
262+
value will also prevent GRO from flushing recent super-frames at
263+
the end of a NAPI cycle. This may add receive latency in exchange
264+
for reducing the number of frames processed by the network stack.
265+
type: uint
266+
-
267+
name: irq-suspend-timeout
268+
doc: The timeout, in nanoseconds, of how long to suspend irq
269+
processing, if event polling finds events
270+
type: uint
251271
-
252272
name: queue
253273
attributes:
@@ -636,6 +656,9 @@ operations:
636656
- ifindex
637657
- irq
638658
- pid
659+
- defer-hard-irqs
660+
- gro-flush-timeout
661+
- irq-suspend-timeout
639662
dump:
640663
request:
641664
attributes:
@@ -676,6 +699,18 @@ operations:
676699
reply:
677700
attributes:
678701
- id
702+
-
703+
name: napi-set
704+
doc: Set configurable NAPI instance settings.
705+
attribute-set: napi
706+
flags: [ admin-perm ]
707+
do:
708+
request:
709+
attributes:
710+
- id
711+
- defer-hard-irqs
712+
- gro-flush-timeout
713+
- irq-suspend-timeout
679714

680715
kernel-family:
681716
headers: [ "linux/list.h"]

‎Documentation/netlink/specs/rt_link.yaml

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,13 @@ definitions:
920920
- name: l2
921921
- name: l3
922922

923+
-
924+
name: netkit-scrub
925+
type: enum
926+
entries:
927+
- name: none
928+
- name: default
929+
923930
attribute-sets:
924931
-
925932
name: link-attrs
@@ -1818,6 +1825,48 @@ attribute-sets:
18181825
-
18191826
name: erspan-hwid
18201827
type: u16
1828+
-
1829+
name: linkinfo-vti-attrs
1830+
name-prefix: ifla-vti-
1831+
attributes:
1832+
-
1833+
name: link
1834+
type: u32
1835+
-
1836+
name: ikey
1837+
type: u32
1838+
-
1839+
name: okey
1840+
type: u32
1841+
-
1842+
name: local
1843+
type: binary
1844+
display-hint: ipv4
1845+
-
1846+
name: remote
1847+
type: binary
1848+
display-hint: ipv4
1849+
-
1850+
name: fwmark
1851+
type: u32
1852+
-
1853+
name: linkinfo-vti6-attrs
1854+
subset-of: linkinfo-vti-attrs
1855+
attributes:
1856+
-
1857+
name: link
1858+
-
1859+
name: ikey
1860+
-
1861+
name: okey
1862+
-
1863+
name: local
1864+
display-hint: ipv6
1865+
-
1866+
name: remote
1867+
display-hint: ipv6
1868+
-
1869+
name: fwmark
18211870
-
18221871
name: linkinfo-geneve-attrs
18231872
name-prefix: ifla-geneve-
@@ -1934,6 +1983,42 @@ attribute-sets:
19341983
-
19351984
name: fwmark
19361985
type: u32
1986+
-
1987+
name: linkinfo-ip6tnl-attrs
1988+
subset-of: linkinfo-iptun-attrs
1989+
attributes:
1990+
-
1991+
name: link
1992+
-
1993+
name: local
1994+
display-hint: ipv6
1995+
-
1996+
name: remote
1997+
display-hint: ipv6
1998+
-
1999+
name: ttl
2000+
-
2001+
name: encap-limit
2002+
-
2003+
name: flowinfo
2004+
-
2005+
name: flags
2006+
# ip6tnl unlike ipip and sit has 32b flags
2007+
type: u32
2008+
-
2009+
name: proto
2010+
-
2011+
name: encap-type
2012+
-
2013+
name: encap-flags
2014+
-
2015+
name: encap-sport
2016+
-
2017+
name: encap-dport
2018+
-
2019+
name: collect-metadata
2020+
-
2021+
name: fwmark
19372022
-
19382023
name: linkinfo-tun-attrs
19392024
name-prefix: ifla-tun-
@@ -2079,6 +2164,9 @@ attribute-sets:
20792164
-
20802165
name: mctp-net
20812166
type: u32
2167+
-
2168+
name: phys-binding
2169+
type: u8
20822170
-
20832171
name: stats-attrs
20842172
name-prefix: ifla-stats-
@@ -2151,6 +2239,20 @@ attribute-sets:
21512239
name: mode
21522240
type: u32
21532241
enum: netkit-mode
2242+
-
2243+
name: scrub
2244+
type: u32
2245+
enum: netkit-scrub
2246+
-
2247+
name: peer-scrub
2248+
type: u32
2249+
enum: netkit-scrub
2250+
-
2251+
name: headroom
2252+
type: u16
2253+
-
2254+
name: tailroom
2255+
type: u16
21542256

21552257
sub-messages:
21562258
-
@@ -2177,6 +2279,9 @@ sub-messages:
21772279
-
21782280
value: ipip
21792281
attribute-set: linkinfo-iptun-attrs
2282+
-
2283+
value: ip6tnl
2284+
attribute-set: linkinfo-ip6tnl-attrs
21802285
-
21812286
value: sit
21822287
attribute-set: linkinfo-iptun-attrs
@@ -2189,6 +2294,12 @@ sub-messages:
21892294
-
21902295
value: vrf
21912296
attribute-set: linkinfo-vrf-attrs
2297+
-
2298+
value: vti
2299+
attribute-set: linkinfo-vti-attrs
2300+
-
2301+
value: vti6
2302+
attribute-set: linkinfo-vti6-attrs
21922303
-
21932304
value: netkit
21942305
attribute-set: linkinfo-netkit-attrs

‎Documentation/netlink/specs/rt_neigh.yaml

Lines changed: 442 additions & 0 deletions
Large diffs are not rendered by default.

‎Documentation/netlink/specs/rt_route.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@ attribute-sets:
177177
-
178178
name: rta-nh-id
179179
type: u32
180+
-
181+
name: rta-flowlabel
182+
type: u32
183+
byte-order: big-endian
184+
display-hint: hex
180185
-
181186
name: rta-metrics
182187
attributes:
@@ -260,6 +265,7 @@ operations:
260265
- rta-dport
261266
- rta-mark
262267
- rta-uid
268+
- rta-flowlabel
263269
reply:
264270
value: 24
265271
attributes: &all-route-attrs
@@ -299,6 +305,7 @@ operations:
299305
- rta-sport
300306
- rta-dport
301307
- rta-nh-id
308+
- rta-flowlabel
302309
dump:
303310
request:
304311
value: 26
Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,254 @@
1+
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2+
3+
name: rt-rule
4+
protocol: netlink-raw
5+
protonum: 0
6+
7+
doc:
8+
FIB rule management over rtnetlink.
9+
10+
definitions:
11+
-
12+
name: rtgenmsg
13+
type: struct
14+
members:
15+
-
16+
name: family
17+
type: u8
18+
-
19+
name: pad
20+
type: pad
21+
len: 3
22+
-
23+
name: fib-rule-hdr
24+
type: struct
25+
members:
26+
-
27+
name: family
28+
type: u8
29+
-
30+
name: dst-len
31+
type: u8
32+
-
33+
name: src-len
34+
type: u8
35+
-
36+
name: tos
37+
type: u8
38+
-
39+
name: table
40+
type: u8
41+
-
42+
name: res1
43+
type: pad
44+
len: 1
45+
-
46+
name: res2
47+
type: pad
48+
len: 1
49+
-
50+
name: action
51+
type: u8
52+
enum: fr-act
53+
-
54+
name: flags
55+
type: u32
56+
-
57+
name: fr-act
58+
type: enum
59+
entries:
60+
- unspec
61+
- to-tbl
62+
- goto
63+
- nop
64+
- res3
65+
- res4
66+
- blackhole
67+
- unreachable
68+
- prohibit
69+
-
70+
name: fib-rule-port-range
71+
type: struct
72+
members:
73+
-
74+
name: start
75+
type: u16
76+
-
77+
name: end
78+
type: u16
79+
-
80+
name: fib-rule-uid-range
81+
type: struct
82+
members:
83+
-
84+
name: start
85+
type: u32
86+
-
87+
name: end
88+
type: u32
89+
90+
attribute-sets:
91+
-
92+
name: fib-rule-attrs
93+
attributes:
94+
-
95+
name: dst
96+
type: u32
97+
-
98+
name: src
99+
type: u32
100+
-
101+
name: iifname
102+
type: string
103+
-
104+
name: goto
105+
type: u32
106+
-
107+
name: unused2
108+
type: pad
109+
-
110+
name: priority
111+
type: u32
112+
-
113+
name: unused3
114+
type: pad
115+
-
116+
name: unused4
117+
type: pad
118+
-
119+
name: unused5
120+
type: pad
121+
-
122+
name: fwmark
123+
type: u32
124+
display-hint: hex
125+
-
126+
name: flow
127+
type: u32
128+
-
129+
name: tun-id
130+
type: u64
131+
-
132+
name: suppress-ifgroup
133+
type: u32
134+
-
135+
name: suppress-prefixlen
136+
type: u32
137+
display-hint: hex
138+
-
139+
name: table
140+
type: u32
141+
-
142+
name: fwmask
143+
type: u32
144+
display-hint: hex
145+
-
146+
name: oifname
147+
type: string
148+
-
149+
name: pad
150+
type: pad
151+
-
152+
name: l3mdev
153+
type: u8
154+
-
155+
name: uid-range
156+
type: binary
157+
struct: fib-rule-uid-range
158+
-
159+
name: protocol
160+
type: u8
161+
-
162+
name: ip-proto
163+
type: u8
164+
-
165+
name: sport-range
166+
type: binary
167+
struct: fib-rule-port-range
168+
-
169+
name: dport-range
170+
type: binary
171+
struct: fib-rule-port-range
172+
-
173+
name: dscp
174+
type: u8
175+
-
176+
name: flowlabel
177+
type: u32
178+
byte-order: big-endian
179+
display-hint: hex
180+
-
181+
name: flowlabel-mask
182+
type: u32
183+
byte-order: big-endian
184+
display-hint: hex
185+
186+
operations:
187+
enum-model: directional
188+
fixed-header: fib-rule-hdr
189+
list:
190+
-
191+
name: newrule
192+
doc: Add new FIB rule
193+
attribute-set: fib-rule-attrs
194+
do:
195+
request:
196+
value: 32
197+
attributes: &fib-rule-all
198+
- iifname
199+
- oifname
200+
- priority
201+
- fwmark
202+
- flow
203+
- tun-id
204+
- fwmask
205+
- table
206+
- suppress-prefixlen
207+
- suppress-ifgroup
208+
- goto
209+
- l3mdev
210+
- uid-range
211+
- protocol
212+
- ip-proto
213+
- sport-range
214+
- dport-range
215+
- dscp
216+
- flowlabel
217+
- flowlabel-mask
218+
-
219+
name: newrule-ntf
220+
doc: Notify a rule creation
221+
value: 32
222+
notify: newrule
223+
-
224+
name: delrule
225+
doc: Remove an existing FIB rule
226+
attribute-set: fib-rule-attrs
227+
do:
228+
request:
229+
value: 33
230+
attributes: *fib-rule-all
231+
-
232+
name: delrule-ntf
233+
doc: Notify a rule deletion
234+
value: 33
235+
notify: delrule
236+
-
237+
name: getrule
238+
doc: Dump all FIB rules
239+
attribute-set: fib-rule-attrs
240+
dump:
241+
request:
242+
value: 34
243+
reply:
244+
value: 32
245+
attributes: *fib-rule-all
246+
247+
mcast-groups:
248+
list:
249+
-
250+
name: rtnlgrp-ipv4-rule
251+
value: 8
252+
-
253+
name: rtnlgrp-ipv6-rule
254+
value: 19

‎Documentation/netlink/specs/tc.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ definitions:
622622
-
623623
name: max-P
624624
type: u32
625-
doc: probabilty, high resolution
625+
doc: probability, high resolution
626626
-
627627
name: stats
628628
type: binary

‎Makefile.deps

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ get_hdr_inc=-D$(1) -include $(UAPI_PATH)/linux/$(2)
1717
CFLAGS_devlink:=$(call get_hdr_inc,_LINUX_DEVLINK_H_,devlink.h)
1818
CFLAGS_dpll:=$(call get_hdr_inc,_LINUX_DPLL_H,dpll.h)
1919
CFLAGS_ethtool:=$(call get_hdr_inc,_LINUX_ETHTOOL_H,ethtool.h) \
20-
$(call get_hdr_inc,_LINUX_ETHTOOL_NETLINK_H_,ethtool_netlink.h)
20+
$(call get_hdr_inc,_LINUX_ETHTOOL_NETLINK_H_,ethtool_netlink.h) \
21+
$(call get_hdr_inc,_LINUX_ETHTOOL_NETLINK_GENERATED_H,ethtool_netlink_generated.h)
2122
CFLAGS_handshake:=$(call get_hdr_inc,_LINUX_HANDSHAKE_H,handshake.h)
2223
CFLAGS_mptcp_pm:=$(call get_hdr_inc,_LINUX_MPTCP_PM_H,mptcp_pm.h)
24+
CFLAGS_net_shaper:=$(call get_hdr_inc,_LINUX_NET_SHAPER_H,net_shaper.h)
2325
CFLAGS_netdev:=$(call get_hdr_inc,_LINUX_NETDEV_H,netdev.h)
2426
CFLAGS_nlctrl:=$(call get_hdr_inc,__LINUX_GENERIC_NETLINK_H,genetlink.h)
2527
CFLAGS_nfsd:=$(call get_hdr_inc,_LINUX_NFSD_NETLINK_H,nfsd_netlink.h)
2628
CFLAGS_ovs_datapath:=$(call get_hdr_inc,__LINUX_OPENVSWITCH_H,openvswitch.h)
2729
CFLAGS_ovs_flow:=$(call get_hdr_inc,__LINUX_OPENVSWITCH_H,openvswitch.h)
2830
CFLAGS_ovs_vport:=$(call get_hdr_inc,__LINUX_OPENVSWITCH_H,openvswitch.h)
29-
CFLAGS_psp:=$(call get_hdr_inc,_LINUX_PSP_H,psp.h)
3031
CFLAGS_tcp_metrics:=$(call get_hdr_inc,_LINUX_TCP_METRICS_H,tcp_metrics.h)

‎generated/dpll-user.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,26 @@ std::string_view dpll_lock_status_error_str(dpll_lock_status_error value)
8484
return dpll_lock_status_error_strmap[value];
8585
}
8686

87+
static constexpr std::array<std::string_view, 8 + 1> dpll_clock_quality_level_strmap = []() {
88+
std::array<std::string_view, 8 + 1> arr{};
89+
arr[1] = "itu-opt1-prc";
90+
arr[2] = "itu-opt1-ssu-a";
91+
arr[3] = "itu-opt1-ssu-b";
92+
arr[4] = "itu-opt1-eec1";
93+
arr[5] = "itu-opt1-prtc";
94+
arr[6] = "itu-opt1-eprtc";
95+
arr[7] = "itu-opt1-eeec";
96+
arr[8] = "itu-opt1-eprc";
97+
return arr;
98+
} ();
99+
100+
std::string_view dpll_clock_quality_level_str(dpll_clock_quality_level value)
101+
{
102+
if (value < 0 || value >= (int)(dpll_clock_quality_level_strmap.size()))
103+
return "";
104+
return dpll_clock_quality_level_strmap[value];
105+
}
106+
87107
static constexpr std::array<std::string_view, 2 + 1> dpll_type_strmap = []() {
88108
std::array<std::string_view, 2 + 1> arr{};
89109
arr[1] = "pps";
@@ -212,6 +232,7 @@ static std::array<ynl_policy_attr,DPLL_A_MAX + 1> dpll_policy = []() {
212232
arr[DPLL_A_TEMP] = { .name = "temp", .type = YNL_PT_U32, };
213233
arr[DPLL_A_TYPE] = { .name = "type", .type = YNL_PT_U32, };
214234
arr[DPLL_A_LOCK_STATUS_ERROR] = { .name = "lock-status-error", .type = YNL_PT_U32, };
235+
arr[DPLL_A_CLOCK_QUALITY_LEVEL] = { .name = "clock-quality-level", .type = YNL_PT_U32, };
215236
return arr;
216237
} ();
217238

‎generated/dpll-user.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ std::string_view dpll_op_str(int op);
2929
std::string_view dpll_mode_str(dpll_mode value);
3030
std::string_view dpll_lock_status_str(dpll_lock_status value);
3131
std::string_view dpll_lock_status_error_str(dpll_lock_status_error value);
32+
std::string_view dpll_clock_quality_level_str(dpll_clock_quality_level value);
3233
std::string_view dpll_type_str(dpll_type value);
3334
std::string_view dpll_pin_type_str(dpll_pin_type value);
3435
std::string_view dpll_pin_direction_str(dpll_pin_direction value);

‎generated/ethtool-user.cpp

Lines changed: 413 additions & 10 deletions
Large diffs are not rendered by default.

‎generated/ethtool-user.hpp

Lines changed: 85 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919

2020
#include "ynl.hpp"
2121

22+
#include <linux/ethtool_netlink_generated.h>
23+
#include <linux/ethtool.h>
24+
#include <linux/ethtool.h>
2225
#include <linux/ethtool.h>
2326

2427
namespace ynl_cpp {
@@ -31,8 +34,10 @@ std::string_view ethtool_stringset_str(ethtool_stringset value);
3134
std::string_view ethtool_header_flags_str(ethtool_header_flags value);
3235
std::string_view
3336
ethtool_module_fw_flash_status_str(ethtool_module_fw_flash_status value);
34-
std::string_view ethtool_c33_pse_ext_state_str(int value);
37+
std::string_view
38+
ethtool_c33_pse_ext_state_str(ethtool_c33_pse_ext_state value);
3539
std::string_view ethtool_phy_upstream_type_str(int value);
40+
std::string_view ethtool_tcp_data_split_str(ethtool_tcp_data_split value);
3641

3742
/* Common nested types */
3843
struct ethtool_header {
@@ -51,6 +56,12 @@ struct ethtool_ts_stat {
5156
std::optional<__u64> tx_pkts;
5257
std::optional<__u64> tx_lost;
5358
std::optional<__u64> tx_err;
59+
std::optional<__u64> tx_onestep_pkts_unconfirmed;
60+
};
61+
62+
struct ethtool_ts_hwtstamp_provider {
63+
std::optional<__u32> index;
64+
std::optional<__u32> qualifier;
5465
};
5566

5667
struct ethtool_cable_test_tdr_cfg {
@@ -152,6 +163,8 @@ struct ethtool_bitset {
152163
bool nomask{};
153164
std::optional<__u32> size;
154165
std::optional<ethtool_bitset_bits> bits;
166+
std::vector<__u8> value;
167+
std::vector<__u8> mask;
155168
};
156169

157170
struct ethtool_stringset_t {
@@ -579,12 +592,14 @@ struct ethtool_rings_get_rsp {
579592
std::optional<__u32> rx_jumbo;
580593
std::optional<__u32> tx;
581594
std::optional<__u32> rx_buf_len;
582-
std::optional<__u8> tcp_data_split;
595+
std::optional<ethtool_tcp_data_split> tcp_data_split;
583596
std::optional<__u32> cqe_size;
584597
std::optional<__u8> tx_push;
585598
std::optional<__u8> rx_push;
586599
std::optional<__u32> tx_push_buf_len;
587600
std::optional<__u32> tx_push_buf_len_max;
601+
std::optional<__u32> hds_thresh;
602+
std::optional<__u32> hds_thresh_max;
588603
};
589604

590605
/*
@@ -623,12 +638,14 @@ struct ethtool_rings_set_req {
623638
std::optional<__u32> rx_jumbo;
624639
std::optional<__u32> tx;
625640
std::optional<__u32> rx_buf_len;
626-
std::optional<__u8> tcp_data_split;
641+
std::optional<ethtool_tcp_data_split> tcp_data_split;
627642
std::optional<__u32> cqe_size;
628643
std::optional<__u8> tx_push;
629644
std::optional<__u8> rx_push;
630645
std::optional<__u32> tx_push_buf_len;
631646
std::optional<__u32> tx_push_buf_len_max;
647+
std::optional<__u32> hds_thresh;
648+
std::optional<__u32> hds_thresh_max;
632649
};
633650

634651
/*
@@ -913,6 +930,7 @@ int ethtool_eee_set(ynl_cpp::ynl_socket& ys, ethtool_eee_set_req& req);
913930
/* ETHTOOL_MSG_TSINFO_GET - do */
914931
struct ethtool_tsinfo_get_req {
915932
std::optional<ethtool_header> header;
933+
std::optional<ethtool_ts_hwtstamp_provider> hwtstamp_provider;
916934
};
917935

918936
struct ethtool_tsinfo_get_rsp {
@@ -922,6 +940,7 @@ struct ethtool_tsinfo_get_rsp {
922940
std::optional<ethtool_bitset> rx_filters;
923941
std::optional<__u32> phc_index;
924942
std::optional<ethtool_ts_stat> stats;
943+
std::optional<ethtool_ts_hwtstamp_provider> hwtstamp_provider;
925944
};
926945

927946
/*
@@ -933,6 +952,7 @@ ethtool_tsinfo_get(ynl_cpp::ynl_socket& ys, ethtool_tsinfo_get_req& req);
933952
/* ETHTOOL_MSG_TSINFO_GET - dump */
934953
struct ethtool_tsinfo_get_req_dump {
935954
std::optional<ethtool_header> header;
955+
std::optional<ethtool_ts_hwtstamp_provider> hwtstamp_provider;
936956
};
937957

938958
struct ethtool_tsinfo_get_list {
@@ -1214,7 +1234,7 @@ struct ethtool_pse_get_rsp {
12141234
std::optional<__u32> c33_pse_pw_d_status;
12151235
std::optional<__u32> c33_pse_pw_class;
12161236
std::optional<__u32> c33_pse_actual_pw;
1217-
std::optional<int> c33_pse_ext_state;
1237+
std::optional<ethtool_c33_pse_ext_state> c33_pse_ext_state;
12181238
std::optional<__u32> c33_pse_ext_substate;
12191239
std::optional<__u32> c33_pse_avail_pw_limit;
12201240
std::vector<ethtool_c33_pse_pw_limit> c33_pse_pw_limit_ranges;
@@ -1492,6 +1512,67 @@ struct ethtool_phy_get_list {
14921512
std::unique_ptr<ethtool_phy_get_list>
14931513
ethtool_phy_get_dump(ynl_cpp::ynl_socket& ys, ethtool_phy_get_req_dump& req);
14941514

1515+
/* ETHTOOL_MSG_PHY_GET - notify */
1516+
struct ethtool_phy_get_ntf {
1517+
};
1518+
1519+
/* ============== ETHTOOL_MSG_TSCONFIG_GET ============== */
1520+
/* ETHTOOL_MSG_TSCONFIG_GET - do */
1521+
struct ethtool_tsconfig_get_req {
1522+
std::optional<ethtool_header> header;
1523+
};
1524+
1525+
struct ethtool_tsconfig_get_rsp {
1526+
std::optional<ethtool_header> header;
1527+
std::optional<ethtool_ts_hwtstamp_provider> hwtstamp_provider;
1528+
std::optional<ethtool_bitset> tx_types;
1529+
std::optional<ethtool_bitset> rx_filters;
1530+
std::optional<__u32> hwtstamp_flags;
1531+
};
1532+
1533+
/*
1534+
* Get hwtstamp config.
1535+
*/
1536+
std::unique_ptr<ethtool_tsconfig_get_rsp>
1537+
ethtool_tsconfig_get(ynl_cpp::ynl_socket& ys, ethtool_tsconfig_get_req& req);
1538+
1539+
/* ETHTOOL_MSG_TSCONFIG_GET - dump */
1540+
struct ethtool_tsconfig_get_req_dump {
1541+
std::optional<ethtool_header> header;
1542+
};
1543+
1544+
struct ethtool_tsconfig_get_list {
1545+
std::list<ethtool_tsconfig_get_rsp> objs;
1546+
};
1547+
1548+
std::unique_ptr<ethtool_tsconfig_get_list>
1549+
ethtool_tsconfig_get_dump(ynl_cpp::ynl_socket& ys,
1550+
ethtool_tsconfig_get_req_dump& req);
1551+
1552+
/* ============== ETHTOOL_MSG_TSCONFIG_SET ============== */
1553+
/* ETHTOOL_MSG_TSCONFIG_SET - do */
1554+
struct ethtool_tsconfig_set_req {
1555+
std::optional<ethtool_header> header;
1556+
std::optional<ethtool_ts_hwtstamp_provider> hwtstamp_provider;
1557+
std::optional<ethtool_bitset> tx_types;
1558+
std::optional<ethtool_bitset> rx_filters;
1559+
std::optional<__u32> hwtstamp_flags;
1560+
};
1561+
1562+
struct ethtool_tsconfig_set_rsp {
1563+
std::optional<ethtool_header> header;
1564+
std::optional<ethtool_ts_hwtstamp_provider> hwtstamp_provider;
1565+
std::optional<ethtool_bitset> tx_types;
1566+
std::optional<ethtool_bitset> rx_filters;
1567+
std::optional<__u32> hwtstamp_flags;
1568+
};
1569+
1570+
/*
1571+
* Set hwtstamp config.
1572+
*/
1573+
std::unique_ptr<ethtool_tsconfig_set_rsp>
1574+
ethtool_tsconfig_set(ynl_cpp::ynl_socket& ys, ethtool_tsconfig_set_req& req);
1575+
14951576
/* ETHTOOL_MSG_CABLE_TEST_NTF - event */
14961577
struct ethtool_cable_test_ntf_rsp {
14971578
std::optional<ethtool_header> header;

‎generated/mptcp_pm-user.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ struct mptcp_pm_flush_addrs_req {
9393
};
9494

9595
/*
96-
* flush addresses
96+
* Flush addresses
9797
*/
9898
int mptcp_pm_flush_addrs(ynl_cpp::ynl_socket& ys,
9999
mptcp_pm_flush_addrs_req& req);
@@ -149,7 +149,7 @@ struct mptcp_pm_announce_req {
149149
};
150150

151151
/*
152-
* announce new sf
152+
* Announce new address
153153
*/
154154
int mptcp_pm_announce(ynl_cpp::ynl_socket& ys, mptcp_pm_announce_req& req);
155155

@@ -161,7 +161,7 @@ struct mptcp_pm_remove_req {
161161
};
162162

163163
/*
164-
* announce removal
164+
* Announce removal
165165
*/
166166
int mptcp_pm_remove(ynl_cpp::ynl_socket& ys, mptcp_pm_remove_req& req);
167167

@@ -174,7 +174,7 @@ struct mptcp_pm_subflow_create_req {
174174
};
175175

176176
/*
177-
* todo
177+
* Create subflow
178178
*/
179179
int mptcp_pm_subflow_create(ynl_cpp::ynl_socket& ys,
180180
mptcp_pm_subflow_create_req& req);
@@ -188,7 +188,7 @@ struct mptcp_pm_subflow_destroy_req {
188188
};
189189

190190
/*
191-
* todo
191+
* Destroy subflow
192192
*/
193193
int mptcp_pm_subflow_destroy(ynl_cpp::ynl_socket& ys,
194194
mptcp_pm_subflow_destroy_req& req);

‎generated/net_shaper-user.cpp

Lines changed: 562 additions & 0 deletions
Large diffs are not rendered by default.

‎generated/net_shaper-user.hpp

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
2+
/* Do not edit directly, auto-generated from: */
3+
/* */
4+
/* YNL-GEN user header */
5+
6+
#ifndef _LINUX_NET_SHAPER_GEN_H
7+
#define _LINUX_NET_SHAPER_GEN_H
8+
9+
#include <linux/types.h>
10+
#include <stdlib.h>
11+
#include <string.h>
12+
13+
#include <list>
14+
#include <memory>
15+
#include <optional>
16+
#include <string>
17+
#include <string_view>
18+
#include <vector>
19+
20+
#include "ynl.hpp"
21+
22+
#include <linux/net_shaper.h>
23+
24+
namespace ynl_cpp {
25+
const struct ynl_family& get_ynl_net_shaper_family();
26+
27+
/* Enums */
28+
std::string_view net_shaper_op_str(int op);
29+
std::string_view net_shaper_scope_str(net_shaper_scope value);
30+
std::string_view net_shaper_metric_str(net_shaper_metric value);
31+
32+
/* Common nested types */
33+
struct net_shaper_handle {
34+
std::optional<net_shaper_scope> scope;
35+
std::optional<__u32> id;
36+
};
37+
38+
struct net_shaper_leaf_info {
39+
std::optional<net_shaper_handle> handle;
40+
std::optional<__u32> priority;
41+
std::optional<__u32> weight;
42+
};
43+
44+
/* ============== NET_SHAPER_CMD_GET ============== */
45+
/* NET_SHAPER_CMD_GET - do */
46+
struct net_shaper_get_req {
47+
std::optional<__u32> ifindex;
48+
std::optional<net_shaper_handle> handle;
49+
};
50+
51+
struct net_shaper_get_rsp {
52+
std::optional<__u32> ifindex;
53+
std::optional<net_shaper_handle> parent;
54+
std::optional<net_shaper_handle> handle;
55+
std::optional<net_shaper_metric> metric;
56+
std::optional<__u64> bw_min;
57+
std::optional<__u64> bw_max;
58+
std::optional<__u64> burst;
59+
std::optional<__u32> priority;
60+
std::optional<__u32> weight;
61+
};
62+
63+
/*
64+
* Get information about a shaper for a given device.
65+
66+
*/
67+
std::unique_ptr<net_shaper_get_rsp>
68+
net_shaper_get(ynl_cpp::ynl_socket& ys, net_shaper_get_req& req);
69+
70+
/* NET_SHAPER_CMD_GET - dump */
71+
struct net_shaper_get_req_dump {
72+
std::optional<__u32> ifindex;
73+
};
74+
75+
struct net_shaper_get_list {
76+
std::list<net_shaper_get_rsp> objs;
77+
};
78+
79+
std::unique_ptr<net_shaper_get_list>
80+
net_shaper_get_dump(ynl_cpp::ynl_socket& ys, net_shaper_get_req_dump& req);
81+
82+
/* ============== NET_SHAPER_CMD_SET ============== */
83+
/* NET_SHAPER_CMD_SET - do */
84+
struct net_shaper_set_req {
85+
std::optional<__u32> ifindex;
86+
std::optional<net_shaper_handle> handle;
87+
std::optional<net_shaper_metric> metric;
88+
std::optional<__u64> bw_min;
89+
std::optional<__u64> bw_max;
90+
std::optional<__u64> burst;
91+
std::optional<__u32> priority;
92+
std::optional<__u32> weight;
93+
};
94+
95+
/*
96+
* Create or update the specified shaper.
97+
The set operation can't be used to create a @node scope shaper,
98+
use the @group operation instead.
99+
100+
*/
101+
int net_shaper_set(ynl_cpp::ynl_socket& ys, net_shaper_set_req& req);
102+
103+
/* ============== NET_SHAPER_CMD_DELETE ============== */
104+
/* NET_SHAPER_CMD_DELETE - do */
105+
struct net_shaper_delete_req {
106+
std::optional<__u32> ifindex;
107+
std::optional<net_shaper_handle> handle;
108+
};
109+
110+
/*
111+
* Clear (remove) the specified shaper. When deleting
112+
a @node shaper, reattach all the node's leaves to the
113+
deleted node's parent.
114+
If, after the removal, the parent shaper has no more
115+
leaves and the parent shaper scope is @node, the parent
116+
node is deleted, recursively.
117+
When deleting a @queue shaper or a @netdev shaper,
118+
the shaper disappears from the hierarchy, but the
119+
queue/device can still send traffic: it has an implicit
120+
node with infinite bandwidth. The queue's implicit node
121+
feeds an implicit RR node at the root of the hierarchy.
122+
123+
*/
124+
int net_shaper_delete(ynl_cpp::ynl_socket& ys, net_shaper_delete_req& req);
125+
126+
/* ============== NET_SHAPER_CMD_GROUP ============== */
127+
/* NET_SHAPER_CMD_GROUP - do */
128+
struct net_shaper_group_req {
129+
std::optional<__u32> ifindex;
130+
std::optional<net_shaper_handle> parent;
131+
std::optional<net_shaper_handle> handle;
132+
std::optional<net_shaper_metric> metric;
133+
std::optional<__u64> bw_min;
134+
std::optional<__u64> bw_max;
135+
std::optional<__u64> burst;
136+
std::optional<__u32> priority;
137+
std::optional<__u32> weight;
138+
std::vector<net_shaper_leaf_info> leaves;
139+
};
140+
141+
struct net_shaper_group_rsp {
142+
std::optional<__u32> ifindex;
143+
std::optional<net_shaper_handle> handle;
144+
};
145+
146+
/*
147+
* Create or update a scheduling group, attaching the specified
148+
@leaves shapers under the specified node identified by @handle.
149+
The @leaves shapers scope must be @queue and the node shaper
150+
scope must be either @node or @netdev.
151+
When the node shaper has @node scope, if the @handle @id is not
152+
specified, a new shaper of such scope is created, otherwise the
153+
specified node must already exist.
154+
When updating an existing node shaper, the specified @leaves are
155+
added to the existing node; such node will also retain any preexisting
156+
leave.
157+
The @parent handle for a new node shaper defaults to the parent
158+
of all the leaves, provided all the leaves share the same parent.
159+
Otherwise @parent handle must be specified.
160+
The user can optionally provide shaping attributes for the node
161+
shaper.
162+
The operation is atomic, on failure no change is applied to
163+
the device shaping configuration, otherwise the @node shaper
164+
full identifier, comprising @binding and @handle, is provided
165+
as the reply.
166+
167+
*/
168+
std::unique_ptr<net_shaper_group_rsp>
169+
net_shaper_group(ynl_cpp::ynl_socket& ys, net_shaper_group_req& req);
170+
171+
/* ============== NET_SHAPER_CMD_CAP_GET ============== */
172+
/* NET_SHAPER_CMD_CAP_GET - do */
173+
struct net_shaper_cap_get_req {
174+
std::optional<__u32> ifindex;
175+
std::optional<net_shaper_scope> scope;
176+
};
177+
178+
struct net_shaper_cap_get_rsp {
179+
std::optional<__u32> ifindex;
180+
std::optional<net_shaper_scope> scope;
181+
bool support_metric_bps{};
182+
bool support_metric_pps{};
183+
bool support_nesting{};
184+
bool support_bw_min{};
185+
bool support_bw_max{};
186+
bool support_burst{};
187+
bool support_priority{};
188+
bool support_weight{};
189+
};
190+
191+
/*
192+
* Get the shaper capabilities supported by the given device
193+
for the specified scope.
194+
195+
*/
196+
std::unique_ptr<net_shaper_cap_get_rsp>
197+
net_shaper_cap_get(ynl_cpp::ynl_socket& ys, net_shaper_cap_get_req& req);
198+
199+
/* NET_SHAPER_CMD_CAP_GET - dump */
200+
struct net_shaper_cap_get_req_dump {
201+
std::optional<__u32> ifindex;
202+
};
203+
204+
struct net_shaper_cap_get_list {
205+
std::list<net_shaper_cap_get_rsp> objs;
206+
};
207+
208+
std::unique_ptr<net_shaper_cap_get_list>
209+
net_shaper_cap_get_dump(ynl_cpp::ynl_socket& ys,
210+
net_shaper_cap_get_req_dump& req);
211+
212+
} //namespace ynl_cpp
213+
#endif /* _LINUX_NET_SHAPER_GEN_H */

‎generated/netdev-user.cpp

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
namespace ynl_cpp {
1515

1616
/* Enums */
17-
static constexpr std::array<std::string_view, NETDEV_CMD_BIND_RX + 1> netdev_op_strmap = []() {
18-
std::array<std::string_view, NETDEV_CMD_BIND_RX + 1> arr{};
17+
static constexpr std::array<std::string_view, NETDEV_CMD_NAPI_SET + 1> netdev_op_strmap = []() {
18+
std::array<std::string_view, NETDEV_CMD_NAPI_SET + 1> arr{};
1919
arr[NETDEV_CMD_DEV_GET] = "dev-get";
2020
arr[NETDEV_CMD_DEV_ADD_NTF] = "dev-add-ntf";
2121
arr[NETDEV_CMD_DEV_DEL_NTF] = "dev-del-ntf";
@@ -29,6 +29,7 @@ static constexpr std::array<std::string_view, NETDEV_CMD_BIND_RX + 1> netdev_op_
2929
arr[NETDEV_CMD_NAPI_GET] = "napi-get";
3030
arr[NETDEV_CMD_QSTATS_GET] = "qstats-get";
3131
arr[NETDEV_CMD_BIND_RX] = "bind-rx";
32+
arr[NETDEV_CMD_NAPI_SET] = "napi-set";
3233
return arr;
3334
} ();
3435

@@ -219,6 +220,9 @@ static std::array<ynl_policy_attr,NETDEV_A_NAPI_MAX + 1> netdev_napi_policy = []
219220
arr[NETDEV_A_NAPI_ID] = { .name = "id", .type = YNL_PT_U32, };
220221
arr[NETDEV_A_NAPI_IRQ] = { .name = "irq", .type = YNL_PT_U32, };
221222
arr[NETDEV_A_NAPI_PID] = { .name = "pid", .type = YNL_PT_U32, };
223+
arr[NETDEV_A_NAPI_DEFER_HARD_IRQS] = { .name = "defer-hard-irqs", .type = YNL_PT_U32, };
224+
arr[NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT] = { .name = "gro-flush-timeout", .type = YNL_PT_UINT, };
225+
arr[NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT] = { .name = "irq-suspend-timeout", .type = YNL_PT_UINT, };
222226
return arr;
223227
} ();
224228

@@ -782,6 +786,18 @@ int netdev_napi_get_rsp_parse(const struct nlmsghdr *nlh,
782786
if (ynl_attr_validate(yarg, attr))
783787
return YNL_PARSE_CB_ERROR;
784788
dst->pid = (__u32)ynl_attr_get_u32(attr);
789+
} else if (type == NETDEV_A_NAPI_DEFER_HARD_IRQS) {
790+
if (ynl_attr_validate(yarg, attr))
791+
return YNL_PARSE_CB_ERROR;
792+
dst->defer_hard_irqs = (__u32)ynl_attr_get_u32(attr);
793+
} else if (type == NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT) {
794+
if (ynl_attr_validate(yarg, attr))
795+
return YNL_PARSE_CB_ERROR;
796+
dst->gro_flush_timeout = (__u64)ynl_attr_get_uint(attr);
797+
} else if (type == NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT) {
798+
if (ynl_attr_validate(yarg, attr))
799+
return YNL_PARSE_CB_ERROR;
800+
dst->irq_suspend_timeout = (__u64)ynl_attr_get_uint(attr);
785801
}
786802
}
787803

@@ -976,6 +992,33 @@ netdev_bind_rx(ynl_cpp::ynl_socket& ys, netdev_bind_rx_req& req)
976992
return rsp;
977993
}
978994

995+
/* ============== NETDEV_CMD_NAPI_SET ============== */
996+
/* NETDEV_CMD_NAPI_SET - do */
997+
int netdev_napi_set(ynl_cpp::ynl_socket& ys, netdev_napi_set_req& req)
998+
{
999+
struct ynl_req_state yrs = { .yarg = { .ys = ys, }, };
1000+
struct nlmsghdr *nlh;
1001+
int err;
1002+
1003+
nlh = ynl_gemsg_start_req(ys, ((struct ynl_sock*)ys)->family_id, NETDEV_CMD_NAPI_SET, 1);
1004+
((struct ynl_sock*)ys)->req_policy = &netdev_napi_nest;
1005+
1006+
if (req.id.has_value())
1007+
ynl_attr_put_u32(nlh, NETDEV_A_NAPI_ID, req.id.value());
1008+
if (req.defer_hard_irqs.has_value())
1009+
ynl_attr_put_u32(nlh, NETDEV_A_NAPI_DEFER_HARD_IRQS, req.defer_hard_irqs.value());
1010+
if (req.gro_flush_timeout.has_value())
1011+
ynl_attr_put_uint(nlh, NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT, req.gro_flush_timeout.value());
1012+
if (req.irq_suspend_timeout.has_value())
1013+
ynl_attr_put_uint(nlh, NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT, req.irq_suspend_timeout.value());
1014+
1015+
err = ynl_exec(ys, nlh, &yrs);
1016+
if (err < 0)
1017+
return -1;
1018+
1019+
return 0;
1020+
}
1021+
9791022
static constexpr std::array<ynl_ntf_info, NETDEV_CMD_PAGE_POOL_CHANGE_NTF + 1> netdev_ntf_info = []() {
9801023
std::array<ynl_ntf_info, NETDEV_CMD_PAGE_POOL_CHANGE_NTF + 1> arr{};
9811024
arr[NETDEV_CMD_DEV_ADD_NTF] = {

‎generated/netdev-user.hpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ struct netdev_napi_get_rsp {
192192
std::optional<__u32> ifindex;
193193
std::optional<__u32> irq;
194194
std::optional<__u32> pid;
195+
std::optional<__u32> defer_hard_irqs;
196+
std::optional<__u64> gro_flush_timeout;
197+
std::optional<__u64> irq_suspend_timeout;
195198
};
196199

197200
/*
@@ -255,5 +258,19 @@ struct netdev_bind_rx_rsp {
255258
std::unique_ptr<netdev_bind_rx_rsp>
256259
netdev_bind_rx(ynl_cpp::ynl_socket& ys, netdev_bind_rx_req& req);
257260

261+
/* ============== NETDEV_CMD_NAPI_SET ============== */
262+
/* NETDEV_CMD_NAPI_SET - do */
263+
struct netdev_napi_set_req {
264+
std::optional<__u32> id;
265+
std::optional<__u32> defer_hard_irqs;
266+
std::optional<__u64> gro_flush_timeout;
267+
std::optional<__u64> irq_suspend_timeout;
268+
};
269+
270+
/*
271+
* Set configurable NAPI instance settings.
272+
*/
273+
int netdev_napi_set(ynl_cpp::ynl_socket& ys, netdev_napi_set_req& req);
274+
258275
} //namespace ynl_cpp
259276
#endif /* _LINUX_NETDEV_GEN_H */

‎linux/dpll.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,29 @@ enum dpll_lock_status_error {
7979
DPLL_LOCK_STATUS_ERROR_MAX = (__DPLL_LOCK_STATUS_ERROR_MAX - 1)
8080
};
8181

82+
/*
83+
* level of quality of a clock device. This mainly applies when the dpll
84+
* lock-status is DPLL_LOCK_STATUS_HOLDOVER. The current list is defined
85+
* according to the table 11-7 contained in ITU-T G.8264/Y.1364 document. One
86+
* may extend this list freely by other ITU-T defined clock qualities, or
87+
* different ones defined by another standardization body (for those, please
88+
* use different prefix).
89+
*/
90+
enum dpll_clock_quality_level {
91+
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_PRC = 1,
92+
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_SSU_A,
93+
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_SSU_B,
94+
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EEC1,
95+
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_PRTC,
96+
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EPRTC,
97+
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EEEC,
98+
DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EPRC,
99+
100+
/* private: */
101+
__DPLL_CLOCK_QUALITY_LEVEL_MAX,
102+
DPLL_CLOCK_QUALITY_LEVEL_MAX = (__DPLL_CLOCK_QUALITY_LEVEL_MAX - 1)
103+
};
104+
82105
#define DPLL_TEMP_DIVIDER 1000
83106

84107
/**
@@ -180,6 +203,7 @@ enum dpll_a {
180203
DPLL_A_TEMP,
181204
DPLL_A_TYPE,
182205
DPLL_A_LOCK_STATUS_ERROR,
206+
DPLL_A_CLOCK_QUALITY_LEVEL,
183207

184208
__DPLL_A_MAX,
185209
DPLL_A_MAX = (__DPLL_A_MAX - 1)

‎linux/ethtool.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,7 @@ enum ethtool_link_ext_substate_module {
681681
* @ETH_SS_STATS_ETH_MAC: names of IEEE 802.3 MAC statistics
682682
* @ETH_SS_STATS_ETH_CTRL: names of IEEE 802.3 MAC Control statistics
683683
* @ETH_SS_STATS_RMON: names of RMON statistics
684+
* @ETH_SS_STATS_PHY: names of PHY(dev) statistics
684685
*
685686
* @ETH_SS_COUNT: number of defined string sets
686687
*/
@@ -706,6 +707,7 @@ enum ethtool_stringset {
706707
ETH_SS_STATS_ETH_MAC,
707708
ETH_SS_STATS_ETH_CTRL,
708709
ETH_SS_STATS_RMON,
710+
ETH_SS_STATS_PHY,
709711

710712
/* add new constants above here */
711713
ETH_SS_COUNT
@@ -2055,6 +2057,24 @@ enum ethtool_link_mode_bit_indices {
20552057
ETHTOOL_LINK_MODE_10baseT1S_Half_BIT = 100,
20562058
ETHTOOL_LINK_MODE_10baseT1S_P2MP_Half_BIT = 101,
20572059
ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT = 102,
2060+
ETHTOOL_LINK_MODE_200000baseCR_Full_BIT = 103,
2061+
ETHTOOL_LINK_MODE_200000baseKR_Full_BIT = 104,
2062+
ETHTOOL_LINK_MODE_200000baseDR_Full_BIT = 105,
2063+
ETHTOOL_LINK_MODE_200000baseDR_2_Full_BIT = 106,
2064+
ETHTOOL_LINK_MODE_200000baseSR_Full_BIT = 107,
2065+
ETHTOOL_LINK_MODE_200000baseVR_Full_BIT = 108,
2066+
ETHTOOL_LINK_MODE_400000baseCR2_Full_BIT = 109,
2067+
ETHTOOL_LINK_MODE_400000baseKR2_Full_BIT = 110,
2068+
ETHTOOL_LINK_MODE_400000baseDR2_Full_BIT = 111,
2069+
ETHTOOL_LINK_MODE_400000baseDR2_2_Full_BIT = 112,
2070+
ETHTOOL_LINK_MODE_400000baseSR2_Full_BIT = 113,
2071+
ETHTOOL_LINK_MODE_400000baseVR2_Full_BIT = 114,
2072+
ETHTOOL_LINK_MODE_800000baseCR4_Full_BIT = 115,
2073+
ETHTOOL_LINK_MODE_800000baseKR4_Full_BIT = 116,
2074+
ETHTOOL_LINK_MODE_800000baseDR4_Full_BIT = 117,
2075+
ETHTOOL_LINK_MODE_800000baseDR4_2_Full_BIT = 118,
2076+
ETHTOOL_LINK_MODE_800000baseSR4_Full_BIT = 119,
2077+
ETHTOOL_LINK_MODE_800000baseVR4_Full_BIT = 120,
20582078

20592079
/* must be last entry */
20602080
__ETHTOOL_LINK_MODE_MASK_NBITS
@@ -2526,12 +2546,19 @@ struct ethtool_link_settings {
25262546
__u8 master_slave_state;
25272547
__u8 rate_matching;
25282548
__u32 reserved[7];
2549+
#ifndef __KERNEL__
2550+
/* Linux builds with -Wflex-array-member-not-at-end but does
2551+
* not use the "link_mode_masks" member. Leave it defined for
2552+
* userspace for now, and when userspace wants to start using
2553+
* -Wfamnae, we'll need a new solution.
2554+
*/
25292555
__u32 link_mode_masks[];
25302556
/* layout of link_mode_masks fields:
25312557
* __u32 map_supported[link_mode_masks_nwords];
25322558
* __u32 map_advertising[link_mode_masks_nwords];
25332559
* __u32 map_lp_advertising[link_mode_masks_nwords];
25342560
*/
2561+
#endif
25352562
};
25362563

25372564
/**

‎linux/ethtool_netlink.h

Lines changed: 11 additions & 888 deletions
Large diffs are not rendered by default.

‎linux/ethtool_netlink_generated.h

Lines changed: 821 additions & 0 deletions
Large diffs are not rendered by default.

‎linux/mptcp_pm.h

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,33 @@
1212
/**
1313
* enum mptcp_event_type
1414
* @MPTCP_EVENT_UNSPEC: unused event
15-
* @MPTCP_EVENT_CREATED: token, family, saddr4 | saddr6, daddr4 | daddr6,
16-
* sport, dport A new MPTCP connection has been created. It is the good time
17-
* to allocate memory and send ADD_ADDR if needed. Depending on the
15+
* @MPTCP_EVENT_CREATED: A new MPTCP connection has been created. It is the
16+
* good time to allocate memory and send ADD_ADDR if needed. Depending on the
1817
* traffic-patterns it can take a long time until the MPTCP_EVENT_ESTABLISHED
19-
* is sent.
20-
* @MPTCP_EVENT_ESTABLISHED: token, family, saddr4 | saddr6, daddr4 | daddr6,
21-
* sport, dport A MPTCP connection is established (can start new subflows).
22-
* @MPTCP_EVENT_CLOSED: token A MPTCP connection has stopped.
23-
* @MPTCP_EVENT_ANNOUNCED: token, rem_id, family, daddr4 | daddr6 [, dport] A
24-
* new address has been announced by the peer.
25-
* @MPTCP_EVENT_REMOVED: token, rem_id An address has been lost by the peer.
26-
* @MPTCP_EVENT_SUB_ESTABLISHED: token, family, loc_id, rem_id, saddr4 |
27-
* saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error] A new
28-
* subflow has been established. 'error' should not be set.
29-
* @MPTCP_EVENT_SUB_CLOSED: token, family, loc_id, rem_id, saddr4 | saddr6,
30-
* daddr4 | daddr6, sport, dport, backup, if_idx [, error] A subflow has been
31-
* closed. An error (copy of sk_err) could be set if an error has been
32-
* detected for this subflow.
33-
* @MPTCP_EVENT_SUB_PRIORITY: token, family, loc_id, rem_id, saddr4 | saddr6,
34-
* daddr4 | daddr6, sport, dport, backup, if_idx [, error] The priority of a
35-
* subflow has changed. 'error' should not be set.
36-
* @MPTCP_EVENT_LISTENER_CREATED: family, sport, saddr4 | saddr6 A new PM
37-
* listener is created.
38-
* @MPTCP_EVENT_LISTENER_CLOSED: family, sport, saddr4 | saddr6 A PM listener
39-
* is closed.
18+
* is sent. Attributes: token, family, saddr4 | saddr6, daddr4 | daddr6,
19+
* sport, dport, server-side.
20+
* @MPTCP_EVENT_ESTABLISHED: A MPTCP connection is established (can start new
21+
* subflows). Attributes: token, family, saddr4 | saddr6, daddr4 | daddr6,
22+
* sport, dport, server-side.
23+
* @MPTCP_EVENT_CLOSED: A MPTCP connection has stopped. Attribute: token.
24+
* @MPTCP_EVENT_ANNOUNCED: A new address has been announced by the peer.
25+
* Attributes: token, rem_id, family, daddr4 | daddr6 [, dport].
26+
* @MPTCP_EVENT_REMOVED: An address has been lost by the peer. Attributes:
27+
* token, rem_id.
28+
* @MPTCP_EVENT_SUB_ESTABLISHED: A new subflow has been established. 'error'
29+
* should not be set. Attributes: token, family, loc_id, rem_id, saddr4 |
30+
* saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error].
31+
* @MPTCP_EVENT_SUB_CLOSED: A subflow has been closed. An error (copy of
32+
* sk_err) could be set if an error has been detected for this subflow.
33+
* Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 |
34+
* daddr6, sport, dport, backup, if_idx [, error].
35+
* @MPTCP_EVENT_SUB_PRIORITY: The priority of a subflow has changed. 'error'
36+
* should not be set. Attributes: token, family, loc_id, rem_id, saddr4 |
37+
* saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error].
38+
* @MPTCP_EVENT_LISTENER_CREATED: A new PM listener is created. Attributes:
39+
* family, sport, saddr4 | saddr6.
40+
* @MPTCP_EVENT_LISTENER_CLOSED: A PM listener is closed. Attributes: family,
41+
* sport, saddr4 | saddr6.
4042
*/
4143
enum mptcp_event_type {
4244
MPTCP_EVENT_UNSPEC,

‎linux/net_shaper.h

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
2+
/* Do not edit directly, auto-generated from: */
3+
/* Documentation/netlink/specs/net_shaper.yaml */
4+
/* YNL-GEN uapi header */
5+
6+
#ifndef _UAPI_LINUX_NET_SHAPER_H
7+
#define _UAPI_LINUX_NET_SHAPER_H
8+
9+
#define NET_SHAPER_FAMILY_NAME "net-shaper"
10+
#define NET_SHAPER_FAMILY_VERSION 1
11+
12+
/**
13+
* enum net_shaper_scope - Defines the shaper @id interpretation.
14+
* @NET_SHAPER_SCOPE_UNSPEC: The scope is not specified.
15+
* @NET_SHAPER_SCOPE_NETDEV: The main shaper for the given network device.
16+
* @NET_SHAPER_SCOPE_QUEUE: The shaper is attached to the given device queue,
17+
* the @id represents the queue number.
18+
* @NET_SHAPER_SCOPE_NODE: The shaper allows grouping of queues or other node
19+
* shapers; can be nested in either @netdev shapers or other @node shapers,
20+
* allowing placement in any location of the scheduling tree, except leaves
21+
* and root.
22+
*/
23+
enum net_shaper_scope {
24+
NET_SHAPER_SCOPE_UNSPEC,
25+
NET_SHAPER_SCOPE_NETDEV,
26+
NET_SHAPER_SCOPE_QUEUE,
27+
NET_SHAPER_SCOPE_NODE,
28+
29+
/* private: */
30+
__NET_SHAPER_SCOPE_MAX,
31+
NET_SHAPER_SCOPE_MAX = (__NET_SHAPER_SCOPE_MAX - 1)
32+
};
33+
34+
/**
35+
* enum net_shaper_metric - Different metric supported by the shaper.
36+
* @NET_SHAPER_METRIC_BPS: Shaper operates on a bits per second basis.
37+
* @NET_SHAPER_METRIC_PPS: Shaper operates on a packets per second basis.
38+
*/
39+
enum net_shaper_metric {
40+
NET_SHAPER_METRIC_BPS,
41+
NET_SHAPER_METRIC_PPS,
42+
};
43+
44+
enum {
45+
NET_SHAPER_A_HANDLE = 1,
46+
NET_SHAPER_A_METRIC,
47+
NET_SHAPER_A_BW_MIN,
48+
NET_SHAPER_A_BW_MAX,
49+
NET_SHAPER_A_BURST,
50+
NET_SHAPER_A_PRIORITY,
51+
NET_SHAPER_A_WEIGHT,
52+
NET_SHAPER_A_IFINDEX,
53+
NET_SHAPER_A_PARENT,
54+
NET_SHAPER_A_LEAVES,
55+
56+
__NET_SHAPER_A_MAX,
57+
NET_SHAPER_A_MAX = (__NET_SHAPER_A_MAX - 1)
58+
};
59+
60+
enum {
61+
NET_SHAPER_A_HANDLE_SCOPE = 1,
62+
NET_SHAPER_A_HANDLE_ID,
63+
64+
__NET_SHAPER_A_HANDLE_MAX,
65+
NET_SHAPER_A_HANDLE_MAX = (__NET_SHAPER_A_HANDLE_MAX - 1)
66+
};
67+
68+
enum {
69+
NET_SHAPER_A_CAPS_IFINDEX = 1,
70+
NET_SHAPER_A_CAPS_SCOPE,
71+
NET_SHAPER_A_CAPS_SUPPORT_METRIC_BPS,
72+
NET_SHAPER_A_CAPS_SUPPORT_METRIC_PPS,
73+
NET_SHAPER_A_CAPS_SUPPORT_NESTING,
74+
NET_SHAPER_A_CAPS_SUPPORT_BW_MIN,
75+
NET_SHAPER_A_CAPS_SUPPORT_BW_MAX,
76+
NET_SHAPER_A_CAPS_SUPPORT_BURST,
77+
NET_SHAPER_A_CAPS_SUPPORT_PRIORITY,
78+
NET_SHAPER_A_CAPS_SUPPORT_WEIGHT,
79+
80+
__NET_SHAPER_A_CAPS_MAX,
81+
NET_SHAPER_A_CAPS_MAX = (__NET_SHAPER_A_CAPS_MAX - 1)
82+
};
83+
84+
enum {
85+
NET_SHAPER_CMD_GET = 1,
86+
NET_SHAPER_CMD_SET,
87+
NET_SHAPER_CMD_DELETE,
88+
NET_SHAPER_CMD_GROUP,
89+
NET_SHAPER_CMD_CAP_GET,
90+
91+
__NET_SHAPER_CMD_MAX,
92+
NET_SHAPER_CMD_MAX = (__NET_SHAPER_CMD_MAX - 1)
93+
};
94+
95+
#endif /* _UAPI_LINUX_NET_SHAPER_H */

‎linux/netdev.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ enum {
122122
NETDEV_A_NAPI_ID,
123123
NETDEV_A_NAPI_IRQ,
124124
NETDEV_A_NAPI_PID,
125+
NETDEV_A_NAPI_DEFER_HARD_IRQS,
126+
NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT,
127+
NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT,
125128

126129
__NETDEV_A_NAPI_MAX,
127130
NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1)
@@ -199,6 +202,7 @@ enum {
199202
NETDEV_CMD_NAPI_GET,
200203
NETDEV_CMD_QSTATS_GET,
201204
NETDEV_CMD_BIND_RX,
205+
NETDEV_CMD_NAPI_SET,
202206

203207
__NETDEV_CMD_MAX,
204208
NETDEV_CMD_MAX = (__NETDEV_CMD_MAX - 1)

0 commit comments

Comments
 (0)
Please sign in to comment.