1388 lines · 54.0 KB · C
RawDownload
// SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)/* Do not edit directly, auto-generated from: *//*	Documentation/netlink/specs/devlink.yaml *//* YNL-GEN kernel source *//* To regenerate run: tools/net/ynl/ynl-regen.sh */ #include <net/netlink.h>#include <net/genetlink.h> #include "netlink_gen.h" #include <uapi/linux/devlink.h> /* Integer value ranges */static const struct netlink_range_validation devlink_attr_index_range = {	.max	= U32_MAX,}; /* Sparse enums validation callbacks */static intdevlink_attr_param_type_validate(const struct nlattr *attr,				 struct netlink_ext_ack *extack){	switch (nla_get_u8(attr)) {	case DEVLINK_VAR_ATTR_TYPE_U8:		fallthrough;	case DEVLINK_VAR_ATTR_TYPE_U16:		fallthrough;	case DEVLINK_VAR_ATTR_TYPE_U32:		fallthrough;	case DEVLINK_VAR_ATTR_TYPE_U64:		fallthrough;	case DEVLINK_VAR_ATTR_TYPE_STRING:		fallthrough;	case DEVLINK_VAR_ATTR_TYPE_FLAG:		fallthrough;	case DEVLINK_VAR_ATTR_TYPE_NUL_STRING:		fallthrough;	case DEVLINK_VAR_ATTR_TYPE_BINARY:		fallthrough;	case DEVLINK_VAR_ATTR_TYPE_U64_ARRAY:		return 0;	}	NL_SET_ERR_MSG_ATTR(extack, attr, "invalid enum value");	return -EINVAL;} /* Common nested types */const struct nla_policy devlink_dl_parent_dev_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; const struct nla_policy devlink_dl_port_function_nl_policy[DEVLINK_PORT_FN_ATTR_CAPS + 1] = {	[DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR] = { .type = NLA_BINARY, },	[DEVLINK_PORT_FN_ATTR_STATE] = NLA_POLICY_MAX(NLA_U8, 1),	[DEVLINK_PORT_FN_ATTR_OPSTATE] = NLA_POLICY_MAX(NLA_U8, 1),	[DEVLINK_PORT_FN_ATTR_CAPS] = NLA_POLICY_BITFIELD32(15),}; const struct nla_policy devlink_dl_rate_tc_bws_nl_policy[DEVLINK_RATE_TC_ATTR_BW + 1] = {	[DEVLINK_RATE_TC_ATTR_INDEX] = NLA_POLICY_MAX(NLA_U8, DEVLINK_RATE_TC_INDEX_MAX),	[DEVLINK_RATE_TC_ATTR_BW] = { .type = NLA_U32, },}; const struct nla_policy devlink_dl_selftest_id_nl_policy[DEVLINK_ATTR_SELFTEST_ID_FLASH + 1] = {	[DEVLINK_ATTR_SELFTEST_ID_FLASH] = { .type = NLA_FLAG, },}; /* DEVLINK_CMD_GET - do */static const struct nla_policy devlink_get_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_PORT_GET - do */static const struct nla_policy devlink_port_get_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_PORT_GET - dump */static const struct nla_policy devlink_port_get_dump_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_PORT_SET - do */static const struct nla_policy devlink_port_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_PORT_TYPE] = NLA_POLICY_MAX(NLA_U16, 3),	[DEVLINK_ATTR_PORT_FUNCTION] = NLA_POLICY_NESTED(devlink_dl_port_function_nl_policy),}; /* DEVLINK_CMD_PORT_NEW - do */static const struct nla_policy devlink_port_new_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_PORT_FLAVOUR] = NLA_POLICY_MAX(NLA_U16, 7),	[DEVLINK_ATTR_PORT_PCI_PF_NUMBER] = { .type = NLA_U16, },	[DEVLINK_ATTR_PORT_PCI_SF_NUMBER] = { .type = NLA_U32, },	[DEVLINK_ATTR_PORT_CONTROLLER_NUMBER] = { .type = NLA_U32, },}; /* DEVLINK_CMD_PORT_DEL - do */static const struct nla_policy devlink_port_del_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_PORT_SPLIT - do */static const struct nla_policy devlink_port_split_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_PORT_SPLIT_COUNT] = { .type = NLA_U32, },}; /* DEVLINK_CMD_PORT_UNSPLIT - do */static const struct nla_policy devlink_port_unsplit_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_SB_GET - do */static const struct nla_policy devlink_sb_get_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_SB_GET - dump */static const struct nla_policy devlink_sb_get_dump_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_SB_POOL_GET - do */static const struct nla_policy devlink_sb_pool_get_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },}; /* DEVLINK_CMD_SB_POOL_GET - dump */static const struct nla_policy devlink_sb_pool_get_dump_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_SB_POOL_SET - do */static const struct nla_policy devlink_sb_pool_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },	[DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE] = NLA_POLICY_MAX(NLA_U8, 1),	[DEVLINK_ATTR_SB_POOL_SIZE] = { .type = NLA_U32, },}; /* DEVLINK_CMD_SB_PORT_POOL_GET - do */static const struct nla_policy devlink_sb_port_pool_get_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },}; /* DEVLINK_CMD_SB_PORT_POOL_GET - dump */static const struct nla_policy devlink_sb_port_pool_get_dump_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_SB_PORT_POOL_SET - do */static const struct nla_policy devlink_sb_port_pool_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },	[DEVLINK_ATTR_SB_THRESHOLD] = { .type = NLA_U32, },}; /* DEVLINK_CMD_SB_TC_POOL_BIND_GET - do */static const struct nla_policy devlink_sb_tc_pool_bind_get_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_POOL_TYPE] = NLA_POLICY_MAX(NLA_U8, 1),	[DEVLINK_ATTR_SB_TC_INDEX] = { .type = NLA_U16, },}; /* DEVLINK_CMD_SB_TC_POOL_BIND_GET - dump */static const struct nla_policy devlink_sb_tc_pool_bind_get_dump_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_SB_TC_POOL_BIND_SET - do */static const struct nla_policy devlink_sb_tc_pool_bind_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },	[DEVLINK_ATTR_SB_POOL_TYPE] = NLA_POLICY_MAX(NLA_U8, 1),	[DEVLINK_ATTR_SB_TC_INDEX] = { .type = NLA_U16, },	[DEVLINK_ATTR_SB_THRESHOLD] = { .type = NLA_U32, },}; /* DEVLINK_CMD_SB_OCC_SNAPSHOT - do */static const struct nla_policy devlink_sb_occ_snapshot_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_SB_OCC_MAX_CLEAR - do */static const struct nla_policy devlink_sb_occ_max_clear_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_ESWITCH_GET - do */static const struct nla_policy devlink_eswitch_get_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_ESWITCH_SET - do */static const struct nla_policy devlink_eswitch_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_ESWITCH_MODE] = NLA_POLICY_MAX(NLA_U16, 2),	[DEVLINK_ATTR_ESWITCH_INLINE_MODE] = NLA_POLICY_MAX(NLA_U8, 3),	[DEVLINK_ATTR_ESWITCH_ENCAP_MODE] = NLA_POLICY_MAX(NLA_U8, 1),}; /* DEVLINK_CMD_DPIPE_TABLE_GET - do */static const struct nla_policy devlink_dpipe_table_get_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_DPIPE_TABLE_NAME] = { .type = NLA_NUL_STRING, },}; /* DEVLINK_CMD_DPIPE_ENTRIES_GET - do */static const struct nla_policy devlink_dpipe_entries_get_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_DPIPE_TABLE_NAME] = { .type = NLA_NUL_STRING, },}; /* DEVLINK_CMD_DPIPE_HEADERS_GET - do */static const struct nla_policy devlink_dpipe_headers_get_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET - do */static const struct nla_policy devlink_dpipe_table_counters_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_DPIPE_TABLE_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED] = { .type = NLA_U8, },}; /* DEVLINK_CMD_RESOURCE_SET - do */static const struct nla_policy devlink_resource_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_RESOURCE_ID] = { .type = NLA_U64, },	[DEVLINK_ATTR_RESOURCE_SIZE] = { .type = NLA_U64, },}; /* DEVLINK_CMD_RESOURCE_DUMP - do */static const struct nla_policy devlink_resource_dump_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_RESOURCE_DUMP - dump */static const struct nla_policy devlink_resource_dump_dump_nl_policy[DEVLINK_ATTR_RESOURCE_SCOPE_MASK + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_RESOURCE_SCOPE_MASK] = NLA_POLICY_MASK(NLA_U32, 0x3),}; /* DEVLINK_CMD_RELOAD - do */static const struct nla_policy devlink_reload_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_RELOAD_ACTION] = NLA_POLICY_RANGE(NLA_U8, 1, 2),	[DEVLINK_ATTR_RELOAD_LIMITS] = NLA_POLICY_BITFIELD32(6),	[DEVLINK_ATTR_NETNS_PID] = { .type = NLA_U32, },	[DEVLINK_ATTR_NETNS_FD] = { .type = NLA_U32, },	[DEVLINK_ATTR_NETNS_ID] = { .type = NLA_U32, },}; /* DEVLINK_CMD_PARAM_GET - do */static const struct nla_policy devlink_param_get_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PARAM_NAME] = { .type = NLA_NUL_STRING, },}; /* DEVLINK_CMD_PARAM_GET - dump */static const struct nla_policy devlink_param_get_dump_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_PARAM_SET - do */static const struct nla_policy devlink_param_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PARAM_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_PARAM_TYPE] = NLA_POLICY_VALIDATE_FN(NLA_U8, &devlink_attr_param_type_validate),	[DEVLINK_ATTR_PARAM_VALUE_CMODE] = NLA_POLICY_MAX(NLA_U8, 2),	[DEVLINK_ATTR_PARAM_RESET_DEFAULT] = { .type = NLA_FLAG, },}; /* DEVLINK_CMD_REGION_GET - do */static const struct nla_policy devlink_region_get_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING, },}; /* DEVLINK_CMD_REGION_GET - dump */static const struct nla_policy devlink_region_get_dump_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_REGION_NEW - do */static const struct nla_policy devlink_region_new_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_REGION_SNAPSHOT_ID] = { .type = NLA_U32, },}; /* DEVLINK_CMD_REGION_DEL - do */static const struct nla_policy devlink_region_del_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_REGION_SNAPSHOT_ID] = { .type = NLA_U32, },}; /* DEVLINK_CMD_REGION_READ - dump */static const struct nla_policy devlink_region_read_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_REGION_SNAPSHOT_ID] = { .type = NLA_U32, },	[DEVLINK_ATTR_REGION_DIRECT] = { .type = NLA_FLAG, },	[DEVLINK_ATTR_REGION_CHUNK_ADDR] = { .type = NLA_U64, },	[DEVLINK_ATTR_REGION_CHUNK_LEN] = { .type = NLA_U64, },}; /* DEVLINK_CMD_PORT_PARAM_GET - do */static const struct nla_policy devlink_port_param_get_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_PORT_PARAM_SET - do */static const struct nla_policy devlink_port_param_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_INFO_GET - do */static const struct nla_policy devlink_info_get_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),}; /* DEVLINK_CMD_HEALTH_REPORTER_GET - do */static const struct nla_policy devlink_health_reporter_get_do_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },}; /* DEVLINK_CMD_HEALTH_REPORTER_GET - dump */static const struct nla_policy devlink_health_reporter_get_dump_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },}; /* DEVLINK_CMD_HEALTH_REPORTER_SET - do */static const struct nla_policy devlink_health_reporter_set_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD] = { .type = NLA_U64, },	[DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER] = { .type = NLA_U8, },	[DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP] = { .type = NLA_U8, },	[DEVLINK_ATTR_HEALTH_REPORTER_BURST_PERIOD] = { .type = NLA_U64, },}; /* DEVLINK_CMD_HEALTH_REPORTER_RECOVER - do */static const struct nla_policy devlink_health_reporter_recover_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },}; /* DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE - do */static const struct nla_policy devlink_health_reporter_diagnose_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },}; /* DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET - dump */static const struct nla_policy devlink_health_reporter_dump_get_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },	[DEVLINK_ATTR_INDEX] = NLA_POLICY_FULL_RANGE(NLA_UINT, &devlink_attr_index_range),	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },	[DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },}; /* DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR - do */static const struct nla_policy devlink_health_reporter_dump_clear_nl_policy[DEVLINK_ATTR_INDEX + 1] = {	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },

Lines 1–500 of 1388.