1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2
3name: ethtool
4
5protocol: genetlink-legacy
6
7doc: Partial family for Ethtool Netlink.
8
9attribute-sets:
10  -
11    name: header
12    attributes:
13      -
14        name: dev-index
15        type: u32
16      -
17        name: dev-name
18        type: string
19      -
20        name: flags
21        type: u32
22
23  -
24    name: bitset-bit
25    attributes:
26      -
27        name: index
28        type: u32
29      -
30        name: name
31        type: string
32      -
33        name: value
34        type: flag
35  -
36    name: bitset-bits
37    attributes:
38      -
39        name: bit
40        type: nest
41        nested-attributes: bitset-bit
42  -
43    name: bitset
44    attributes:
45      -
46        name: nomask
47        type: flag
48      -
49        name: size
50        type: u32
51      -
52        name: bits
53        type: nest
54        nested-attributes: bitset-bits
55
56  -
57    name: string
58    attributes:
59      -
60        name: index
61        type: u32
62      -
63        name: value
64        type: string
65  -
66    name: strings
67    attributes:
68      -
69        name: string
70        type: nest
71        multi-attr: true
72        nested-attributes: string
73  -
74    name: stringset
75    attributes:
76      -
77        name: id
78        type: u32
79      -
80        name: count
81        type: u32
82      -
83        name: strings
84        type: nest
85        multi-attr: true
86        nested-attributes: strings
87  -
88    name: stringsets
89    attributes:
90      -
91        name: stringset
92        type: nest
93        multi-attr: true
94        nested-attributes: stringset
95  -
96    name: strset
97    attributes:
98      -
99        name: header
100        type: nest
101        nested-attributes: header
102      -
103        name: stringsets
104        type: nest
105        nested-attributes: stringsets
106      -
107        name: counts-only
108        type: flag
109
110  -
111    name: privflags
112    attributes:
113      -
114        name: header
115        type: nest
116        nested-attributes: header
117      -
118        name: flags
119        type: nest
120        nested-attributes: bitset
121
122  -
123    name: rings
124    attributes:
125      -
126        name: header
127        type: nest
128        nested-attributes: header
129      -
130        name: rx-max
131        type: u32
132      -
133        name: rx-mini-max
134        type: u32
135      -
136        name: rx-jumbo-max
137        type: u32
138      -
139        name: tx-max
140        type: u32
141      -
142        name: rx
143        type: u32
144      -
145        name: rx-mini
146        type: u32
147      -
148        name: rx-jumbo
149        type: u32
150      -
151        name: tx
152        type: u32
153      -
154        name: rx-buf-len
155        type: u32
156      -
157        name: tcp-data-split
158        type: u8
159      -
160        name: cqe-size
161        type: u32
162      -
163        name: tx-push
164        type: u8
165      -
166        name: rx-push
167        type: u8
168      -
169        name: tx-push-buf-len
170        type: u32
171      -
172        name: tx-push-buf-len-max
173        type: u32
174
175  -
176    name: mm-stat
177    attributes:
178      -
179        name: pad
180        type: pad
181      -
182        name: reassembly-errors
183        type: u64
184      -
185        name: smd-errors
186        type: u64
187      -
188        name: reassembly-ok
189        type: u64
190      -
191        name: rx-frag-count
192        type: u64
193      -
194        name: tx-frag-count
195        type: u64
196      -
197        name: hold-count
198        type: u64
199  -
200    name: mm
201    attributes:
202      -
203        name: header
204        type: nest
205        nested-attributes: header
206      -
207        name: pmac-enabled
208        type: u8
209      -
210        name: tx-enabled
211        type: u8
212      -
213        name: tx-active
214        type: u8
215      -
216        name: tx-min-frag-size
217        type: u32
218      -
219        name: tx-min-frag-size
220        type: u32
221      -
222        name: verify-enabled
223        type: u8
224      -
225        name: verify-status
226        type: u8
227      -
228        name: verify-time
229        type: u32
230      -
231        name: max-verify-time
232        type: u32
233      -
234        name: stats
235        type: nest
236        nested-attributes: mm-stat
237
238operations:
239  enum-model: directional
240  list:
241    -
242      name: strset-get
243      doc: Get string set from the kernel.
244
245      attribute-set: strset
246
247      do: &strset-get-op
248        request:
249          attributes:
250            - header
251            - stringsets
252            - counts-only
253        reply:
254          attributes:
255            - header
256            - stringsets
257      dump: *strset-get-op
258
259    # TODO: fill in the requests in between
260
261    -
262      name: privflags-get
263      doc: Get device private flags.
264
265      attribute-set: privflags
266
267      do: &privflag-get-op
268        request:
269          value: 13
270          attributes:
271            - header
272        reply:
273          value: 14
274          attributes:
275            - header
276            - flags
277      dump: *privflag-get-op
278    -
279      name: privflags-set
280      doc: Set device private flags.
281
282      attribute-set: privflags
283
284      do:
285        request:
286          attributes:
287            - header
288            - flags
289    -
290      name: privflags-ntf
291      doc: Notification for change in device private flags.
292      notify: privflags-get
293
294    -
295      name: rings-get
296      doc: Get ring params.
297
298      attribute-set: rings
299
300      do: &ring-get-op
301        request:
302          attributes:
303            - header
304        reply:
305          attributes:
306            - header
307            - rx-max
308            - rx-mini-max
309            - rx-jumbo-max
310            - tx-max
311            - rx
312            - rx-mini
313            - rx-jumbo
314            - tx
315            - rx-buf-len
316            - tcp-data-split
317            - cqe-size
318            - tx-push
319            - rx-push
320            - tx-push-buf-len
321            - tx-push-buf-len-max
322      dump: *ring-get-op
323    -
324      name: rings-set
325      doc: Set ring params.
326
327      attribute-set: rings
328
329      do:
330        request:
331          attributes:
332            - header
333            - rx
334            - rx-mini
335            - rx-jumbo
336            - tx
337            - rx-buf-len
338            - tcp-data-split
339            - cqe-size
340            - tx-push
341            - rx-push
342    -
343      name: rings-ntf
344      doc: Notification for change in ring params.
345      notify: rings-get
346
347    # TODO: fill in the requests in between
348
349    -
350      name: mm-get
351      doc: Get MAC Merge configuration and state
352
353      attribute-set: mm
354
355      do: &mm-get-op
356        request:
357          value: 42
358          attributes:
359            - header
360        reply:
361          value: 42
362          attributes:
363            - header
364            - pmac-enabled
365            - tx-enabled
366            - tx-active
367            - tx-min-frag-size
368            - rx-min-frag-size
369            - verify-enabled
370            - verify-time
371            - max-verify-time
372            - stats
373      dump: *mm-get-op
374    -
375      name: mm-set
376      doc: Set MAC Merge configuration
377
378      attribute-set: mm
379
380      do:
381        request:
382          attributes:
383            - header
384            - verify-enabled
385            - verify-time
386            - tx-enabled
387            - pmac-enabled
388            - tx-min-frag-size
389    -
390      name: mm-ntf
391      doc: Notification for change in MAC Merge configuration.
392      notify: mm-get
393