Merge tag 'ceph-for-6.6-rc6' of https://github.com/ceph/ceph-client
[platform/kernel/linux-starfive.git] / net / devlink / netlink_gen.c
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/devlink.yaml */
4 /* YNL-GEN kernel source */
5
6 #include <net/netlink.h>
7 #include <net/genetlink.h>
8
9 #include "netlink_gen.h"
10
11 #include <uapi/linux/devlink.h>
12
13 /* DEVLINK_CMD_GET - do */
14 static const struct nla_policy devlink_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
15         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
16         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
17 };
18
19 /* DEVLINK_CMD_PORT_GET - do */
20 static const struct nla_policy devlink_port_get_do_nl_policy[DEVLINK_ATTR_PORT_INDEX + 1] = {
21         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
22         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
23         [DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
24 };
25
26 /* DEVLINK_CMD_PORT_GET - dump */
27 static const struct nla_policy devlink_port_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
28         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
29         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
30 };
31
32 /* DEVLINK_CMD_SB_GET - do */
33 static const struct nla_policy devlink_sb_get_do_nl_policy[DEVLINK_ATTR_SB_INDEX + 1] = {
34         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
35         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
36         [DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
37 };
38
39 /* DEVLINK_CMD_SB_GET - dump */
40 static const struct nla_policy devlink_sb_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
41         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
42         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
43 };
44
45 /* DEVLINK_CMD_SB_POOL_GET - do */
46 static const struct nla_policy devlink_sb_pool_get_do_nl_policy[DEVLINK_ATTR_SB_POOL_INDEX + 1] = {
47         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
48         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
49         [DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
50         [DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },
51 };
52
53 /* DEVLINK_CMD_SB_POOL_GET - dump */
54 static const struct nla_policy devlink_sb_pool_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
55         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
56         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
57 };
58
59 /* DEVLINK_CMD_SB_PORT_POOL_GET - do */
60 static const struct nla_policy devlink_sb_port_pool_get_do_nl_policy[DEVLINK_ATTR_SB_POOL_INDEX + 1] = {
61         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
62         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
63         [DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
64         [DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
65         [DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },
66 };
67
68 /* DEVLINK_CMD_SB_PORT_POOL_GET - dump */
69 static const struct nla_policy devlink_sb_port_pool_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
70         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
71         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
72 };
73
74 /* DEVLINK_CMD_SB_TC_POOL_BIND_GET - do */
75 static const struct nla_policy devlink_sb_tc_pool_bind_get_do_nl_policy[DEVLINK_ATTR_SB_TC_INDEX + 1] = {
76         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
77         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
78         [DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
79         [DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
80         [DEVLINK_ATTR_SB_POOL_TYPE] = NLA_POLICY_MAX(NLA_U8, 1),
81         [DEVLINK_ATTR_SB_TC_INDEX] = { .type = NLA_U16, },
82 };
83
84 /* DEVLINK_CMD_SB_TC_POOL_BIND_GET - dump */
85 static const struct nla_policy devlink_sb_tc_pool_bind_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
86         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
87         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
88 };
89
90 /* DEVLINK_CMD_PARAM_GET - do */
91 static const struct nla_policy devlink_param_get_do_nl_policy[DEVLINK_ATTR_PARAM_NAME + 1] = {
92         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
93         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
94         [DEVLINK_ATTR_PARAM_NAME] = { .type = NLA_NUL_STRING, },
95 };
96
97 /* DEVLINK_CMD_PARAM_GET - dump */
98 static const struct nla_policy devlink_param_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
99         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
100         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
101 };
102
103 /* DEVLINK_CMD_REGION_GET - do */
104 static const struct nla_policy devlink_region_get_do_nl_policy[DEVLINK_ATTR_REGION_NAME + 1] = {
105         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
106         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
107         [DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
108         [DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING, },
109 };
110
111 /* DEVLINK_CMD_REGION_GET - dump */
112 static const struct nla_policy devlink_region_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
113         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
114         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
115 };
116
117 /* DEVLINK_CMD_INFO_GET - do */
118 static const struct nla_policy devlink_info_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
119         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
120         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
121 };
122
123 /* DEVLINK_CMD_HEALTH_REPORTER_GET - do */
124 static const struct nla_policy devlink_health_reporter_get_do_nl_policy[DEVLINK_ATTR_HEALTH_REPORTER_NAME + 1] = {
125         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
126         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
127         [DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
128         [DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },
129 };
130
131 /* DEVLINK_CMD_HEALTH_REPORTER_GET - dump */
132 static const struct nla_policy devlink_health_reporter_get_dump_nl_policy[DEVLINK_ATTR_PORT_INDEX + 1] = {
133         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
134         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
135         [DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
136 };
137
138 /* DEVLINK_CMD_TRAP_GET - do */
139 static const struct nla_policy devlink_trap_get_do_nl_policy[DEVLINK_ATTR_TRAP_NAME + 1] = {
140         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
141         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
142         [DEVLINK_ATTR_TRAP_NAME] = { .type = NLA_NUL_STRING, },
143 };
144
145 /* DEVLINK_CMD_TRAP_GET - dump */
146 static const struct nla_policy devlink_trap_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
147         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
148         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
149 };
150
151 /* DEVLINK_CMD_TRAP_GROUP_GET - do */
152 static const struct nla_policy devlink_trap_group_get_do_nl_policy[DEVLINK_ATTR_TRAP_GROUP_NAME + 1] = {
153         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
154         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
155         [DEVLINK_ATTR_TRAP_GROUP_NAME] = { .type = NLA_NUL_STRING, },
156 };
157
158 /* DEVLINK_CMD_TRAP_GROUP_GET - dump */
159 static const struct nla_policy devlink_trap_group_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
160         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
161         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
162 };
163
164 /* DEVLINK_CMD_TRAP_POLICER_GET - do */
165 static const struct nla_policy devlink_trap_policer_get_do_nl_policy[DEVLINK_ATTR_TRAP_POLICER_ID + 1] = {
166         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
167         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
168         [DEVLINK_ATTR_TRAP_POLICER_ID] = { .type = NLA_U32, },
169 };
170
171 /* DEVLINK_CMD_TRAP_POLICER_GET - dump */
172 static const struct nla_policy devlink_trap_policer_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
173         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
174         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
175 };
176
177 /* DEVLINK_CMD_RATE_GET - do */
178 static const struct nla_policy devlink_rate_get_do_nl_policy[DEVLINK_ATTR_RATE_NODE_NAME + 1] = {
179         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
180         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
181         [DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
182         [DEVLINK_ATTR_RATE_NODE_NAME] = { .type = NLA_NUL_STRING, },
183 };
184
185 /* DEVLINK_CMD_RATE_GET - dump */
186 static const struct nla_policy devlink_rate_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
187         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
188         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
189 };
190
191 /* DEVLINK_CMD_LINECARD_GET - do */
192 static const struct nla_policy devlink_linecard_get_do_nl_policy[DEVLINK_ATTR_LINECARD_INDEX + 1] = {
193         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
194         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
195         [DEVLINK_ATTR_LINECARD_INDEX] = { .type = NLA_U32, },
196 };
197
198 /* DEVLINK_CMD_LINECARD_GET - dump */
199 static const struct nla_policy devlink_linecard_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
200         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
201         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
202 };
203
204 /* DEVLINK_CMD_SELFTESTS_GET - do */
205 static const struct nla_policy devlink_selftests_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
206         [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
207         [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
208 };
209
210 /* Ops table for devlink */
211 const struct genl_split_ops devlink_nl_ops[32] = {
212         {
213                 .cmd            = DEVLINK_CMD_GET,
214                 .validate       = GENL_DONT_VALIDATE_STRICT,
215                 .pre_doit       = devlink_nl_pre_doit,
216                 .doit           = devlink_nl_get_doit,
217                 .post_doit      = devlink_nl_post_doit,
218                 .policy         = devlink_get_nl_policy,
219                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
220                 .flags          = GENL_CMD_CAP_DO,
221         },
222         {
223                 .cmd            = DEVLINK_CMD_GET,
224                 .validate       = GENL_DONT_VALIDATE_DUMP,
225                 .dumpit         = devlink_nl_get_dumpit,
226                 .flags          = GENL_CMD_CAP_DUMP,
227         },
228         {
229                 .cmd            = DEVLINK_CMD_PORT_GET,
230                 .validate       = GENL_DONT_VALIDATE_STRICT,
231                 .pre_doit       = devlink_nl_pre_doit_port,
232                 .doit           = devlink_nl_port_get_doit,
233                 .post_doit      = devlink_nl_post_doit,
234                 .policy         = devlink_port_get_do_nl_policy,
235                 .maxattr        = DEVLINK_ATTR_PORT_INDEX,
236                 .flags          = GENL_CMD_CAP_DO,
237         },
238         {
239                 .cmd            = DEVLINK_CMD_PORT_GET,
240                 .dumpit         = devlink_nl_port_get_dumpit,
241                 .policy         = devlink_port_get_dump_nl_policy,
242                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
243                 .flags          = GENL_CMD_CAP_DUMP,
244         },
245         {
246                 .cmd            = DEVLINK_CMD_SB_GET,
247                 .validate       = GENL_DONT_VALIDATE_STRICT,
248                 .pre_doit       = devlink_nl_pre_doit,
249                 .doit           = devlink_nl_sb_get_doit,
250                 .post_doit      = devlink_nl_post_doit,
251                 .policy         = devlink_sb_get_do_nl_policy,
252                 .maxattr        = DEVLINK_ATTR_SB_INDEX,
253                 .flags          = GENL_CMD_CAP_DO,
254         },
255         {
256                 .cmd            = DEVLINK_CMD_SB_GET,
257                 .dumpit         = devlink_nl_sb_get_dumpit,
258                 .policy         = devlink_sb_get_dump_nl_policy,
259                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
260                 .flags          = GENL_CMD_CAP_DUMP,
261         },
262         {
263                 .cmd            = DEVLINK_CMD_SB_POOL_GET,
264                 .validate       = GENL_DONT_VALIDATE_STRICT,
265                 .pre_doit       = devlink_nl_pre_doit,
266                 .doit           = devlink_nl_sb_pool_get_doit,
267                 .post_doit      = devlink_nl_post_doit,
268                 .policy         = devlink_sb_pool_get_do_nl_policy,
269                 .maxattr        = DEVLINK_ATTR_SB_POOL_INDEX,
270                 .flags          = GENL_CMD_CAP_DO,
271         },
272         {
273                 .cmd            = DEVLINK_CMD_SB_POOL_GET,
274                 .dumpit         = devlink_nl_sb_pool_get_dumpit,
275                 .policy         = devlink_sb_pool_get_dump_nl_policy,
276                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
277                 .flags          = GENL_CMD_CAP_DUMP,
278         },
279         {
280                 .cmd            = DEVLINK_CMD_SB_PORT_POOL_GET,
281                 .validate       = GENL_DONT_VALIDATE_STRICT,
282                 .pre_doit       = devlink_nl_pre_doit_port,
283                 .doit           = devlink_nl_sb_port_pool_get_doit,
284                 .post_doit      = devlink_nl_post_doit,
285                 .policy         = devlink_sb_port_pool_get_do_nl_policy,
286                 .maxattr        = DEVLINK_ATTR_SB_POOL_INDEX,
287                 .flags          = GENL_CMD_CAP_DO,
288         },
289         {
290                 .cmd            = DEVLINK_CMD_SB_PORT_POOL_GET,
291                 .dumpit         = devlink_nl_sb_port_pool_get_dumpit,
292                 .policy         = devlink_sb_port_pool_get_dump_nl_policy,
293                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
294                 .flags          = GENL_CMD_CAP_DUMP,
295         },
296         {
297                 .cmd            = DEVLINK_CMD_SB_TC_POOL_BIND_GET,
298                 .validate       = GENL_DONT_VALIDATE_STRICT,
299                 .pre_doit       = devlink_nl_pre_doit_port,
300                 .doit           = devlink_nl_sb_tc_pool_bind_get_doit,
301                 .post_doit      = devlink_nl_post_doit,
302                 .policy         = devlink_sb_tc_pool_bind_get_do_nl_policy,
303                 .maxattr        = DEVLINK_ATTR_SB_TC_INDEX,
304                 .flags          = GENL_CMD_CAP_DO,
305         },
306         {
307                 .cmd            = DEVLINK_CMD_SB_TC_POOL_BIND_GET,
308                 .dumpit         = devlink_nl_sb_tc_pool_bind_get_dumpit,
309                 .policy         = devlink_sb_tc_pool_bind_get_dump_nl_policy,
310                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
311                 .flags          = GENL_CMD_CAP_DUMP,
312         },
313         {
314                 .cmd            = DEVLINK_CMD_PARAM_GET,
315                 .validate       = GENL_DONT_VALIDATE_STRICT,
316                 .pre_doit       = devlink_nl_pre_doit,
317                 .doit           = devlink_nl_param_get_doit,
318                 .post_doit      = devlink_nl_post_doit,
319                 .policy         = devlink_param_get_do_nl_policy,
320                 .maxattr        = DEVLINK_ATTR_PARAM_NAME,
321                 .flags          = GENL_CMD_CAP_DO,
322         },
323         {
324                 .cmd            = DEVLINK_CMD_PARAM_GET,
325                 .dumpit         = devlink_nl_param_get_dumpit,
326                 .policy         = devlink_param_get_dump_nl_policy,
327                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
328                 .flags          = GENL_CMD_CAP_DUMP,
329         },
330         {
331                 .cmd            = DEVLINK_CMD_REGION_GET,
332                 .validate       = GENL_DONT_VALIDATE_STRICT,
333                 .pre_doit       = devlink_nl_pre_doit_port_optional,
334                 .doit           = devlink_nl_region_get_doit,
335                 .post_doit      = devlink_nl_post_doit,
336                 .policy         = devlink_region_get_do_nl_policy,
337                 .maxattr        = DEVLINK_ATTR_REGION_NAME,
338                 .flags          = GENL_CMD_CAP_DO,
339         },
340         {
341                 .cmd            = DEVLINK_CMD_REGION_GET,
342                 .dumpit         = devlink_nl_region_get_dumpit,
343                 .policy         = devlink_region_get_dump_nl_policy,
344                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
345                 .flags          = GENL_CMD_CAP_DUMP,
346         },
347         {
348                 .cmd            = DEVLINK_CMD_INFO_GET,
349                 .validate       = GENL_DONT_VALIDATE_STRICT,
350                 .pre_doit       = devlink_nl_pre_doit,
351                 .doit           = devlink_nl_info_get_doit,
352                 .post_doit      = devlink_nl_post_doit,
353                 .policy         = devlink_info_get_nl_policy,
354                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
355                 .flags          = GENL_CMD_CAP_DO,
356         },
357         {
358                 .cmd            = DEVLINK_CMD_INFO_GET,
359                 .validate       = GENL_DONT_VALIDATE_DUMP,
360                 .dumpit         = devlink_nl_info_get_dumpit,
361                 .flags          = GENL_CMD_CAP_DUMP,
362         },
363         {
364                 .cmd            = DEVLINK_CMD_HEALTH_REPORTER_GET,
365                 .validate       = GENL_DONT_VALIDATE_STRICT,
366                 .pre_doit       = devlink_nl_pre_doit_port_optional,
367                 .doit           = devlink_nl_health_reporter_get_doit,
368                 .post_doit      = devlink_nl_post_doit,
369                 .policy         = devlink_health_reporter_get_do_nl_policy,
370                 .maxattr        = DEVLINK_ATTR_HEALTH_REPORTER_NAME,
371                 .flags          = GENL_CMD_CAP_DO,
372         },
373         {
374                 .cmd            = DEVLINK_CMD_HEALTH_REPORTER_GET,
375                 .dumpit         = devlink_nl_health_reporter_get_dumpit,
376                 .policy         = devlink_health_reporter_get_dump_nl_policy,
377                 .maxattr        = DEVLINK_ATTR_PORT_INDEX,
378                 .flags          = GENL_CMD_CAP_DUMP,
379         },
380         {
381                 .cmd            = DEVLINK_CMD_TRAP_GET,
382                 .validate       = GENL_DONT_VALIDATE_STRICT,
383                 .pre_doit       = devlink_nl_pre_doit,
384                 .doit           = devlink_nl_trap_get_doit,
385                 .post_doit      = devlink_nl_post_doit,
386                 .policy         = devlink_trap_get_do_nl_policy,
387                 .maxattr        = DEVLINK_ATTR_TRAP_NAME,
388                 .flags          = GENL_CMD_CAP_DO,
389         },
390         {
391                 .cmd            = DEVLINK_CMD_TRAP_GET,
392                 .dumpit         = devlink_nl_trap_get_dumpit,
393                 .policy         = devlink_trap_get_dump_nl_policy,
394                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
395                 .flags          = GENL_CMD_CAP_DUMP,
396         },
397         {
398                 .cmd            = DEVLINK_CMD_TRAP_GROUP_GET,
399                 .validate       = GENL_DONT_VALIDATE_STRICT,
400                 .pre_doit       = devlink_nl_pre_doit,
401                 .doit           = devlink_nl_trap_group_get_doit,
402                 .post_doit      = devlink_nl_post_doit,
403                 .policy         = devlink_trap_group_get_do_nl_policy,
404                 .maxattr        = DEVLINK_ATTR_TRAP_GROUP_NAME,
405                 .flags          = GENL_CMD_CAP_DO,
406         },
407         {
408                 .cmd            = DEVLINK_CMD_TRAP_GROUP_GET,
409                 .dumpit         = devlink_nl_trap_group_get_dumpit,
410                 .policy         = devlink_trap_group_get_dump_nl_policy,
411                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
412                 .flags          = GENL_CMD_CAP_DUMP,
413         },
414         {
415                 .cmd            = DEVLINK_CMD_TRAP_POLICER_GET,
416                 .validate       = GENL_DONT_VALIDATE_STRICT,
417                 .pre_doit       = devlink_nl_pre_doit,
418                 .doit           = devlink_nl_trap_policer_get_doit,
419                 .post_doit      = devlink_nl_post_doit,
420                 .policy         = devlink_trap_policer_get_do_nl_policy,
421                 .maxattr        = DEVLINK_ATTR_TRAP_POLICER_ID,
422                 .flags          = GENL_CMD_CAP_DO,
423         },
424         {
425                 .cmd            = DEVLINK_CMD_TRAP_POLICER_GET,
426                 .dumpit         = devlink_nl_trap_policer_get_dumpit,
427                 .policy         = devlink_trap_policer_get_dump_nl_policy,
428                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
429                 .flags          = GENL_CMD_CAP_DUMP,
430         },
431         {
432                 .cmd            = DEVLINK_CMD_RATE_GET,
433                 .validate       = GENL_DONT_VALIDATE_STRICT,
434                 .pre_doit       = devlink_nl_pre_doit,
435                 .doit           = devlink_nl_rate_get_doit,
436                 .post_doit      = devlink_nl_post_doit,
437                 .policy         = devlink_rate_get_do_nl_policy,
438                 .maxattr        = DEVLINK_ATTR_RATE_NODE_NAME,
439                 .flags          = GENL_CMD_CAP_DO,
440         },
441         {
442                 .cmd            = DEVLINK_CMD_RATE_GET,
443                 .dumpit         = devlink_nl_rate_get_dumpit,
444                 .policy         = devlink_rate_get_dump_nl_policy,
445                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
446                 .flags          = GENL_CMD_CAP_DUMP,
447         },
448         {
449                 .cmd            = DEVLINK_CMD_LINECARD_GET,
450                 .validate       = GENL_DONT_VALIDATE_STRICT,
451                 .pre_doit       = devlink_nl_pre_doit,
452                 .doit           = devlink_nl_linecard_get_doit,
453                 .post_doit      = devlink_nl_post_doit,
454                 .policy         = devlink_linecard_get_do_nl_policy,
455                 .maxattr        = DEVLINK_ATTR_LINECARD_INDEX,
456                 .flags          = GENL_CMD_CAP_DO,
457         },
458         {
459                 .cmd            = DEVLINK_CMD_LINECARD_GET,
460                 .dumpit         = devlink_nl_linecard_get_dumpit,
461                 .policy         = devlink_linecard_get_dump_nl_policy,
462                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
463                 .flags          = GENL_CMD_CAP_DUMP,
464         },
465         {
466                 .cmd            = DEVLINK_CMD_SELFTESTS_GET,
467                 .validate       = GENL_DONT_VALIDATE_STRICT,
468                 .pre_doit       = devlink_nl_pre_doit,
469                 .doit           = devlink_nl_selftests_get_doit,
470                 .post_doit      = devlink_nl_post_doit,
471                 .policy         = devlink_selftests_get_nl_policy,
472                 .maxattr        = DEVLINK_ATTR_DEV_NAME,
473                 .flags          = GENL_CMD_CAP_DO,
474         },
475         {
476                 .cmd            = DEVLINK_CMD_SELFTESTS_GET,
477                 .validate       = GENL_DONT_VALIDATE_DUMP,
478                 .dumpit         = devlink_nl_selftests_get_dumpit,
479                 .flags          = GENL_CMD_CAP_DUMP,
480         },
481 };