xref: /linux/Documentation/netlink/specs/devlink.yaml (revision 223981db9bafb80f558162c148f261e2ff043dbe)
1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2
3name: devlink
4
5protocol: genetlink-legacy
6
7doc: Partial family for Devlink.
8
9definitions:
10  -
11    type: enum
12    name: sb-pool-type
13    entries:
14      -
15        name: ingress
16      -
17        name: egress
18  -
19    type: enum
20    name: port-type
21    entries:
22      -
23        name: notset
24      -
25        name: auto
26      -
27        name: eth
28      -
29        name: ib
30  -
31    type: enum
32    name: port-flavour
33    entries:
34      -
35        name: physical
36      -
37        name: cpu
38      -
39        name: dsa
40      -
41        name: pci_pf
42      -
43        name: pci_vf
44      -
45        name: virtual
46      -
47        name: unused
48      -
49        name: pci_sf
50  -
51    type: enum
52    name: port-fn-state
53    entries:
54      -
55        name: inactive
56      -
57        name: active
58  -
59    type: enum
60    name: port-fn-opstate
61    entries:
62      -
63        name: detached
64      -
65        name: attached
66  -
67    type: enum
68    name: port-fn-attr-cap
69    entries:
70      -
71        name: roce-bit
72      -
73        name: migratable-bit
74      -
75        name: ipsec-crypto-bit
76      -
77        name: ipsec-packet-bit
78  -
79    type: enum
80    name: sb-threshold-type
81    entries:
82      -
83        name: static
84      -
85        name: dynamic
86  -
87    type: enum
88    name: eswitch-mode
89    entries:
90      -
91        name: legacy
92      -
93        name: switchdev
94  -
95    type: enum
96    name: eswitch-inline-mode
97    entries:
98      -
99        name: none
100      -
101        name: link
102      -
103        name: network
104      -
105        name: transport
106  -
107    type: enum
108    name: eswitch-encap-mode
109    entries:
110      -
111        name: none
112      -
113        name: basic
114  -
115    type: enum
116    name: dpipe-match-type
117    entries:
118      -
119        name: field-exact
120  -
121    type: enum
122    name: dpipe-action-type
123    entries:
124      -
125        name: field-modify
126  -
127    type: enum
128    name: dpipe-field-mapping-type
129    entries:
130      -
131        name: none
132      -
133        name: ifindex
134  -
135    type: enum
136    name: resource-unit
137    entries:
138      -
139        name: entry
140  -
141    type: enum
142    name: reload-action
143    entries:
144      -
145        name: driver-reinit
146        value: 1
147      -
148        name: fw-activate
149  -
150    type: enum
151    name: param-cmode
152    entries:
153      -
154        name: runtime
155      -
156        name: driverinit
157      -
158        name: permanent
159  -
160    type: enum
161    name: flash-overwrite
162    entries:
163      -
164        name: settings-bit
165      -
166        name: identifiers-bit
167  -
168    type: enum
169    name: trap-action
170    entries:
171      -
172        name: drop
173      -
174        name: trap
175      -
176        name: mirror
177
178attribute-sets:
179  -
180    name: devlink
181    name-prefix: devlink-attr-
182    attributes:
183      -
184        name: bus-name
185        type: string
186        value: 1
187      -
188        name: dev-name
189        type: string
190      -
191        name: port-index
192        type: u32
193      -
194        name: port-type
195        type: u16
196        enum: port-type
197
198      # TODO: fill in the attributes in between
199
200      -
201        name: port-split-count
202        type: u32
203        value: 9
204
205      # TODO: fill in the attributes in between
206
207      -
208        name: sb-index
209        type: u32
210        value: 11
211
212      # TODO: fill in the attributes in between
213
214      -
215        name: sb-pool-index
216        type: u16
217        value: 17
218      -
219        name: sb-pool-type
220        type: u8
221        enum: sb-pool-type
222      -
223        name: sb-pool-size
224        type: u32
225      -
226        name: sb-pool-threshold-type
227        type: u8
228        enum: sb-threshold-type
229      -
230        name: sb-threshold
231        type: u32
232      -
233        name: sb-tc-index
234        type: u16
235        value: 22
236
237      # TODO: fill in the attributes in between
238
239      -
240        name: eswitch-mode
241        type: u16
242        value: 25
243        enum: eswitch-mode
244
245      -
246        name: eswitch-inline-mode
247        type: u16
248        enum: eswitch-inline-mode
249      -
250        name: dpipe-tables
251        type: nest
252        nested-attributes: dl-dpipe-tables
253      -
254        name: dpipe-table
255        type: nest
256        multi-attr: true
257        nested-attributes: dl-dpipe-table
258      -
259        name: dpipe-table-name
260        type: string
261      -
262        name: dpipe-table-size
263        type: u64
264      -
265        name: dpipe-table-matches
266        type: nest
267        nested-attributes: dl-dpipe-table-matches
268      -
269        name: dpipe-table-actions
270        type: nest
271        nested-attributes: dl-dpipe-table-actions
272      -
273        name: dpipe-table-counters-enabled
274        type: u8
275      -
276        name: dpipe-entries
277        type: nest
278        nested-attributes: dl-dpipe-entries
279      -
280        name: dpipe-entry
281        type: nest
282        multi-attr: true
283        nested-attributes: dl-dpipe-entry
284      -
285        name: dpipe-entry-index
286        type: u64
287      -
288        name: dpipe-entry-match-values
289        type: nest
290        nested-attributes: dl-dpipe-entry-match-values
291      -
292        name: dpipe-entry-action-values
293        type: nest
294        nested-attributes: dl-dpipe-entry-action-values
295      -
296        name: dpipe-entry-counter
297        type: u64
298      -
299        name: dpipe-match
300        type: nest
301        multi-attr: true
302        nested-attributes: dl-dpipe-match
303      -
304        name: dpipe-match-value
305        type: nest
306        multi-attr: true
307        nested-attributes: dl-dpipe-match-value
308      -
309        name: dpipe-match-type
310        type: u32
311        enum: dpipe-match-type
312      -
313        name: dpipe-action
314        type: nest
315        multi-attr: true
316        nested-attributes: dl-dpipe-action
317      -
318        name: dpipe-action-value
319        type: nest
320        multi-attr: true
321        nested-attributes: dl-dpipe-action-value
322      -
323        name: dpipe-action-type
324        type: u32
325        enum: dpipe-action-type
326      -
327        name: dpipe-value
328        type: binary
329      -
330        name: dpipe-value-mask
331        type: binary
332      -
333        name: dpipe-value-mapping
334        type: u32
335      -
336        name: dpipe-headers
337        type: nest
338        nested-attributes: dl-dpipe-headers
339      -
340        name: dpipe-header
341        type: nest
342        multi-attr: true
343        nested-attributes: dl-dpipe-header
344      -
345        name: dpipe-header-name
346        type: string
347      -
348        name: dpipe-header-id
349        type: u32
350      -
351        name: dpipe-header-fields
352        type: nest
353        nested-attributes: dl-dpipe-header-fields
354      -
355        name: dpipe-header-global
356        type: u8
357      -
358        name: dpipe-header-index
359        type: u32
360      -
361        name: dpipe-field
362        type: nest
363        multi-attr: true
364        nested-attributes: dl-dpipe-field
365      -
366        name: dpipe-field-name
367        type: string
368      -
369        name: dpipe-field-id
370        type: u32
371      -
372        name: dpipe-field-bitwidth
373        type: u32
374      -
375        name: dpipe-field-mapping-type
376        type: u32
377        enum: dpipe-field-mapping-type
378      -
379        name: pad
380        type: pad
381      -
382        name: eswitch-encap-mode
383        type: u8
384        value: 62
385        enum: eswitch-encap-mode
386      -
387        name: resource-list
388        type: nest
389        nested-attributes: dl-resource-list
390      -
391        name: resource
392        type: nest
393        multi-attr: true
394        nested-attributes: dl-resource
395      -
396        name: resource-name
397        type: string
398      -
399        name: resource-id
400        type: u64
401      -
402        name: resource-size
403        type: u64
404      -
405        name: resource-size-new
406        type: u64
407      -
408        name: resource-size-valid
409        type: u8
410      -
411        name: resource-size-min
412        type: u64
413      -
414        name: resource-size-max
415        type: u64
416      -
417        name: resource-size-gran
418        type: u64
419      -
420        name: resource-unit
421        type: u8
422        enum: resource-unit
423      -
424        name: resource-occ
425        type: u64
426      -
427        name: dpipe-table-resource-id
428        type: u64
429      -
430        name: dpipe-table-resource-units
431        type: u64
432      -
433        name: port-flavour
434        type: u16
435        enum: port-flavour
436
437      # TODO: fill in the attributes in between
438
439      -
440        name: param-name
441        type: string
442        value: 81
443
444      # TODO: fill in the attributes in between
445
446      -
447        name: param-type
448        type: u8
449        value: 83
450
451      # TODO: fill in the attributes in between
452
453      -
454        name: param-value-cmode
455        type: u8
456        enum: param-cmode
457        value: 87
458      -
459        name: region-name
460        type: string
461
462      # TODO: fill in the attributes in between
463
464      -
465        name: region-snapshot-id
466        type: u32
467        value: 92
468
469      # TODO: fill in the attributes in between
470
471      -
472        name: region-chunk-addr
473        type: u64
474        value: 96
475      -
476        name: region-chunk-len
477        type: u64
478      -
479        name: info-driver-name
480        type: string
481      -
482        name: info-serial-number
483        type: string
484      -
485        name: info-version-fixed
486        type: nest
487        multi-attr: true
488        nested-attributes: dl-info-version
489      -
490        name: info-version-running
491        type: nest
492        multi-attr: true
493        nested-attributes: dl-info-version
494      -
495        name: info-version-stored
496        type: nest
497        multi-attr: true
498        nested-attributes: dl-info-version
499      -
500        name: info-version-name
501        type: string
502      -
503        name: info-version-value
504        type: string
505
506      # TODO: fill in the attributes in between
507
508      -
509        name: fmsg
510        type: nest
511        nested-attributes: dl-fmsg
512        value: 106
513      -
514        name: fmsg-obj-nest-start
515        type: flag
516      -
517        name: fmsg-pair-nest-start
518        type: flag
519      -
520        name: fmsg-arr-nest-start
521        type: flag
522      -
523        name: fmsg-nest-end
524        type: flag
525      -
526        name: fmsg-obj-name
527        type: string
528
529      # TODO: fill in the attributes in between
530
531      -
532        name: health-reporter-name
533        type: string
534        value: 115
535
536      # TODO: fill in the attributes in between
537
538      -
539        name: health-reporter-graceful-period
540        type: u64
541        value: 120
542      -
543        name: health-reporter-auto-recover
544        type: u8
545      -
546        name: flash-update-file-name
547        type: string
548      -
549        name: flash-update-component
550        type: string
551
552      # TODO: fill in the attributes in between
553
554      -
555        name: port-pci-pf-number
556        type: u16
557        value: 127
558
559      # TODO: fill in the attributes in between
560
561      -
562        name: trap-name
563        type: string
564        value: 130
565      -
566        name: trap-action
567        type: u8
568        enum: trap-action
569
570      # TODO: fill in the attributes in between
571
572      -
573        name: trap-group-name
574        type: string
575        value: 135
576
577      -
578        name: reload-failed
579        type: u8
580
581      # TODO: fill in the attributes in between
582
583      -
584        name: netns-fd
585        type: u32
586        value: 138
587      -
588        name: netns-pid
589        type: u32
590      -
591        name: netns-id
592        type: u32
593
594      # TODO: fill in the attributes in between
595
596      -
597        name: health-reporter-auto-dump
598        type: u8
599        value: 141
600      -
601        name: trap-policer-id
602        type: u32
603      -
604        name: trap-policer-rate
605        type: u64
606      -
607        name: trap-policer-burst
608        type: u64
609      -
610        name: port-function
611        type: nest
612        nested-attributes: dl-port-function
613
614      # TODO: fill in the attributes in between
615
616      -
617        name: port-controller-number
618        type: u32
619        value: 150
620
621      # TODO: fill in the attributes in between
622
623      -
624        name: flash-update-overwrite-mask
625        type: bitfield32
626        enum: flash-overwrite
627        enum-as-flags: True
628        value: 152
629      -
630        name: reload-action
631        type: u8
632        enum: reload-action
633      -
634        name: reload-actions-performed
635        type: bitfield32
636        enum: reload-action
637        enum-as-flags: True
638      -
639        name: reload-limits
640        type: bitfield32
641        enum: reload-action
642        enum-as-flags: True
643      -
644        name: dev-stats
645        type: nest
646        nested-attributes: dl-dev-stats
647      -
648        name: reload-stats
649        type: nest
650        nested-attributes: dl-reload-stats
651      -
652        name: reload-stats-entry
653        type: nest
654        multi-attr: true
655        nested-attributes: dl-reload-stats-entry
656      -
657        name: reload-stats-limit
658        type: u8
659      -
660        name: reload-stats-value
661        type: u32
662      -
663        name: remote-reload-stats
664        type: nest
665        nested-attributes: dl-reload-stats
666      -
667        name: reload-action-info
668        type: nest
669        multi-attr: true
670        nested-attributes: dl-reload-act-info
671      -
672        name: reload-action-stats
673        type: nest
674        multi-attr: true
675        nested-attributes: dl-reload-act-stats
676
677      # TODO: fill in the attributes in between
678
679      -
680        name: port-pci-sf-number
681        type: u32
682        value: 164
683
684      # TODO: fill in the attributes in between
685
686      -
687        name: rate-tx-share
688        type: u64
689        value: 166
690      -
691        name: rate-tx-max
692        type: u64
693      -
694        name: rate-node-name
695        type: string
696      -
697        name: rate-parent-node-name
698        type: string
699
700      # TODO: fill in the attributes in between
701
702      -
703        name: linecard-index
704        type: u32
705        value: 171
706
707      # TODO: fill in the attributes in between
708
709      -
710        name: linecard-type
711        type: string
712        value: 173
713
714      # TODO: fill in the attributes in between
715
716      -
717        name: selftests
718        type: nest
719        value: 176
720        nested-attributes: dl-selftest-id
721      -
722        name: rate-tx-priority
723        type: u32
724      -
725        name: rate-tx-weight
726        type: u32
727      -
728        name: region-direct
729        type: flag
730
731  -
732    name: dl-dev-stats
733    subset-of: devlink
734    attributes:
735      -
736        name: reload-stats
737      -
738        name: remote-reload-stats
739  -
740    name: dl-reload-stats
741    subset-of: devlink
742    attributes:
743      -
744        name: reload-action-info
745  -
746    name: dl-reload-act-info
747    subset-of: devlink
748    attributes:
749      -
750        name: reload-action
751      -
752        name: reload-action-stats
753  -
754    name: dl-reload-act-stats
755    subset-of: devlink
756    attributes:
757      -
758        name: reload-stats-entry
759  -
760    name: dl-reload-stats-entry
761    subset-of: devlink
762    attributes:
763      -
764        name: reload-stats-limit
765      -
766        name: reload-stats-value
767  -
768    name: dl-info-version
769    subset-of: devlink
770    attributes:
771      -
772        name: info-version-name
773      -
774        name: info-version-value
775  -
776    name: dl-port-function
777    name-prefix: devlink-port-fn-attr-
778    attr-max-name: devlink-port-function-attr-max
779    attributes:
780      -
781        name-prefix: devlink-port-function-attr-
782        name: hw-addr
783        type: binary
784        value: 1
785      -
786        name: state
787        type: u8
788        enum: port-fn-state
789      -
790        name: opstate
791        type: u8
792        enum: port-fn-opstate
793      -
794        name: caps
795        type: bitfield32
796        enum: port-fn-attr-cap
797        enum-as-flags: True
798
799  -
800    name: dl-dpipe-tables
801    subset-of: devlink
802    attributes:
803      -
804        name: dpipe-table
805
806  -
807    name: dl-dpipe-table
808    subset-of: devlink
809    attributes:
810      -
811        name: dpipe-table-name
812      -
813        name: dpipe-table-size
814      -
815        name: dpipe-table-name
816      -
817        name: dpipe-table-size
818      -
819        name: dpipe-table-matches
820      -
821        name: dpipe-table-actions
822      -
823        name: dpipe-table-counters-enabled
824      -
825        name: dpipe-table-resource-id
826      -
827        name: dpipe-table-resource-units
828
829  -
830    name: dl-dpipe-table-matches
831    subset-of: devlink
832    attributes:
833      -
834        name: dpipe-match
835
836  -
837    name: dl-dpipe-table-actions
838    subset-of: devlink
839    attributes:
840      -
841        name: dpipe-action
842
843  -
844    name: dl-dpipe-entries
845    subset-of: devlink
846    attributes:
847      -
848        name: dpipe-entry
849
850  -
851    name: dl-dpipe-entry
852    subset-of: devlink
853    attributes:
854      -
855        name: dpipe-entry-index
856      -
857        name: dpipe-entry-match-values
858      -
859        name: dpipe-entry-action-values
860      -
861        name: dpipe-entry-counter
862
863  -
864    name: dl-dpipe-entry-match-values
865    subset-of: devlink
866    attributes:
867      -
868        name: dpipe-match-value
869
870  -
871    name: dl-dpipe-entry-action-values
872    subset-of: devlink
873    attributes:
874      -
875        name: dpipe-action-value
876
877  -
878    name: dl-dpipe-match
879    subset-of: devlink
880    attributes:
881      -
882        name: dpipe-match-type
883      -
884        name: dpipe-header-id
885      -
886        name: dpipe-header-global
887      -
888        name: dpipe-header-index
889      -
890        name: dpipe-field-id
891
892  -
893    name: dl-dpipe-match-value
894    subset-of: devlink
895    attributes:
896      -
897        name: dpipe-match
898      -
899        name: dpipe-value
900      -
901        name: dpipe-value-mask
902      -
903        name: dpipe-value-mapping
904
905  -
906    name: dl-dpipe-action
907    subset-of: devlink
908    attributes:
909      -
910        name: dpipe-action-type
911      -
912        name: dpipe-header-id
913      -
914        name: dpipe-header-global
915      -
916        name: dpipe-header-index
917      -
918        name: dpipe-field-id
919
920  -
921    name: dl-dpipe-action-value
922    subset-of: devlink
923    attributes:
924      -
925        name: dpipe-action
926      -
927        name: dpipe-value
928      -
929        name: dpipe-value-mask
930      -
931        name: dpipe-value-mapping
932
933  -
934    name: dl-dpipe-headers
935    subset-of: devlink
936    attributes:
937      -
938        name: dpipe-header
939
940  -
941    name: dl-dpipe-header
942    subset-of: devlink
943    attributes:
944      -
945        name: dpipe-header-name
946      -
947        name: dpipe-header-id
948      -
949        name: dpipe-header-global
950      -
951        name: dpipe-header-fields
952
953  -
954    name: dl-dpipe-header-fields
955    subset-of: devlink
956    attributes:
957      -
958        name: dpipe-field
959
960  -
961    name: dl-dpipe-field
962    subset-of: devlink
963    attributes:
964      -
965        name: dpipe-field-name
966      -
967        name: dpipe-field-id
968      -
969        name: dpipe-field-bitwidth
970      -
971        name: dpipe-field-mapping-type
972
973  -
974    name: dl-resource
975    subset-of: devlink
976    attributes:
977      # -
978      # name: resource-list
979      # This is currently unsupported due to circular dependency
980      -
981        name: resource-name
982      -
983        name: resource-id
984      -
985        name: resource-size
986      -
987        name: resource-size-new
988      -
989        name: resource-size-valid
990      -
991        name: resource-size-min
992      -
993        name: resource-size-max
994      -
995        name: resource-size-gran
996      -
997        name: resource-unit
998      -
999        name: resource-occ
1000
1001  -
1002    name: dl-resource-list
1003    subset-of: devlink
1004    attributes:
1005      -
1006        name: resource
1007
1008  -
1009    name: dl-fmsg
1010    subset-of: devlink
1011    attributes:
1012      -
1013        name: fmsg-obj-nest-start
1014      -
1015        name: fmsg-pair-nest-start
1016      -
1017        name: fmsg-arr-nest-start
1018      -
1019        name: fmsg-nest-end
1020      -
1021        name: fmsg-obj-name
1022
1023  -
1024    name: dl-selftest-id
1025    name-prefix: devlink-attr-selftest-id-
1026    attributes:
1027      -
1028        name: flash
1029        type: flag
1030
1031operations:
1032  enum-model: directional
1033  list:
1034    -
1035      name: get
1036      doc: Get devlink instances.
1037      attribute-set: devlink
1038      dont-validate: [ strict, dump ]
1039      do:
1040        pre: devlink-nl-pre-doit
1041        post: devlink-nl-post-doit
1042        request:
1043          value: 1
1044          attributes: &dev-id-attrs
1045            - bus-name
1046            - dev-name
1047        reply:  &get-reply
1048          value: 3
1049          attributes:
1050            - bus-name
1051            - dev-name
1052            - reload-failed
1053            - dev-stats
1054      dump:
1055        reply: *get-reply
1056
1057    -
1058      name: port-get
1059      doc: Get devlink port instances.
1060      attribute-set: devlink
1061      dont-validate: [ strict ]
1062      do:
1063        pre: devlink-nl-pre-doit-port
1064        post: devlink-nl-post-doit
1065        request:
1066          value: 5
1067          attributes: &port-id-attrs
1068            - bus-name
1069            - dev-name
1070            - port-index
1071        reply:
1072          value: 7
1073          attributes: *port-id-attrs
1074      dump:
1075        request:
1076          attributes: *dev-id-attrs
1077        reply:
1078          value: 3  # due to a bug, port dump returns DEVLINK_CMD_NEW
1079          attributes: *port-id-attrs
1080    -
1081      name: port-set
1082      doc: Set devlink port instances.
1083      attribute-set: devlink
1084      dont-validate: [ strict ]
1085      flags: [ admin-perm ]
1086      do:
1087        pre: devlink-nl-pre-doit-port
1088        post: devlink-nl-post-doit
1089        request:
1090          attributes:
1091            - bus-name
1092            - dev-name
1093            - port-index
1094            - port-type
1095            - port-function
1096
1097    -
1098      name: port-new
1099      doc: Create devlink port instances.
1100      attribute-set: devlink
1101      dont-validate: [ strict ]
1102      flags: [ admin-perm ]
1103      do:
1104        pre: devlink-nl-pre-doit
1105        post: devlink-nl-post-doit
1106        request:
1107          attributes:
1108            - bus-name
1109            - dev-name
1110            - port-index
1111            - port-flavour
1112            - port-pci-pf-number
1113            - port-pci-sf-number
1114            - port-controller-number
1115        reply:
1116          value: 7
1117          attributes: *port-id-attrs
1118
1119    -
1120      name: port-del
1121      doc: Delete devlink port instances.
1122      attribute-set: devlink
1123      dont-validate: [ strict ]
1124      flags: [ admin-perm ]
1125      do:
1126        pre: devlink-nl-pre-doit-port
1127        post: devlink-nl-post-doit
1128        request:
1129          attributes: *port-id-attrs
1130
1131    -
1132      name: port-split
1133      doc: Split devlink port instances.
1134      attribute-set: devlink
1135      dont-validate: [ strict ]
1136      flags: [ admin-perm ]
1137      do:
1138        pre: devlink-nl-pre-doit-port
1139        post: devlink-nl-post-doit
1140        request:
1141          attributes:
1142            - bus-name
1143            - dev-name
1144            - port-index
1145            - port-split-count
1146
1147    -
1148      name: port-unsplit
1149      doc: Unplit devlink port instances.
1150      attribute-set: devlink
1151      dont-validate: [ strict ]
1152      flags: [ admin-perm ]
1153      do:
1154        pre: devlink-nl-pre-doit-port
1155        post: devlink-nl-post-doit
1156        request:
1157          attributes: *port-id-attrs
1158
1159    -
1160      name: sb-get
1161      doc: Get shared buffer instances.
1162      attribute-set: devlink
1163      dont-validate: [ strict ]
1164      do:
1165        pre: devlink-nl-pre-doit
1166        post: devlink-nl-post-doit
1167        request:
1168          value: 11
1169          attributes: &sb-id-attrs
1170            - bus-name
1171            - dev-name
1172            - sb-index
1173        reply: &sb-get-reply
1174          value: 13
1175          attributes: *sb-id-attrs
1176      dump:
1177        request:
1178          attributes: *dev-id-attrs
1179        reply: *sb-get-reply
1180
1181    -
1182      name: sb-pool-get
1183      doc: Get shared buffer pool instances.
1184      attribute-set: devlink
1185      dont-validate: [ strict ]
1186      do:
1187        pre: devlink-nl-pre-doit
1188        post: devlink-nl-post-doit
1189        request:
1190          value: 15
1191          attributes: &sb-pool-id-attrs
1192            - bus-name
1193            - dev-name
1194            - sb-index
1195            - sb-pool-index
1196        reply: &sb-pool-get-reply
1197          value: 17
1198          attributes: *sb-pool-id-attrs
1199      dump:
1200        request:
1201          attributes: *dev-id-attrs
1202        reply: *sb-pool-get-reply
1203
1204    -
1205      name: sb-pool-set
1206      doc: Set shared buffer pool instances.
1207      attribute-set: devlink
1208      dont-validate: [ strict ]
1209      flags: [ admin-perm ]
1210      do:
1211        pre: devlink-nl-pre-doit
1212        post: devlink-nl-post-doit
1213        request:
1214          attributes:
1215            - bus-name
1216            - dev-name
1217            - sb-index
1218            - sb-pool-index
1219            - sb-pool-threshold-type
1220            - sb-pool-size
1221
1222    -
1223      name: sb-port-pool-get
1224      doc: Get shared buffer port-pool combinations and threshold.
1225      attribute-set: devlink
1226      dont-validate: [ strict ]
1227      do:
1228        pre: devlink-nl-pre-doit-port
1229        post: devlink-nl-post-doit
1230        request:
1231          value: 19
1232          attributes: &sb-port-pool-id-attrs
1233            - bus-name
1234            - dev-name
1235            - port-index
1236            - sb-index
1237            - sb-pool-index
1238        reply: &sb-port-pool-get-reply
1239          value: 21
1240          attributes: *sb-port-pool-id-attrs
1241      dump:
1242        request:
1243          attributes: *dev-id-attrs
1244        reply: *sb-port-pool-get-reply
1245
1246    -
1247      name: sb-port-pool-set
1248      doc: Set shared buffer port-pool combinations and threshold.
1249      attribute-set: devlink
1250      dont-validate: [ strict ]
1251      flags: [ admin-perm ]
1252      do:
1253        pre: devlink-nl-pre-doit-port
1254        post: devlink-nl-post-doit
1255        request:
1256          attributes:
1257            - bus-name
1258            - dev-name
1259            - port-index
1260            - sb-index
1261            - sb-pool-index
1262            - sb-threshold
1263
1264    -
1265      name: sb-tc-pool-bind-get
1266      doc: Get shared buffer port-TC to pool bindings and threshold.
1267      attribute-set: devlink
1268      dont-validate: [ strict ]
1269      do:
1270        pre: devlink-nl-pre-doit-port
1271        post: devlink-nl-post-doit
1272        request:
1273          value: 23
1274          attributes: &sb-tc-pool-bind-id-attrs
1275            - bus-name
1276            - dev-name
1277            - port-index
1278            - sb-index
1279            - sb-pool-type
1280            - sb-tc-index
1281        reply: &sb-tc-pool-bind-get-reply
1282          value: 25
1283          attributes: *sb-tc-pool-bind-id-attrs
1284      dump:
1285        request:
1286          attributes: *dev-id-attrs
1287        reply: *sb-tc-pool-bind-get-reply
1288
1289    -
1290      name: sb-tc-pool-bind-set
1291      doc: Set shared buffer port-TC to pool bindings and threshold.
1292      attribute-set: devlink
1293      dont-validate: [ strict ]
1294      flags: [ admin-perm ]
1295      do:
1296        pre: devlink-nl-pre-doit-port
1297        post: devlink-nl-post-doit
1298        request:
1299          attributes:
1300            - bus-name
1301            - dev-name
1302            - port-index
1303            - sb-index
1304            - sb-pool-index
1305            - sb-pool-type
1306            - sb-tc-index
1307            - sb-threshold
1308
1309    -
1310      name: sb-occ-snapshot
1311      doc: Take occupancy snapshot of shared buffer.
1312      attribute-set: devlink
1313      dont-validate: [ strict ]
1314      flags: [ admin-perm ]
1315      do:
1316        pre: devlink-nl-pre-doit
1317        post: devlink-nl-post-doit
1318        request:
1319          value: 27
1320          attributes:
1321            - bus-name
1322            - dev-name
1323            - sb-index
1324
1325    -
1326      name: sb-occ-max-clear
1327      doc: Clear occupancy watermarks of shared buffer.
1328      attribute-set: devlink
1329      dont-validate: [ strict ]
1330      flags: [ admin-perm ]
1331      do:
1332        pre: devlink-nl-pre-doit
1333        post: devlink-nl-post-doit
1334        request:
1335          attributes:
1336            - bus-name
1337            - dev-name
1338            - sb-index
1339
1340    -
1341      name: eswitch-get
1342      doc: Get eswitch attributes.
1343      attribute-set: devlink
1344      dont-validate: [ strict ]
1345      flags: [ admin-perm ]
1346      do:
1347        pre: devlink-nl-pre-doit
1348        post: devlink-nl-post-doit
1349        request:
1350          attributes: *dev-id-attrs
1351        reply:
1352          value: 29
1353          attributes: &eswitch-attrs
1354            - bus-name
1355            - dev-name
1356            - eswitch-mode
1357            - eswitch-inline-mode
1358            - eswitch-encap-mode
1359
1360    -
1361      name: eswitch-set
1362      doc: Set eswitch attributes.
1363      attribute-set: devlink
1364      dont-validate: [ strict ]
1365      flags: [ admin-perm ]
1366      do:
1367        pre: devlink-nl-pre-doit
1368        post: devlink-nl-post-doit
1369        request:
1370          attributes: *eswitch-attrs
1371
1372    -
1373      name: dpipe-table-get
1374      doc: Get dpipe table attributes.
1375      attribute-set: devlink
1376      dont-validate: [ strict ]
1377      do:
1378        pre: devlink-nl-pre-doit
1379        post: devlink-nl-post-doit
1380        request:
1381          attributes:
1382            - bus-name
1383            - dev-name
1384            - dpipe-table-name
1385        reply:
1386          value: 31
1387          attributes:
1388            - bus-name
1389            - dev-name
1390            - dpipe-tables
1391
1392    -
1393      name: dpipe-entries-get
1394      doc: Get dpipe entries attributes.
1395      attribute-set: devlink
1396      dont-validate: [ strict ]
1397      do:
1398        pre: devlink-nl-pre-doit
1399        post: devlink-nl-post-doit
1400        request:
1401          attributes:
1402            - bus-name
1403            - dev-name
1404            - dpipe-table-name
1405        reply:
1406          attributes:
1407            - bus-name
1408            - dev-name
1409            - dpipe-entries
1410
1411    -
1412      name: dpipe-headers-get
1413      doc: Get dpipe headers attributes.
1414      attribute-set: devlink
1415      dont-validate: [ strict ]
1416      do:
1417        pre: devlink-nl-pre-doit
1418        post: devlink-nl-post-doit
1419        request:
1420          attributes:
1421            - bus-name
1422            - dev-name
1423        reply:
1424          attributes:
1425            - bus-name
1426            - dev-name
1427            - dpipe-headers
1428
1429    -
1430      name: dpipe-table-counters-set
1431      doc: Set dpipe counter attributes.
1432      attribute-set: devlink
1433      dont-validate: [ strict ]
1434      flags: [ admin-perm ]
1435      do:
1436        pre: devlink-nl-pre-doit
1437        post: devlink-nl-post-doit
1438        request:
1439          attributes:
1440            - bus-name
1441            - dev-name
1442            - dpipe-table-name
1443            - dpipe-table-counters-enabled
1444
1445    -
1446      name: resource-set
1447      doc: Set resource attributes.
1448      attribute-set: devlink
1449      dont-validate: [ strict ]
1450      flags: [ admin-perm ]
1451      do:
1452        pre: devlink-nl-pre-doit
1453        post: devlink-nl-post-doit
1454        request:
1455          attributes:
1456            - bus-name
1457            - dev-name
1458            - resource-id
1459            - resource-size
1460
1461    -
1462      name: resource-dump
1463      doc: Get resource attributes.
1464      attribute-set: devlink
1465      dont-validate: [ strict ]
1466      do:
1467        pre: devlink-nl-pre-doit
1468        post: devlink-nl-post-doit
1469        request:
1470          attributes:
1471            - bus-name
1472            - dev-name
1473        reply:
1474          value: 36
1475          attributes:
1476            - bus-name
1477            - dev-name
1478            - resource-list
1479
1480    -
1481      name: reload
1482      doc: Reload devlink.
1483      attribute-set: devlink
1484      dont-validate: [ strict ]
1485      flags: [ admin-perm ]
1486      do:
1487        pre: devlink-nl-pre-doit
1488        post: devlink-nl-post-doit
1489        request:
1490          attributes:
1491            - bus-name
1492            - dev-name
1493            - reload-action
1494            - reload-limits
1495            - netns-pid
1496            - netns-fd
1497            - netns-id
1498        reply:
1499          attributes:
1500            - bus-name
1501            - dev-name
1502            - reload-actions-performed
1503
1504    -
1505      name: param-get
1506      doc: Get param instances.
1507      attribute-set: devlink
1508      dont-validate: [ strict ]
1509      do:
1510        pre: devlink-nl-pre-doit
1511        post: devlink-nl-post-doit
1512        request:
1513          attributes: &param-id-attrs
1514            - bus-name
1515            - dev-name
1516            - param-name
1517        reply: &param-get-reply
1518          attributes: *param-id-attrs
1519      dump:
1520        request:
1521          attributes: *dev-id-attrs
1522        reply: *param-get-reply
1523
1524    -
1525      name: param-set
1526      doc: Set param instances.
1527      attribute-set: devlink
1528      dont-validate: [ strict ]
1529      flags: [ admin-perm ]
1530      do:
1531        pre: devlink-nl-pre-doit
1532        post: devlink-nl-post-doit
1533        request:
1534          attributes:
1535            - bus-name
1536            - dev-name
1537            - param-name
1538            - param-type
1539            # param-value-data is missing here as the type is variable
1540            - param-value-cmode
1541
1542    -
1543      name: region-get
1544      doc: Get region instances.
1545      attribute-set: devlink
1546      dont-validate: [ strict ]
1547      do:
1548        pre: devlink-nl-pre-doit-port-optional
1549        post: devlink-nl-post-doit
1550        request:
1551          value: 42
1552          attributes: &region-id-attrs
1553            - bus-name
1554            - dev-name
1555            - port-index
1556            - region-name
1557        reply: &region-get-reply
1558          value: 42
1559          attributes: *region-id-attrs
1560      dump:
1561        request:
1562          attributes: *dev-id-attrs
1563        reply: *region-get-reply
1564
1565    -
1566      name: region-new
1567      doc: Create region snapshot.
1568      attribute-set: devlink
1569      dont-validate: [ strict ]
1570      flags: [ admin-perm ]
1571      do:
1572        pre: devlink-nl-pre-doit-port-optional
1573        post: devlink-nl-post-doit
1574        request:
1575          value: 44
1576          attributes: &region-snapshot-id-attrs
1577            - bus-name
1578            - dev-name
1579            - port-index
1580            - region-name
1581            - region-snapshot-id
1582        reply:
1583          value: 44
1584          attributes: *region-snapshot-id-attrs
1585
1586    -
1587      name: region-del
1588      doc: Delete region snapshot.
1589      attribute-set: devlink
1590      dont-validate: [ strict ]
1591      flags: [ admin-perm ]
1592      do:
1593        pre: devlink-nl-pre-doit-port-optional
1594        post: devlink-nl-post-doit
1595        request:
1596          attributes: *region-snapshot-id-attrs
1597
1598    -
1599      name: region-read
1600      doc: Read region data.
1601      attribute-set: devlink
1602      dont-validate: [ dump-strict ]
1603      flags: [ admin-perm ]
1604      dump:
1605        request:
1606          attributes:
1607            - bus-name
1608            - dev-name
1609            - port-index
1610            - region-name
1611            - region-snapshot-id
1612            - region-direct
1613            - region-chunk-addr
1614            - region-chunk-len
1615        reply:
1616          value: 46
1617          attributes:
1618            - bus-name
1619            - dev-name
1620            - port-index
1621            - region-name
1622
1623    -
1624      name: port-param-get
1625      doc: Get port param instances.
1626      attribute-set: devlink
1627      dont-validate: [ strict, dump-strict ]
1628      do:
1629        pre: devlink-nl-pre-doit-port
1630        post: devlink-nl-post-doit
1631        request:
1632          attributes: *port-id-attrs
1633        reply:
1634          attributes: *port-id-attrs
1635      dump:
1636        reply:
1637          attributes: *port-id-attrs
1638
1639    -
1640      name: port-param-set
1641      doc: Set port param instances.
1642      attribute-set: devlink
1643      dont-validate: [ strict ]
1644      flags: [ admin-perm ]
1645      do:
1646        pre: devlink-nl-pre-doit-port
1647        post: devlink-nl-post-doit
1648        request:
1649          attributes: *port-id-attrs
1650
1651    -
1652      name: info-get
1653      doc: Get device information, like driver name, hardware and firmware versions etc.
1654      attribute-set: devlink
1655      dont-validate: [ strict, dump ]
1656      do:
1657        pre: devlink-nl-pre-doit
1658        post: devlink-nl-post-doit
1659        request:
1660          value: 51
1661          attributes: *dev-id-attrs
1662        reply: &info-get-reply
1663          value: 51
1664          attributes:
1665            - bus-name
1666            - dev-name
1667            - info-driver-name
1668            - info-serial-number
1669            - info-version-fixed
1670            - info-version-running
1671            - info-version-stored
1672      dump:
1673        reply: *info-get-reply
1674
1675    -
1676      name: health-reporter-get
1677      doc: Get health reporter instances.
1678      attribute-set: devlink
1679      dont-validate: [ strict ]
1680      do:
1681        pre: devlink-nl-pre-doit-port-optional
1682        post: devlink-nl-post-doit
1683        request:
1684          attributes: &health-reporter-id-attrs
1685            - bus-name
1686            - dev-name
1687            - port-index
1688            - health-reporter-name
1689        reply: &health-reporter-get-reply
1690          attributes: *health-reporter-id-attrs
1691      dump:
1692        request:
1693          attributes: *port-id-attrs
1694        reply: *health-reporter-get-reply
1695
1696    -
1697      name: health-reporter-set
1698      doc: Set health reporter instances.
1699      attribute-set: devlink
1700      dont-validate: [ strict ]
1701      flags: [ admin-perm ]
1702      do:
1703        pre: devlink-nl-pre-doit-port-optional
1704        post: devlink-nl-post-doit
1705        request:
1706          attributes:
1707            - bus-name
1708            - dev-name
1709            - port-index
1710            - health-reporter-name
1711            - health-reporter-graceful-period
1712            - health-reporter-auto-recover
1713            - health-reporter-auto-dump
1714
1715    -
1716      name: health-reporter-recover
1717      doc: Recover health reporter instances.
1718      attribute-set: devlink
1719      dont-validate: [ strict ]
1720      flags: [ admin-perm ]
1721      do:
1722        pre: devlink-nl-pre-doit-port-optional
1723        post: devlink-nl-post-doit
1724        request:
1725          attributes: *health-reporter-id-attrs
1726
1727    -
1728      name: health-reporter-diagnose
1729      doc: Diagnose health reporter instances.
1730      attribute-set: devlink
1731      dont-validate: [ strict ]
1732      flags: [ admin-perm ]
1733      do:
1734        pre: devlink-nl-pre-doit-port-optional
1735        post: devlink-nl-post-doit
1736        request:
1737          attributes: *health-reporter-id-attrs
1738
1739    -
1740      name: health-reporter-dump-get
1741      doc: Dump health reporter instances.
1742      attribute-set: devlink
1743      dont-validate: [ dump-strict ]
1744      flags: [ admin-perm ]
1745      dump:
1746        request:
1747          attributes: *health-reporter-id-attrs
1748        reply:
1749          value: 56
1750          attributes:
1751            - fmsg
1752
1753    -
1754      name: health-reporter-dump-clear
1755      doc: Clear dump of health reporter instances.
1756      attribute-set: devlink
1757      dont-validate: [ strict ]
1758      flags: [ admin-perm ]
1759      do:
1760        pre: devlink-nl-pre-doit-port-optional
1761        post: devlink-nl-post-doit
1762        request:
1763          attributes: *health-reporter-id-attrs
1764
1765    -
1766      name: flash-update
1767      doc: Flash update devlink instances.
1768      attribute-set: devlink
1769      dont-validate: [ strict ]
1770      flags: [ admin-perm ]
1771      do:
1772        pre: devlink-nl-pre-doit
1773        post: devlink-nl-post-doit
1774        request:
1775          attributes:
1776            - bus-name
1777            - dev-name
1778            - flash-update-file-name
1779            - flash-update-component
1780            - flash-update-overwrite-mask
1781
1782    -
1783      name: trap-get
1784      doc: Get trap instances.
1785      attribute-set: devlink
1786      dont-validate: [ strict ]
1787      do:
1788        pre: devlink-nl-pre-doit
1789        post: devlink-nl-post-doit
1790        request:
1791          value: 61
1792          attributes: &trap-id-attrs
1793            - bus-name
1794            - dev-name
1795            - trap-name
1796        reply: &trap-get-reply
1797          value: 63
1798          attributes: *trap-id-attrs
1799      dump:
1800        request:
1801          attributes: *dev-id-attrs
1802        reply: *trap-get-reply
1803
1804    -
1805      name: trap-set
1806      doc: Set trap instances.
1807      attribute-set: devlink
1808      dont-validate: [ strict ]
1809      flags: [ admin-perm ]
1810      do:
1811        pre: devlink-nl-pre-doit
1812        post: devlink-nl-post-doit
1813        request:
1814          attributes:
1815            - bus-name
1816            - dev-name
1817            - trap-name
1818            - trap-action
1819
1820    -
1821      name: trap-group-get
1822      doc: Get trap group instances.
1823      attribute-set: devlink
1824      dont-validate: [ strict ]
1825      do:
1826        pre: devlink-nl-pre-doit
1827        post: devlink-nl-post-doit
1828        request:
1829          value: 65
1830          attributes: &trap-group-id-attrs
1831            - bus-name
1832            - dev-name
1833            - trap-group-name
1834        reply: &trap-group-get-reply
1835          value: 67
1836          attributes: *trap-group-id-attrs
1837      dump:
1838        request:
1839          attributes: *dev-id-attrs
1840        reply: *trap-group-get-reply
1841
1842    -
1843      name: trap-group-set
1844      doc: Set trap group instances.
1845      attribute-set: devlink
1846      dont-validate: [ strict ]
1847      flags: [ admin-perm ]
1848      do:
1849        pre: devlink-nl-pre-doit
1850        post: devlink-nl-post-doit
1851        request:
1852          attributes:
1853            - bus-name
1854            - dev-name
1855            - trap-group-name
1856            - trap-action
1857            - trap-policer-id
1858
1859    -
1860      name: trap-policer-get
1861      doc: Get trap policer instances.
1862      attribute-set: devlink
1863      dont-validate: [ strict ]
1864      do:
1865        pre: devlink-nl-pre-doit
1866        post: devlink-nl-post-doit
1867        request:
1868          value: 69
1869          attributes: &trap-policer-id-attrs
1870            - bus-name
1871            - dev-name
1872            - trap-policer-id
1873        reply: &trap-policer-get-reply
1874          value: 71
1875          attributes: *trap-policer-id-attrs
1876      dump:
1877        request:
1878          attributes: *dev-id-attrs
1879        reply: *trap-policer-get-reply
1880
1881    -
1882      name: trap-policer-set
1883      doc: Get trap policer instances.
1884      attribute-set: devlink
1885      dont-validate: [ strict ]
1886      flags: [ admin-perm ]
1887      do:
1888        pre: devlink-nl-pre-doit
1889        post: devlink-nl-post-doit
1890        request:
1891          attributes:
1892            - bus-name
1893            - dev-name
1894            - trap-policer-id
1895            - trap-policer-rate
1896            - trap-policer-burst
1897
1898    -
1899      name: health-reporter-test
1900      doc: Test health reporter instances.
1901      attribute-set: devlink
1902      dont-validate: [ strict ]
1903      flags: [ admin-perm ]
1904      do:
1905        pre: devlink-nl-pre-doit-port-optional
1906        post: devlink-nl-post-doit
1907        request:
1908          value: 73
1909          attributes: *health-reporter-id-attrs
1910
1911    -
1912      name: rate-get
1913      doc: Get rate instances.
1914      attribute-set: devlink
1915      dont-validate: [ strict ]
1916      do:
1917        pre: devlink-nl-pre-doit
1918        post: devlink-nl-post-doit
1919        request:
1920          value: 74
1921          attributes: &rate-id-attrs
1922            - bus-name
1923            - dev-name
1924            - port-index
1925            - rate-node-name
1926        reply: &rate-get-reply
1927          value: 76
1928          attributes: *rate-id-attrs
1929      dump:
1930        request:
1931          attributes: *dev-id-attrs
1932        reply: *rate-get-reply
1933
1934    -
1935      name: rate-set
1936      doc: Set rate instances.
1937      attribute-set: devlink
1938      dont-validate: [ strict ]
1939      flags: [ admin-perm ]
1940      do:
1941        pre: devlink-nl-pre-doit
1942        post: devlink-nl-post-doit
1943        request:
1944          attributes:
1945            - bus-name
1946            - dev-name
1947            - rate-node-name
1948            - rate-tx-share
1949            - rate-tx-max
1950            - rate-tx-priority
1951            - rate-tx-weight
1952            - rate-parent-node-name
1953
1954    -
1955      name: rate-new
1956      doc: Create rate instances.
1957      attribute-set: devlink
1958      dont-validate: [ strict ]
1959      flags: [ admin-perm ]
1960      do:
1961        pre: devlink-nl-pre-doit
1962        post: devlink-nl-post-doit
1963        request:
1964          attributes:
1965            - bus-name
1966            - dev-name
1967            - rate-node-name
1968            - rate-tx-share
1969            - rate-tx-max
1970            - rate-tx-priority
1971            - rate-tx-weight
1972            - rate-parent-node-name
1973
1974    -
1975      name: rate-del
1976      doc: Delete rate instances.
1977      attribute-set: devlink
1978      dont-validate: [ strict ]
1979      flags: [ admin-perm ]
1980      do:
1981        pre: devlink-nl-pre-doit
1982        post: devlink-nl-post-doit
1983        request:
1984          attributes:
1985            - bus-name
1986            - dev-name
1987            - rate-node-name
1988
1989    -
1990      name: linecard-get
1991      doc: Get line card instances.
1992      attribute-set: devlink
1993      dont-validate: [ strict ]
1994      do:
1995        pre: devlink-nl-pre-doit
1996        post: devlink-nl-post-doit
1997        request:
1998          value: 78
1999          attributes: &linecard-id-attrs
2000            - bus-name
2001            - dev-name
2002            - linecard-index
2003        reply: &linecard-get-reply
2004          value: 80
2005          attributes: *linecard-id-attrs
2006      dump:
2007        request:
2008          attributes: *dev-id-attrs
2009        reply: *linecard-get-reply
2010
2011    -
2012      name: linecard-set
2013      doc: Set line card instances.
2014      attribute-set: devlink
2015      dont-validate: [ strict ]
2016      flags: [ admin-perm ]
2017      do:
2018        pre: devlink-nl-pre-doit
2019        post: devlink-nl-post-doit
2020        request:
2021          attributes:
2022            - bus-name
2023            - dev-name
2024            - linecard-index
2025            - linecard-type
2026
2027    -
2028      name: selftests-get
2029      doc: Get device selftest instances.
2030      attribute-set: devlink
2031      dont-validate: [ strict, dump ]
2032      do:
2033        pre: devlink-nl-pre-doit
2034        post: devlink-nl-post-doit
2035        request:
2036          value: 82
2037          attributes: *dev-id-attrs
2038        reply: &selftests-get-reply
2039          value: 82
2040          attributes: *dev-id-attrs
2041      dump:
2042        reply: *selftests-get-reply
2043
2044    -
2045      name: selftests-run
2046      doc: Run device selftest instances.
2047      attribute-set: devlink
2048      dont-validate: [ strict ]
2049      flags: [ admin-perm ]
2050      do:
2051        pre: devlink-nl-pre-doit
2052        post: devlink-nl-post-doit
2053        request:
2054          attributes:
2055            - bus-name
2056            - dev-name
2057            - selftests
2058