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 */
6 #include <net/netlink.h>
7 #include <net/genetlink.h>
9 #include "netlink_gen.h"
11 #include <uapi/linux/devlink.h>
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
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, },
210 /* Ops table for devlink */
211 const struct genl_split_ops devlink_nl_ops[32] = {
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,
223 .cmd = DEVLINK_CMD_GET,
224 .validate = GENL_DONT_VALIDATE_DUMP,
225 .dumpit = devlink_nl_get_dumpit,
226 .flags = GENL_CMD_CAP_DUMP,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,