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        name: rx-push
176        type: u8
177
178  -
179    name: mm-stat
180    attributes:
181      -
182        name: pad
183        value: 1
184        type: pad
185      -
186        name: reassembly-errors
187        type: u64
188      -
189        name: smd-errors
190        type: u64
191      -
192        name: reassembly-ok
193        type: u64
194      -
195        name: rx-frag-count
196        type: u64
197      -
198        name: tx-frag-count
199        type: u64
200      -
201        name: hold-count
202        type: u64
203  -
204    name: mm
205    attributes:
206      -
207        name: header
208        value: 1
209        type: nest
210        nested-attributes: header
211      -
212        name: pmac-enabled
213        type: u8
214      -
215        name: tx-enabled
216        type: u8
217      -
218        name: tx-active
219        type: u8
220      -
221        name: tx-min-frag-size
222        type: u32
223      -
224        name: tx-min-frag-size
225        type: u32
226      -
227        name: verify-enabled
228        type: u8
229      -
230        name: verify-status
231        type: u8
232      -
233        name: verify-time
234        type: u32
235      -
236        name: max-verify-time
237        type: u32
238      -
239        name: stats
240        type: nest
241        nested-attributes: mm-stat
242
243operations:
244  enum-model: directional
245  list:
246    -
247      name: strset-get
248      doc: Get string set from the kernel.
249
250      attribute-set: strset
251
252      do: &strset-get-op
253        request:
254          value: 1
255          attributes:
256            - header
257            - stringsets
258            - counts-only
259        reply:
260          value: 1
261          attributes:
262            - header
263            - stringsets
264      dump: *strset-get-op
265
266    # TODO: fill in the requests in between
267
268    -
269      name: privflags-get
270      doc: Get device private flags.
271
272      attribute-set: privflags
273
274      do: &privflag-get-op
275        request:
276          value: 13
277          attributes:
278            - header
279        reply:
280          value: 14
281          attributes:
282            - header
283            - flags
284      dump: *privflag-get-op
285    -
286      name: privflags-set
287      doc: Set device private flags.
288
289      attribute-set: privflags
290
291      do:
292        request:
293          attributes:
294            - header
295            - flags
296    -
297      name: privflags-ntf
298      doc: Notification for change in device private flags.
299      notify: privflags-get
300
301    -
302      name: rings-get
303      doc: Get ring params.
304
305      attribute-set: rings
306
307      do: &ring-get-op
308        request:
309          attributes:
310            - header
311        reply:
312          attributes:
313            - header
314            - rx-max
315            - rx-mini-max
316            - rx-jumbo-max
317            - tx-max
318            - rx
319            - rx-mini
320            - rx-jumbo
321            - tx
322            - rx-buf-len
323            - tcp-data-split
324            - cqe-size
325            - tx-push
326            - rx-push
327      dump: *ring-get-op
328    -
329      name: rings-set
330      doc: Set ring params.
331
332      attribute-set: rings
333
334      do:
335        request:
336          attributes:
337            - header
338            - rx
339            - rx-mini
340            - rx-jumbo
341            - tx
342            - rx-buf-len
343            - tcp-data-split
344            - cqe-size
345            - tx-push
346            - rx-push
347    -
348      name: rings-ntf
349      doc: Notification for change in ring params.
350      notify: rings-get
351
352    # TODO: fill in the requests in between
353
354    -
355      name: mm-get
356      doc: Get MAC Merge configuration and state
357
358      attribute-set: mm
359
360      do: &mm-get-op
361        request:
362          value: 42
363          attributes:
364            - header
365        reply:
366          value: 42
367          attributes:
368            - header
369            - pmac-enabled
370            - tx-enabled
371            - tx-active
372            - tx-min-frag-size
373            - rx-min-frag-size
374            - verify-enabled
375            - verify-time
376            - max-verify-time
377            - stats
378      dump: *mm-get-op
379    -
380      name: mm-set
381      doc: Set MAC Merge configuration
382
383      attribute-set: mm
384
385      do:
386        request:
387          attributes:
388            - header
389            - verify-enabled
390            - verify-time
391            - tx-enabled
392            - pmac-enabled
393            - tx-min-frag-size
394    -
395      name: mm-ntf
396      doc: Notification for change in MAC Merge configuration.
397      notify: mm-get
398