mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 07:23:14 +00:00
devlink: convert reporters dump to devlink_nl_instance_iter_dump()
Benefit from recently introduced instance iteration and convert reporters .dumpit generic netlink callback to use it. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
2557396808
commit
19be51a93d
@ -164,6 +164,7 @@ extern const struct devlink_gen_cmd devl_gen_selftests;
|
||||
extern const struct devlink_gen_cmd devl_gen_param;
|
||||
extern const struct devlink_gen_cmd devl_gen_region;
|
||||
extern const struct devlink_gen_cmd devl_gen_info;
|
||||
extern const struct devlink_gen_cmd devl_gen_health_reporter;
|
||||
extern const struct devlink_gen_cmd devl_gen_trap;
|
||||
extern const struct devlink_gen_cmd devl_gen_trap_group;
|
||||
extern const struct devlink_gen_cmd devl_gen_trap_policer;
|
||||
|
@ -7768,70 +7768,59 @@ static int devlink_nl_cmd_health_reporter_get_doit(struct sk_buff *skb,
|
||||
}
|
||||
|
||||
static int
|
||||
devlink_nl_cmd_health_reporter_get_dumpit(struct sk_buff *msg,
|
||||
struct netlink_callback *cb)
|
||||
devlink_nl_cmd_health_reporter_get_dump_one(struct sk_buff *msg,
|
||||
struct devlink *devlink,
|
||||
struct netlink_callback *cb)
|
||||
{
|
||||
struct devlink_nl_dump_state *state = devlink_dump_state(cb);
|
||||
struct devlink *devlink;
|
||||
struct devlink_health_reporter *reporter;
|
||||
struct devlink_port *port;
|
||||
unsigned long port_index;
|
||||
int idx = 0;
|
||||
int err;
|
||||
|
||||
devlink_dump_for_each_instance_get(msg, state, devlink) {
|
||||
struct devlink_health_reporter *reporter;
|
||||
struct devlink_port *port;
|
||||
unsigned long port_index;
|
||||
int idx = 0;
|
||||
|
||||
devl_lock(devlink);
|
||||
if (!devl_is_registered(devlink))
|
||||
goto next_devlink;
|
||||
|
||||
list_for_each_entry(reporter, &devlink->reporter_list,
|
||||
list) {
|
||||
list_for_each_entry(reporter, &devlink->reporter_list, list) {
|
||||
if (idx < state->idx) {
|
||||
idx++;
|
||||
continue;
|
||||
}
|
||||
err = devlink_nl_health_reporter_fill(msg, reporter,
|
||||
DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
NETLINK_CB(cb->skb).portid,
|
||||
cb->nlh->nlmsg_seq,
|
||||
NLM_F_MULTI);
|
||||
if (err) {
|
||||
state->idx = idx;
|
||||
return err;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
xa_for_each(&devlink->ports, port_index, port) {
|
||||
list_for_each_entry(reporter, &port->reporter_list, list) {
|
||||
if (idx < state->idx) {
|
||||
idx++;
|
||||
continue;
|
||||
}
|
||||
err = devlink_nl_health_reporter_fill(
|
||||
msg, reporter, DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq,
|
||||
NLM_F_MULTI);
|
||||
err = devlink_nl_health_reporter_fill(msg, reporter,
|
||||
DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
NETLINK_CB(cb->skb).portid,
|
||||
cb->nlh->nlmsg_seq,
|
||||
NLM_F_MULTI);
|
||||
if (err) {
|
||||
devl_unlock(devlink);
|
||||
devlink_put(devlink);
|
||||
state->idx = idx;
|
||||
goto out;
|
||||
return err;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
|
||||
xa_for_each(&devlink->ports, port_index, port) {
|
||||
list_for_each_entry(reporter, &port->reporter_list, list) {
|
||||
if (idx < state->idx) {
|
||||
idx++;
|
||||
continue;
|
||||
}
|
||||
err = devlink_nl_health_reporter_fill(
|
||||
msg, reporter,
|
||||
DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
NETLINK_CB(cb->skb).portid,
|
||||
cb->nlh->nlmsg_seq, NLM_F_MULTI);
|
||||
if (err) {
|
||||
devl_unlock(devlink);
|
||||
devlink_put(devlink);
|
||||
state->idx = idx;
|
||||
goto out;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
next_devlink:
|
||||
devl_unlock(devlink);
|
||||
devlink_put(devlink);
|
||||
}
|
||||
out:
|
||||
return msg->len;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct devlink_gen_cmd devl_gen_health_reporter = {
|
||||
.dump_one = devlink_nl_cmd_health_reporter_get_dump_one,
|
||||
};
|
||||
|
||||
static int
|
||||
devlink_nl_cmd_health_reporter_set_doit(struct sk_buff *skb,
|
||||
struct genl_info *info)
|
||||
@ -9193,7 +9182,7 @@ const struct genl_small_ops devlink_nl_ops[56] = {
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_health_reporter_get_doit,
|
||||
.dumpit = devlink_nl_cmd_health_reporter_get_dumpit,
|
||||
.dumpit = devlink_nl_instance_iter_dump,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK_OR_PORT,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
|
@ -187,6 +187,7 @@ static const struct devlink_gen_cmd *devl_gen_cmds[] = {
|
||||
[DEVLINK_CMD_PARAM_GET] = &devl_gen_param,
|
||||
[DEVLINK_CMD_REGION_GET] = &devl_gen_region,
|
||||
[DEVLINK_CMD_INFO_GET] = &devl_gen_info,
|
||||
[DEVLINK_CMD_HEALTH_REPORTER_GET] = &devl_gen_health_reporter,
|
||||
[DEVLINK_CMD_RATE_GET] = &devl_gen_rate_get,
|
||||
[DEVLINK_CMD_TRAP_GET] = &devl_gen_trap,
|
||||
[DEVLINK_CMD_TRAP_GROUP_GET] = &devl_gen_trap_group,
|
||||
|
Loading…
x
Reference in New Issue
Block a user