Commit 7d3c6fec authored by Jiri Pirko's avatar Jiri Pirko Committed by Jakub Kicinski

devlink: pass flags as an arg of dump_one() callback

In order to easily set NLM_F_DUMP_FILTERED for partial dumps, pass the
flags as an arg of dump_one() callback. Currently, it is always
NLM_F_MULTI.
Signed-off-by: default avatarJiri Pirko <jiri@nvidia.com>
Acked-by: default avatarJakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/20230811155714.1736405-7-jiri@resnulli.usSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 24c8e56d
...@@ -218,11 +218,11 @@ int devlink_nl_get_doit(struct sk_buff *skb, struct genl_info *info) ...@@ -218,11 +218,11 @@ int devlink_nl_get_doit(struct sk_buff *skb, struct genl_info *info)
static int static int
devlink_nl_get_dump_one(struct sk_buff *msg, struct devlink *devlink, devlink_nl_get_dump_one(struct sk_buff *msg, struct devlink *devlink,
struct netlink_callback *cb) struct netlink_callback *cb, int flags)
{ {
return devlink_nl_fill(msg, devlink, DEVLINK_CMD_NEW, return devlink_nl_fill(msg, devlink, DEVLINK_CMD_NEW,
NETLINK_CB(cb->skb).portid, NETLINK_CB(cb->skb).portid,
cb->nlh->nlmsg_seq, NLM_F_MULTI); cb->nlh->nlmsg_seq, flags);
} }
int devlink_nl_get_dumpit(struct sk_buff *msg, struct netlink_callback *cb) int devlink_nl_get_dumpit(struct sk_buff *msg, struct netlink_callback *cb)
...@@ -828,13 +828,13 @@ int devlink_nl_info_get_doit(struct sk_buff *skb, struct genl_info *info) ...@@ -828,13 +828,13 @@ int devlink_nl_info_get_doit(struct sk_buff *skb, struct genl_info *info)
static int static int
devlink_nl_info_get_dump_one(struct sk_buff *msg, struct devlink *devlink, devlink_nl_info_get_dump_one(struct sk_buff *msg, struct devlink *devlink,
struct netlink_callback *cb) struct netlink_callback *cb, int flags)
{ {
int err; int err;
err = devlink_nl_info_fill(msg, devlink, DEVLINK_CMD_INFO_GET, err = devlink_nl_info_fill(msg, devlink, DEVLINK_CMD_INFO_GET,
NETLINK_CB(cb->skb).portid, NETLINK_CB(cb->skb).portid,
cb->nlh->nlmsg_seq, NLM_F_MULTI, cb->nlh->nlmsg_seq, flags,
cb->extack); cb->extack);
if (err == -EOPNOTSUPP) if (err == -EOPNOTSUPP)
err = 0; err = 0;
...@@ -1231,14 +1231,15 @@ int devlink_nl_selftests_get_doit(struct sk_buff *skb, struct genl_info *info) ...@@ -1231,14 +1231,15 @@ int devlink_nl_selftests_get_doit(struct sk_buff *skb, struct genl_info *info)
static int devlink_nl_selftests_get_dump_one(struct sk_buff *msg, static int devlink_nl_selftests_get_dump_one(struct sk_buff *msg,
struct devlink *devlink, struct devlink *devlink,
struct netlink_callback *cb) struct netlink_callback *cb,
int flags)
{ {
if (!devlink->ops->selftest_check) if (!devlink->ops->selftest_check)
return 0; return 0;
return devlink_nl_selftests_fill(msg, devlink, return devlink_nl_selftests_fill(msg, devlink,
NETLINK_CB(cb->skb).portid, NETLINK_CB(cb->skb).portid,
cb->nlh->nlmsg_seq, NLM_F_MULTI, cb->nlh->nlmsg_seq, flags,
cb->extack); cb->extack);
} }
......
...@@ -115,7 +115,8 @@ struct devlink_nl_dump_state { ...@@ -115,7 +115,8 @@ struct devlink_nl_dump_state {
typedef int devlink_nl_dump_one_func_t(struct sk_buff *msg, typedef int devlink_nl_dump_one_func_t(struct sk_buff *msg,
struct devlink *devlink, struct devlink *devlink,
struct netlink_callback *cb); struct netlink_callback *cb,
int flags);
extern const struct genl_small_ops devlink_nl_small_ops[54]; extern const struct genl_small_ops devlink_nl_small_ops[54];
......
...@@ -386,7 +386,8 @@ int devlink_nl_health_reporter_get_doit(struct sk_buff *skb, ...@@ -386,7 +386,8 @@ int devlink_nl_health_reporter_get_doit(struct sk_buff *skb,
static int devlink_nl_health_reporter_get_dump_one(struct sk_buff *msg, static int devlink_nl_health_reporter_get_dump_one(struct sk_buff *msg,
struct devlink *devlink, struct devlink *devlink,
struct netlink_callback *cb) struct netlink_callback *cb,
int flags)
{ {
struct devlink_nl_dump_state *state = devlink_dump_state(cb); struct devlink_nl_dump_state *state = devlink_dump_state(cb);
struct devlink_health_reporter *reporter; struct devlink_health_reporter *reporter;
...@@ -404,7 +405,7 @@ static int devlink_nl_health_reporter_get_dump_one(struct sk_buff *msg, ...@@ -404,7 +405,7 @@ static int devlink_nl_health_reporter_get_dump_one(struct sk_buff *msg,
DEVLINK_CMD_HEALTH_REPORTER_GET, DEVLINK_CMD_HEALTH_REPORTER_GET,
NETLINK_CB(cb->skb).portid, NETLINK_CB(cb->skb).portid,
cb->nlh->nlmsg_seq, cb->nlh->nlmsg_seq,
NLM_F_MULTI); flags);
if (err) { if (err) {
state->idx = idx; state->idx = idx;
return err; return err;
...@@ -421,7 +422,7 @@ static int devlink_nl_health_reporter_get_dump_one(struct sk_buff *msg, ...@@ -421,7 +422,7 @@ static int devlink_nl_health_reporter_get_dump_one(struct sk_buff *msg,
DEVLINK_CMD_HEALTH_REPORTER_GET, DEVLINK_CMD_HEALTH_REPORTER_GET,
NETLINK_CB(cb->skb).portid, NETLINK_CB(cb->skb).portid,
cb->nlh->nlmsg_seq, cb->nlh->nlmsg_seq,
NLM_F_MULTI); flags);
if (err) { if (err) {
state->idx = idx; state->idx = idx;
return err; return err;
......
This diff is collapsed.
...@@ -182,7 +182,7 @@ int devlink_nl_dumpit(struct sk_buff *msg, struct netlink_callback *cb, ...@@ -182,7 +182,7 @@ int devlink_nl_dumpit(struct sk_buff *msg, struct netlink_callback *cb,
devl_lock(devlink); devl_lock(devlink);
if (devl_is_registered(devlink)) if (devl_is_registered(devlink))
err = dump_one(msg, devlink, cb); err = dump_one(msg, devlink, cb, NLM_F_MULTI);
else else
err = 0; err = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment