mirror of
https://github.com/torvalds/linux
synced 2024-09-06 18:01:05 +00:00
netlink: specs: devlink: add commands that do per-instance dump
Add the definitions for the commands that do per-instance dump and re-generate the related code. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Acked-by: Jakub Kicinski <kuba@kernel.org> Link: https://lore.kernel.org/r/20230811155714.1736405-8-jiri@resnulli.us Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
7d3c6fec61
commit
7199c86247
|
@ -6,6 +6,16 @@ protocol: genetlink-legacy
|
|||
|
||||
doc: Partial family for Devlink.
|
||||
|
||||
definitions:
|
||||
-
|
||||
type: enum
|
||||
name: sb-pool-type
|
||||
entries:
|
||||
-
|
||||
name: ingress
|
||||
-
|
||||
name: egress
|
||||
|
||||
attribute-sets:
|
||||
-
|
||||
name: devlink
|
||||
|
@ -24,6 +34,46 @@ attribute-sets:
|
|||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: sb-index
|
||||
type: u32
|
||||
value: 11
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: sb-pool-index
|
||||
type: u16
|
||||
value: 17
|
||||
|
||||
-
|
||||
name: sb-pool-type
|
||||
type: u8
|
||||
enum: sb-pool-type
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: sb-tc-index
|
||||
type: u16
|
||||
value: 22
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: param-name
|
||||
type: string
|
||||
value: 81
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: region-name
|
||||
type: string
|
||||
value: 88
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: info-driver-name
|
||||
type: string
|
||||
|
@ -55,10 +105,35 @@ attribute-sets:
|
|||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: health-reporter-name
|
||||
type: string
|
||||
value: 115
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: trap-name
|
||||
type: string
|
||||
value: 130
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: trap-group-name
|
||||
type: string
|
||||
value: 135
|
||||
|
||||
-
|
||||
name: reload-failed
|
||||
type: u8
|
||||
value: 136
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: trap-policer-id
|
||||
type: u32
|
||||
value: 142
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
|
@ -103,6 +178,21 @@ attribute-sets:
|
|||
type: nest
|
||||
multi-attr: true
|
||||
nested-attributes: dl-reload-act-stats
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: rate-node-name
|
||||
type: string
|
||||
value: 168
|
||||
|
||||
# TODO: fill in the attributes in between
|
||||
|
||||
-
|
||||
name: linecard-index
|
||||
type: u32
|
||||
value: 171
|
||||
|
||||
-
|
||||
name: dl-dev-stats
|
||||
subset-of: devlink
|
||||
|
@ -188,6 +278,188 @@ operations:
|
|||
dump:
|
||||
reply: *get-reply
|
||||
|
||||
-
|
||||
name: port-get
|
||||
doc: Get devlink port instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit-port
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 5
|
||||
attributes: &port-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- port-index
|
||||
reply:
|
||||
value: 7
|
||||
attributes: *port-id-attrs
|
||||
dump:
|
||||
reply:
|
||||
value: 3 # due to a bug, port dump returns DEVLINK_CMD_NEW
|
||||
attributes: *port-id-attrs
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: sb-get
|
||||
doc: Get shared buffer instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 11
|
||||
attributes: &sb-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- sb-index
|
||||
reply: &sb-get-reply
|
||||
value: 11
|
||||
attributes: *sb-id-attrs
|
||||
dump:
|
||||
reply: *sb-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: sb-pool-get
|
||||
doc: Get shared buffer pool instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 15
|
||||
attributes: &sb-pool-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- sb-index
|
||||
- sb-pool-index
|
||||
reply: &sb-pool-get-reply
|
||||
value: 15
|
||||
attributes: *sb-pool-id-attrs
|
||||
dump:
|
||||
reply: *sb-pool-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: sb-port-pool-get
|
||||
doc: Get shared buffer port-pool combinations and threshold.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit-port
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 19
|
||||
attributes: &sb-port-pool-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- port-index
|
||||
- sb-index
|
||||
- sb-pool-index
|
||||
reply: &sb-port-pool-get-reply
|
||||
value: 19
|
||||
attributes: *sb-port-pool-id-attrs
|
||||
dump:
|
||||
reply: *sb-port-pool-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: sb-tc-pool-bind-get
|
||||
doc: Get shared buffer port-TC to pool bindings and threshold.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit-port
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 23
|
||||
attributes: &sb-tc-pool-bind-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- port-index
|
||||
- sb-index
|
||||
- sb-pool-type
|
||||
- sb-tc-index
|
||||
reply: &sb-tc-pool-bind-get-reply
|
||||
value: 23
|
||||
attributes: *sb-tc-pool-bind-id-attrs
|
||||
dump:
|
||||
reply: *sb-tc-pool-bind-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: param-get
|
||||
doc: Get param instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 38
|
||||
attributes: ¶m-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- param-name
|
||||
reply: ¶m-get-reply
|
||||
value: 38
|
||||
attributes: *param-id-attrs
|
||||
dump:
|
||||
reply: *param-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: region-get
|
||||
doc: Get region instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit-port-optional
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 42
|
||||
attributes: ®ion-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- port-index
|
||||
- region-name
|
||||
reply: ®ion-get-reply
|
||||
value: 42
|
||||
attributes: *region-id-attrs
|
||||
dump:
|
||||
reply: *region-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
|
@ -216,3 +488,173 @@ operations:
|
|||
- info-version-stored
|
||||
dump:
|
||||
reply: *info-get-reply
|
||||
|
||||
-
|
||||
name: health-reporter-get
|
||||
doc: Get health reporter instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit-port-optional
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
attributes: &health-reporter-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- port-index
|
||||
- health-reporter-name
|
||||
reply: &health-reporter-get-reply
|
||||
attributes: *health-reporter-id-attrs
|
||||
dump:
|
||||
reply: *health-reporter-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: trap-get
|
||||
doc: Get trap instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 61
|
||||
attributes: &trap-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- trap-name
|
||||
reply: &trap-get-reply
|
||||
value: 61
|
||||
attributes: *trap-id-attrs
|
||||
dump:
|
||||
reply: *trap-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: trap-group-get
|
||||
doc: Get trap group instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 65
|
||||
attributes: &trap-group-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- trap-group-name
|
||||
reply: &trap-group-get-reply
|
||||
value: 65
|
||||
attributes: *trap-group-id-attrs
|
||||
dump:
|
||||
reply: *trap-group-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: trap-policer-get
|
||||
doc: Get trap policer instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 69
|
||||
attributes: &trap-policer-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- trap-policer-id
|
||||
reply: &trap-policer-get-reply
|
||||
value: 69
|
||||
attributes: *trap-policer-id-attrs
|
||||
dump:
|
||||
reply: *trap-policer-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: rate-get
|
||||
doc: Get rate instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 74
|
||||
attributes: &rate-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- port-index
|
||||
- rate-node-name
|
||||
reply: &rate-get-reply
|
||||
value: 74
|
||||
attributes: *rate-id-attrs
|
||||
dump:
|
||||
reply: *rate-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: linecard-get
|
||||
doc: Get line card instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 78
|
||||
attributes: &linecard-id-attrs
|
||||
- bus-name
|
||||
- dev-name
|
||||
- linecard-index
|
||||
reply: &linecard-get-reply
|
||||
value: 78
|
||||
attributes: *linecard-id-attrs
|
||||
dump:
|
||||
reply: *linecard-get-reply
|
||||
|
||||
# TODO: fill in the operations in between
|
||||
|
||||
-
|
||||
name: selftests-get
|
||||
doc: Get device selftest instances.
|
||||
attribute-set: devlink
|
||||
dont-validate:
|
||||
- strict
|
||||
- dump
|
||||
|
||||
do:
|
||||
pre: devlink-nl-pre-doit
|
||||
post: devlink-nl-post-doit
|
||||
request:
|
||||
value: 82
|
||||
attributes: *dev-id-attrs
|
||||
reply: &selftests-get-reply
|
||||
value: 82
|
||||
attributes: *dev-id-attrs
|
||||
dump:
|
||||
reply: *selftests-get-reply
|
||||
|
|
|
@ -16,14 +16,120 @@ static const struct nla_policy devlink_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1]
|
|||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_PORT_GET - do */
|
||||
static const struct nla_policy devlink_port_get_nl_policy[DEVLINK_ATTR_PORT_INDEX + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_SB_GET - do */
|
||||
static const struct nla_policy devlink_sb_get_nl_policy[DEVLINK_ATTR_SB_INDEX + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_SB_POOL_GET - do */
|
||||
static const struct nla_policy devlink_sb_pool_get_nl_policy[DEVLINK_ATTR_SB_POOL_INDEX + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
|
||||
[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_SB_PORT_POOL_GET - do */
|
||||
static const struct nla_policy devlink_sb_port_pool_get_nl_policy[DEVLINK_ATTR_SB_POOL_INDEX + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[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_TC_POOL_BIND_GET - do */
|
||||
static const struct nla_policy devlink_sb_tc_pool_bind_get_nl_policy[DEVLINK_ATTR_SB_TC_INDEX + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[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_PARAM_GET - do */
|
||||
static const struct nla_policy devlink_param_get_nl_policy[DEVLINK_ATTR_PARAM_NAME + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_PARAM_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_REGION_GET - do */
|
||||
static const struct nla_policy devlink_region_get_nl_policy[DEVLINK_ATTR_REGION_NAME + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
|
||||
[DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_INFO_GET - do */
|
||||
static const struct nla_policy devlink_info_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_HEALTH_REPORTER_GET - do */
|
||||
static const struct nla_policy devlink_health_reporter_get_nl_policy[DEVLINK_ATTR_HEALTH_REPORTER_NAME + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
|
||||
[DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_TRAP_GET - do */
|
||||
static const struct nla_policy devlink_trap_get_nl_policy[DEVLINK_ATTR_TRAP_NAME + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_TRAP_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_TRAP_GROUP_GET - do */
|
||||
static const struct nla_policy devlink_trap_group_get_nl_policy[DEVLINK_ATTR_TRAP_GROUP_NAME + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_TRAP_GROUP_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_TRAP_POLICER_GET - do */
|
||||
static const struct nla_policy devlink_trap_policer_get_nl_policy[DEVLINK_ATTR_TRAP_POLICER_ID + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_TRAP_POLICER_ID] = { .type = NLA_U32, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_RATE_GET - do */
|
||||
static const struct nla_policy devlink_rate_get_nl_policy[DEVLINK_ATTR_RATE_NODE_NAME + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
|
||||
[DEVLINK_ATTR_RATE_NODE_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_LINECARD_GET - do */
|
||||
static const struct nla_policy devlink_linecard_get_nl_policy[DEVLINK_ATTR_LINECARD_INDEX + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_LINECARD_INDEX] = { .type = NLA_U32, },
|
||||
};
|
||||
|
||||
/* DEVLINK_CMD_SELFTESTS_GET - do */
|
||||
static const struct nla_policy devlink_selftests_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
|
||||
[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
|
||||
[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
|
||||
};
|
||||
|
||||
/* Ops table for devlink */
|
||||
const struct genl_split_ops devlink_nl_ops[4] = {
|
||||
const struct genl_split_ops devlink_nl_ops[32] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
|
@ -40,6 +146,118 @@ const struct genl_split_ops devlink_nl_ops[4] = {
|
|||
.dumpit = devlink_nl_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit_port,
|
||||
.doit = devlink_nl_port_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_port_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_PORT_INDEX,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_port_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_sb_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_sb_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_SB_INDEX,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_sb_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_POOL_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_sb_pool_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_sb_pool_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_SB_POOL_INDEX,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_POOL_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_sb_pool_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_PORT_POOL_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit_port,
|
||||
.doit = devlink_nl_sb_port_pool_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_sb_port_pool_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_SB_POOL_INDEX,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_PORT_POOL_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_sb_port_pool_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_TC_POOL_BIND_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit_port,
|
||||
.doit = devlink_nl_sb_tc_pool_bind_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_sb_tc_pool_bind_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_SB_TC_INDEX,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_TC_POOL_BIND_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_sb_tc_pool_bind_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PARAM_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_param_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_param_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_PARAM_NAME,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PARAM_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_param_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_REGION_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit_port_optional,
|
||||
.doit = devlink_nl_region_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_region_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_REGION_NAME,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_REGION_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_region_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_INFO_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
|
@ -56,4 +274,116 @@ const struct genl_split_ops devlink_nl_ops[4] = {
|
|||
.dumpit = devlink_nl_info_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit_port_optional,
|
||||
.doit = devlink_nl_health_reporter_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_health_reporter_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_HEALTH_REPORTER_NAME,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_health_reporter_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_TRAP_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_trap_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_trap_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_TRAP_NAME,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_TRAP_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_trap_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_TRAP_GROUP_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_trap_group_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_trap_group_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_TRAP_GROUP_NAME,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_TRAP_GROUP_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_trap_group_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_TRAP_POLICER_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_trap_policer_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_trap_policer_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_TRAP_POLICER_ID,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_TRAP_POLICER_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_trap_policer_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_RATE_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_rate_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_rate_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_RATE_NODE_NAME,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_RATE_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_rate_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_LINECARD_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_linecard_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_linecard_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_LINECARD_INDEX,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_LINECARD_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_linecard_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SELFTESTS_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.doit = devlink_nl_selftests_get_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
.policy = devlink_selftests_get_nl_policy,
|
||||
.maxattr = DEVLINK_ATTR_DEV_NAME,
|
||||
.flags = GENL_CMD_CAP_DO,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SELFTESTS_GET,
|
||||
.validate = GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_selftests_get_dumpit,
|
||||
.flags = GENL_CMD_CAP_DUMP,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -12,18 +12,68 @@
|
|||
#include <uapi/linux/devlink.h>
|
||||
|
||||
/* Ops table for devlink */
|
||||
extern const struct genl_split_ops devlink_nl_ops[4];
|
||||
extern const struct genl_split_ops devlink_nl_ops[32];
|
||||
|
||||
int devlink_nl_pre_doit(const struct genl_split_ops *ops, struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
int devlink_nl_pre_doit_port(const struct genl_split_ops *ops,
|
||||
struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_pre_doit_port_optional(const struct genl_split_ops *ops,
|
||||
struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
void
|
||||
devlink_nl_post_doit(const struct genl_split_ops *ops, struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
|
||||
int devlink_nl_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb);
|
||||
int devlink_nl_port_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_port_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_sb_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_sb_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb);
|
||||
int devlink_nl_sb_pool_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_sb_pool_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_sb_port_pool_get_doit(struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
int devlink_nl_sb_port_pool_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_sb_tc_pool_bind_get_doit(struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
int devlink_nl_sb_tc_pool_bind_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_param_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_param_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_region_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_region_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_info_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_info_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_health_reporter_get_doit(struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
int devlink_nl_health_reporter_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_trap_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_trap_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_trap_group_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_trap_group_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_trap_policer_get_doit(struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
int devlink_nl_trap_policer_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_rate_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_rate_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_linecard_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_linecard_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int devlink_nl_selftests_get_doit(struct sk_buff *skb, struct genl_info *info);
|
||||
int devlink_nl_selftests_get_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
|
||||
#endif /* _LINUX_DEVLINK_GEN_H */
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue