xref: /openbmc/linux/net/devlink/netlink_gen.c (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
16b7c486cSJiri Pirko // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
26b7c486cSJiri Pirko /* Do not edit directly, auto-generated from: */
36b7c486cSJiri Pirko /*	Documentation/netlink/specs/devlink.yaml */
46b7c486cSJiri Pirko /* YNL-GEN kernel source */
56b7c486cSJiri Pirko 
66b7c486cSJiri Pirko #include <net/netlink.h>
76b7c486cSJiri Pirko #include <net/genetlink.h>
86b7c486cSJiri Pirko 
96b7c486cSJiri Pirko #include "netlink_gen.h"
106b7c486cSJiri Pirko 
116b7c486cSJiri Pirko #include <uapi/linux/devlink.h>
126b7c486cSJiri Pirko 
136b7c486cSJiri Pirko /* DEVLINK_CMD_GET - do */
146b7c486cSJiri Pirko static const struct nla_policy devlink_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
156b7c486cSJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
166b7c486cSJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
176b7c486cSJiri Pirko };
186b7c486cSJiri Pirko 
197199c862SJiri Pirko /* DEVLINK_CMD_PORT_GET - do */
2034493336SJiri Pirko static const struct nla_policy devlink_port_get_do_nl_policy[DEVLINK_ATTR_PORT_INDEX + 1] = {
217199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
227199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
237199c862SJiri Pirko 	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
247199c862SJiri Pirko };
257199c862SJiri Pirko 
2634493336SJiri Pirko /* DEVLINK_CMD_PORT_GET - dump */
2734493336SJiri Pirko static const struct nla_policy devlink_port_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
2834493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
2934493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
3034493336SJiri Pirko };
3134493336SJiri Pirko 
327199c862SJiri Pirko /* DEVLINK_CMD_SB_GET - do */
3334493336SJiri Pirko static const struct nla_policy devlink_sb_get_do_nl_policy[DEVLINK_ATTR_SB_INDEX + 1] = {
347199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
357199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
367199c862SJiri Pirko 	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
377199c862SJiri Pirko };
387199c862SJiri Pirko 
3934493336SJiri Pirko /* DEVLINK_CMD_SB_GET - dump */
4034493336SJiri Pirko static const struct nla_policy devlink_sb_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
4134493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
4234493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
4334493336SJiri Pirko };
4434493336SJiri Pirko 
457199c862SJiri Pirko /* DEVLINK_CMD_SB_POOL_GET - do */
4634493336SJiri Pirko static const struct nla_policy devlink_sb_pool_get_do_nl_policy[DEVLINK_ATTR_SB_POOL_INDEX + 1] = {
477199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
487199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
497199c862SJiri Pirko 	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
507199c862SJiri Pirko 	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },
517199c862SJiri Pirko };
527199c862SJiri Pirko 
5334493336SJiri Pirko /* DEVLINK_CMD_SB_POOL_GET - dump */
5434493336SJiri Pirko static const struct nla_policy devlink_sb_pool_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
5534493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
5634493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
5734493336SJiri Pirko };
5834493336SJiri Pirko 
597199c862SJiri Pirko /* DEVLINK_CMD_SB_PORT_POOL_GET - do */
6034493336SJiri Pirko static const struct nla_policy devlink_sb_port_pool_get_do_nl_policy[DEVLINK_ATTR_SB_POOL_INDEX + 1] = {
617199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
627199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
637199c862SJiri Pirko 	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
647199c862SJiri Pirko 	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
657199c862SJiri Pirko 	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },
667199c862SJiri Pirko };
677199c862SJiri Pirko 
6834493336SJiri Pirko /* DEVLINK_CMD_SB_PORT_POOL_GET - dump */
6934493336SJiri Pirko static const struct nla_policy devlink_sb_port_pool_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
7034493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
7134493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
7234493336SJiri Pirko };
7334493336SJiri Pirko 
747199c862SJiri Pirko /* DEVLINK_CMD_SB_TC_POOL_BIND_GET - do */
7534493336SJiri Pirko static const struct nla_policy devlink_sb_tc_pool_bind_get_do_nl_policy[DEVLINK_ATTR_SB_TC_INDEX + 1] = {
767199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
777199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
787199c862SJiri Pirko 	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
797199c862SJiri Pirko 	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
807199c862SJiri Pirko 	[DEVLINK_ATTR_SB_POOL_TYPE] = NLA_POLICY_MAX(NLA_U8, 1),
817199c862SJiri Pirko 	[DEVLINK_ATTR_SB_TC_INDEX] = { .type = NLA_U16, },
827199c862SJiri Pirko };
837199c862SJiri Pirko 
8434493336SJiri Pirko /* DEVLINK_CMD_SB_TC_POOL_BIND_GET - dump */
8534493336SJiri Pirko static const struct nla_policy devlink_sb_tc_pool_bind_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
8634493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
8734493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
8834493336SJiri Pirko };
8934493336SJiri Pirko 
907199c862SJiri Pirko /* DEVLINK_CMD_PARAM_GET - do */
9134493336SJiri Pirko static const struct nla_policy devlink_param_get_do_nl_policy[DEVLINK_ATTR_PARAM_NAME + 1] = {
927199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
937199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
947199c862SJiri Pirko 	[DEVLINK_ATTR_PARAM_NAME] = { .type = NLA_NUL_STRING, },
957199c862SJiri Pirko };
967199c862SJiri Pirko 
9734493336SJiri Pirko /* DEVLINK_CMD_PARAM_GET - dump */
9834493336SJiri Pirko static const struct nla_policy devlink_param_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
9934493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
10034493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
10134493336SJiri Pirko };
10234493336SJiri Pirko 
1037199c862SJiri Pirko /* DEVLINK_CMD_REGION_GET - do */
10434493336SJiri Pirko static const struct nla_policy devlink_region_get_do_nl_policy[DEVLINK_ATTR_REGION_NAME + 1] = {
1057199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
1067199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
1077199c862SJiri Pirko 	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
1087199c862SJiri Pirko 	[DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING, },
1097199c862SJiri Pirko };
1107199c862SJiri Pirko 
11134493336SJiri Pirko /* DEVLINK_CMD_REGION_GET - dump */
11234493336SJiri Pirko static const struct nla_policy devlink_region_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
11334493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
11434493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
11534493336SJiri Pirko };
11634493336SJiri Pirko 
1176b7c486cSJiri Pirko /* DEVLINK_CMD_INFO_GET - do */
1186b7c486cSJiri Pirko static const struct nla_policy devlink_info_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
1196b7c486cSJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
1206b7c486cSJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
1216b7c486cSJiri Pirko };
1226b7c486cSJiri Pirko 
1237199c862SJiri Pirko /* DEVLINK_CMD_HEALTH_REPORTER_GET - do */
12434493336SJiri Pirko static const struct nla_policy devlink_health_reporter_get_do_nl_policy[DEVLINK_ATTR_HEALTH_REPORTER_NAME + 1] = {
1257199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
1267199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
1277199c862SJiri Pirko 	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
1287199c862SJiri Pirko 	[DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },
1297199c862SJiri Pirko };
1307199c862SJiri Pirko 
13134493336SJiri Pirko /* DEVLINK_CMD_HEALTH_REPORTER_GET - dump */
132*0149bca1SJiri Pirko static const struct nla_policy devlink_health_reporter_get_dump_nl_policy[DEVLINK_ATTR_PORT_INDEX + 1] = {
13334493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
13434493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
135*0149bca1SJiri Pirko 	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
13634493336SJiri Pirko };
13734493336SJiri Pirko 
1387199c862SJiri Pirko /* DEVLINK_CMD_TRAP_GET - do */
13934493336SJiri Pirko static const struct nla_policy devlink_trap_get_do_nl_policy[DEVLINK_ATTR_TRAP_NAME + 1] = {
1407199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
1417199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
1427199c862SJiri Pirko 	[DEVLINK_ATTR_TRAP_NAME] = { .type = NLA_NUL_STRING, },
1437199c862SJiri Pirko };
1447199c862SJiri Pirko 
14534493336SJiri Pirko /* DEVLINK_CMD_TRAP_GET - dump */
14634493336SJiri Pirko static const struct nla_policy devlink_trap_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
14734493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
14834493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
14934493336SJiri Pirko };
15034493336SJiri Pirko 
1517199c862SJiri Pirko /* DEVLINK_CMD_TRAP_GROUP_GET - do */
15234493336SJiri Pirko static const struct nla_policy devlink_trap_group_get_do_nl_policy[DEVLINK_ATTR_TRAP_GROUP_NAME + 1] = {
1537199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
1547199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
1557199c862SJiri Pirko 	[DEVLINK_ATTR_TRAP_GROUP_NAME] = { .type = NLA_NUL_STRING, },
1567199c862SJiri Pirko };
1577199c862SJiri Pirko 
15834493336SJiri Pirko /* DEVLINK_CMD_TRAP_GROUP_GET - dump */
15934493336SJiri Pirko static const struct nla_policy devlink_trap_group_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
16034493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
16134493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
16234493336SJiri Pirko };
16334493336SJiri Pirko 
1647199c862SJiri Pirko /* DEVLINK_CMD_TRAP_POLICER_GET - do */
16534493336SJiri Pirko static const struct nla_policy devlink_trap_policer_get_do_nl_policy[DEVLINK_ATTR_TRAP_POLICER_ID + 1] = {
1667199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
1677199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
1687199c862SJiri Pirko 	[DEVLINK_ATTR_TRAP_POLICER_ID] = { .type = NLA_U32, },
1697199c862SJiri Pirko };
1707199c862SJiri Pirko 
17134493336SJiri Pirko /* DEVLINK_CMD_TRAP_POLICER_GET - dump */
17234493336SJiri Pirko static const struct nla_policy devlink_trap_policer_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
17334493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
17434493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
17534493336SJiri Pirko };
17634493336SJiri Pirko 
1777199c862SJiri Pirko /* DEVLINK_CMD_RATE_GET - do */
17834493336SJiri Pirko static const struct nla_policy devlink_rate_get_do_nl_policy[DEVLINK_ATTR_RATE_NODE_NAME + 1] = {
1797199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
1807199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
1817199c862SJiri Pirko 	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
1827199c862SJiri Pirko 	[DEVLINK_ATTR_RATE_NODE_NAME] = { .type = NLA_NUL_STRING, },
1837199c862SJiri Pirko };
1847199c862SJiri Pirko 
18534493336SJiri Pirko /* DEVLINK_CMD_RATE_GET - dump */
18634493336SJiri Pirko static const struct nla_policy devlink_rate_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
18734493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
18834493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
18934493336SJiri Pirko };
19034493336SJiri Pirko 
1917199c862SJiri Pirko /* DEVLINK_CMD_LINECARD_GET - do */
19234493336SJiri Pirko static const struct nla_policy devlink_linecard_get_do_nl_policy[DEVLINK_ATTR_LINECARD_INDEX + 1] = {
1937199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
1947199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
1957199c862SJiri Pirko 	[DEVLINK_ATTR_LINECARD_INDEX] = { .type = NLA_U32, },
1967199c862SJiri Pirko };
1977199c862SJiri Pirko 
19834493336SJiri Pirko /* DEVLINK_CMD_LINECARD_GET - dump */
19934493336SJiri Pirko static const struct nla_policy devlink_linecard_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
20034493336SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
20134493336SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
20234493336SJiri Pirko };
20334493336SJiri Pirko 
2047199c862SJiri Pirko /* DEVLINK_CMD_SELFTESTS_GET - do */
2057199c862SJiri Pirko static const struct nla_policy devlink_selftests_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
2067199c862SJiri Pirko 	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
2077199c862SJiri Pirko 	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
2087199c862SJiri Pirko };
2097199c862SJiri Pirko 
2106b7c486cSJiri Pirko /* Ops table for devlink */
2117199c862SJiri Pirko const struct genl_split_ops devlink_nl_ops[32] = {
2126b7c486cSJiri Pirko 	{
2136b7c486cSJiri Pirko 		.cmd		= DEVLINK_CMD_GET,
2146b7c486cSJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
2156b7c486cSJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
2166b7c486cSJiri Pirko 		.doit		= devlink_nl_get_doit,
2176b7c486cSJiri Pirko 		.post_doit	= devlink_nl_post_doit,
2186b7c486cSJiri Pirko 		.policy		= devlink_get_nl_policy,
2196b7c486cSJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
2206b7c486cSJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
2216b7c486cSJiri Pirko 	},
2226b7c486cSJiri Pirko 	{
2236b7c486cSJiri Pirko 		.cmd		= DEVLINK_CMD_GET,
2246b7c486cSJiri Pirko 		.validate	= GENL_DONT_VALIDATE_DUMP,
2256b7c486cSJiri Pirko 		.dumpit		= devlink_nl_get_dumpit,
2266b7c486cSJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
2276b7c486cSJiri Pirko 	},
2286b7c486cSJiri Pirko 	{
2297199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_PORT_GET,
2307199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
2317199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit_port,
2327199c862SJiri Pirko 		.doit		= devlink_nl_port_get_doit,
2337199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
23434493336SJiri Pirko 		.policy		= devlink_port_get_do_nl_policy,
2357199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_PORT_INDEX,
2367199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
2377199c862SJiri Pirko 	},
2387199c862SJiri Pirko 	{
2397199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_PORT_GET,
2407199c862SJiri Pirko 		.dumpit		= devlink_nl_port_get_dumpit,
24134493336SJiri Pirko 		.policy		= devlink_port_get_dump_nl_policy,
24234493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
2437199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
2447199c862SJiri Pirko 	},
2457199c862SJiri Pirko 	{
2467199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SB_GET,
2477199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
2487199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
2497199c862SJiri Pirko 		.doit		= devlink_nl_sb_get_doit,
2507199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
25134493336SJiri Pirko 		.policy		= devlink_sb_get_do_nl_policy,
2527199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_SB_INDEX,
2537199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
2547199c862SJiri Pirko 	},
2557199c862SJiri Pirko 	{
2567199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SB_GET,
2577199c862SJiri Pirko 		.dumpit		= devlink_nl_sb_get_dumpit,
25834493336SJiri Pirko 		.policy		= devlink_sb_get_dump_nl_policy,
25934493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
2607199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
2617199c862SJiri Pirko 	},
2627199c862SJiri Pirko 	{
2637199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SB_POOL_GET,
2647199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
2657199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
2667199c862SJiri Pirko 		.doit		= devlink_nl_sb_pool_get_doit,
2677199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
26834493336SJiri Pirko 		.policy		= devlink_sb_pool_get_do_nl_policy,
2697199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_SB_POOL_INDEX,
2707199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
2717199c862SJiri Pirko 	},
2727199c862SJiri Pirko 	{
2737199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SB_POOL_GET,
2747199c862SJiri Pirko 		.dumpit		= devlink_nl_sb_pool_get_dumpit,
27534493336SJiri Pirko 		.policy		= devlink_sb_pool_get_dump_nl_policy,
27634493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
2777199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
2787199c862SJiri Pirko 	},
2797199c862SJiri Pirko 	{
2807199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SB_PORT_POOL_GET,
2817199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
2827199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit_port,
2837199c862SJiri Pirko 		.doit		= devlink_nl_sb_port_pool_get_doit,
2847199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
28534493336SJiri Pirko 		.policy		= devlink_sb_port_pool_get_do_nl_policy,
2867199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_SB_POOL_INDEX,
2877199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
2887199c862SJiri Pirko 	},
2897199c862SJiri Pirko 	{
2907199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SB_PORT_POOL_GET,
2917199c862SJiri Pirko 		.dumpit		= devlink_nl_sb_port_pool_get_dumpit,
29234493336SJiri Pirko 		.policy		= devlink_sb_port_pool_get_dump_nl_policy,
29334493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
2947199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
2957199c862SJiri Pirko 	},
2967199c862SJiri Pirko 	{
2977199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SB_TC_POOL_BIND_GET,
2987199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
2997199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit_port,
3007199c862SJiri Pirko 		.doit		= devlink_nl_sb_tc_pool_bind_get_doit,
3017199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
30234493336SJiri Pirko 		.policy		= devlink_sb_tc_pool_bind_get_do_nl_policy,
3037199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_SB_TC_INDEX,
3047199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
3057199c862SJiri Pirko 	},
3067199c862SJiri Pirko 	{
3077199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SB_TC_POOL_BIND_GET,
3087199c862SJiri Pirko 		.dumpit		= devlink_nl_sb_tc_pool_bind_get_dumpit,
30934493336SJiri Pirko 		.policy		= devlink_sb_tc_pool_bind_get_dump_nl_policy,
31034493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
3117199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
3127199c862SJiri Pirko 	},
3137199c862SJiri Pirko 	{
3147199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_PARAM_GET,
3157199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
3167199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
3177199c862SJiri Pirko 		.doit		= devlink_nl_param_get_doit,
3187199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
31934493336SJiri Pirko 		.policy		= devlink_param_get_do_nl_policy,
3207199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_PARAM_NAME,
3217199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
3227199c862SJiri Pirko 	},
3237199c862SJiri Pirko 	{
3247199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_PARAM_GET,
3257199c862SJiri Pirko 		.dumpit		= devlink_nl_param_get_dumpit,
32634493336SJiri Pirko 		.policy		= devlink_param_get_dump_nl_policy,
32734493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
3287199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
3297199c862SJiri Pirko 	},
3307199c862SJiri Pirko 	{
3317199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_REGION_GET,
3327199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
3337199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit_port_optional,
3347199c862SJiri Pirko 		.doit		= devlink_nl_region_get_doit,
3357199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
33634493336SJiri Pirko 		.policy		= devlink_region_get_do_nl_policy,
3377199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_REGION_NAME,
3387199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
3397199c862SJiri Pirko 	},
3407199c862SJiri Pirko 	{
3417199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_REGION_GET,
3427199c862SJiri Pirko 		.dumpit		= devlink_nl_region_get_dumpit,
34334493336SJiri Pirko 		.policy		= devlink_region_get_dump_nl_policy,
34434493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
3457199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
3467199c862SJiri Pirko 	},
3477199c862SJiri Pirko 	{
3486b7c486cSJiri Pirko 		.cmd		= DEVLINK_CMD_INFO_GET,
3496b7c486cSJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
3506b7c486cSJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
3516b7c486cSJiri Pirko 		.doit		= devlink_nl_info_get_doit,
3526b7c486cSJiri Pirko 		.post_doit	= devlink_nl_post_doit,
3536b7c486cSJiri Pirko 		.policy		= devlink_info_get_nl_policy,
3546b7c486cSJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
3556b7c486cSJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
3566b7c486cSJiri Pirko 	},
3576b7c486cSJiri Pirko 	{
3586b7c486cSJiri Pirko 		.cmd		= DEVLINK_CMD_INFO_GET,
3596b7c486cSJiri Pirko 		.validate	= GENL_DONT_VALIDATE_DUMP,
3606b7c486cSJiri Pirko 		.dumpit		= devlink_nl_info_get_dumpit,
3616b7c486cSJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
3626b7c486cSJiri Pirko 	},
3637199c862SJiri Pirko 	{
3647199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_HEALTH_REPORTER_GET,
3657199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
3667199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit_port_optional,
3677199c862SJiri Pirko 		.doit		= devlink_nl_health_reporter_get_doit,
3687199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
36934493336SJiri Pirko 		.policy		= devlink_health_reporter_get_do_nl_policy,
3707199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_HEALTH_REPORTER_NAME,
3717199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
3727199c862SJiri Pirko 	},
3737199c862SJiri Pirko 	{
3747199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_HEALTH_REPORTER_GET,
3757199c862SJiri Pirko 		.dumpit		= devlink_nl_health_reporter_get_dumpit,
37634493336SJiri Pirko 		.policy		= devlink_health_reporter_get_dump_nl_policy,
377*0149bca1SJiri Pirko 		.maxattr	= DEVLINK_ATTR_PORT_INDEX,
3787199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
3797199c862SJiri Pirko 	},
3807199c862SJiri Pirko 	{
3817199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_TRAP_GET,
3827199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
3837199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
3847199c862SJiri Pirko 		.doit		= devlink_nl_trap_get_doit,
3857199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
38634493336SJiri Pirko 		.policy		= devlink_trap_get_do_nl_policy,
3877199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_TRAP_NAME,
3887199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
3897199c862SJiri Pirko 	},
3907199c862SJiri Pirko 	{
3917199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_TRAP_GET,
3927199c862SJiri Pirko 		.dumpit		= devlink_nl_trap_get_dumpit,
39334493336SJiri Pirko 		.policy		= devlink_trap_get_dump_nl_policy,
39434493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
3957199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
3967199c862SJiri Pirko 	},
3977199c862SJiri Pirko 	{
3987199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_TRAP_GROUP_GET,
3997199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
4007199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
4017199c862SJiri Pirko 		.doit		= devlink_nl_trap_group_get_doit,
4027199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
40334493336SJiri Pirko 		.policy		= devlink_trap_group_get_do_nl_policy,
4047199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_TRAP_GROUP_NAME,
4057199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
4067199c862SJiri Pirko 	},
4077199c862SJiri Pirko 	{
4087199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_TRAP_GROUP_GET,
4097199c862SJiri Pirko 		.dumpit		= devlink_nl_trap_group_get_dumpit,
41034493336SJiri Pirko 		.policy		= devlink_trap_group_get_dump_nl_policy,
41134493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
4127199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
4137199c862SJiri Pirko 	},
4147199c862SJiri Pirko 	{
4157199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_TRAP_POLICER_GET,
4167199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
4177199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
4187199c862SJiri Pirko 		.doit		= devlink_nl_trap_policer_get_doit,
4197199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
42034493336SJiri Pirko 		.policy		= devlink_trap_policer_get_do_nl_policy,
4217199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_TRAP_POLICER_ID,
4227199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
4237199c862SJiri Pirko 	},
4247199c862SJiri Pirko 	{
4257199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_TRAP_POLICER_GET,
4267199c862SJiri Pirko 		.dumpit		= devlink_nl_trap_policer_get_dumpit,
42734493336SJiri Pirko 		.policy		= devlink_trap_policer_get_dump_nl_policy,
42834493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
4297199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
4307199c862SJiri Pirko 	},
4317199c862SJiri Pirko 	{
4327199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_RATE_GET,
4337199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
4347199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
4357199c862SJiri Pirko 		.doit		= devlink_nl_rate_get_doit,
4367199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
43734493336SJiri Pirko 		.policy		= devlink_rate_get_do_nl_policy,
4387199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_RATE_NODE_NAME,
4397199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
4407199c862SJiri Pirko 	},
4417199c862SJiri Pirko 	{
4427199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_RATE_GET,
4437199c862SJiri Pirko 		.dumpit		= devlink_nl_rate_get_dumpit,
44434493336SJiri Pirko 		.policy		= devlink_rate_get_dump_nl_policy,
44534493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
4467199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
4477199c862SJiri Pirko 	},
4487199c862SJiri Pirko 	{
4497199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_LINECARD_GET,
4507199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
4517199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
4527199c862SJiri Pirko 		.doit		= devlink_nl_linecard_get_doit,
4537199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
45434493336SJiri Pirko 		.policy		= devlink_linecard_get_do_nl_policy,
4557199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_LINECARD_INDEX,
4567199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
4577199c862SJiri Pirko 	},
4587199c862SJiri Pirko 	{
4597199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_LINECARD_GET,
4607199c862SJiri Pirko 		.dumpit		= devlink_nl_linecard_get_dumpit,
46134493336SJiri Pirko 		.policy		= devlink_linecard_get_dump_nl_policy,
46234493336SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
4637199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
4647199c862SJiri Pirko 	},
4657199c862SJiri Pirko 	{
4667199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SELFTESTS_GET,
4677199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_STRICT,
4687199c862SJiri Pirko 		.pre_doit	= devlink_nl_pre_doit,
4697199c862SJiri Pirko 		.doit		= devlink_nl_selftests_get_doit,
4707199c862SJiri Pirko 		.post_doit	= devlink_nl_post_doit,
4717199c862SJiri Pirko 		.policy		= devlink_selftests_get_nl_policy,
4727199c862SJiri Pirko 		.maxattr	= DEVLINK_ATTR_DEV_NAME,
4737199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DO,
4747199c862SJiri Pirko 	},
4757199c862SJiri Pirko 	{
4767199c862SJiri Pirko 		.cmd		= DEVLINK_CMD_SELFTESTS_GET,
4777199c862SJiri Pirko 		.validate	= GENL_DONT_VALIDATE_DUMP,
4787199c862SJiri Pirko 		.dumpit		= devlink_nl_selftests_get_dumpit,
4797199c862SJiri Pirko 		.flags		= GENL_CMD_CAP_DUMP,
4807199c862SJiri Pirko 	},
4816b7c486cSJiri Pirko };
482