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