Message ID | 1606389296-3906-3-git-send-email-moshe@mellanox.com |
---|---|
State | Superseded |
Headers | show |
Series | devlink: Add devlink reload action limit and stats | expand |
On 11/26/20 4:14 AM, Moshe Shemesh wrote: > diff --git a/devlink/devlink.c b/devlink/devlink.c > index a9ba0072..bd588869 100644 > --- a/devlink/devlink.c > +++ b/devlink/devlink.c > @@ -2974,17 +2974,11 @@ static int cmd_dev_param(struct dl *dl) > pr_err("Command \"%s\" not found\n", dl_argv(dl)); > return -ENOENT; > } > -static int cmd_dev_show_cb(const struct nlmsghdr *nlh, void *data) > + > +static void pr_out_dev(struct dl *dl, struct nlattr **tb) why 'pr_out_dev'? there is no 'dev' argument. > { > - struct dl *dl = data; > - struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {}; > - struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh); > uint8_t reload_failed = 0; > > - mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb); > - if (!tb[DEVLINK_ATTR_BUS_NAME] || !tb[DEVLINK_ATTR_DEV_NAME]) > - return MNL_CB_ERROR; > - > if (tb[DEVLINK_ATTR_RELOAD_FAILED]) > reload_failed = mnl_attr_get_u8(tb[DEVLINK_ATTR_RELOAD_FAILED]); >
On 11/29/2020 11:15 PM, David Ahern wrote: > On 11/26/20 4:14 AM, Moshe Shemesh wrote: >> diff --git a/devlink/devlink.c b/devlink/devlink.c >> index a9ba0072..bd588869 100644 >> --- a/devlink/devlink.c >> +++ b/devlink/devlink.c >> @@ -2974,17 +2974,11 @@ static int cmd_dev_param(struct dl *dl) >> pr_err("Command \"%s\" not found\n", dl_argv(dl)); >> return -ENOENT; >> } >> -static int cmd_dev_show_cb(const struct nlmsghdr *nlh, void *data) >> + >> +static void pr_out_dev(struct dl *dl, struct nlattr **tb) > why 'pr_out_dev'? there is no 'dev' argument. Because it prints command dev show output, the data is in tb argument and includes bus name, dev name and dev stats. >> { >> - struct dl *dl = data; >> - struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {}; >> - struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh); >> uint8_t reload_failed = 0; >> >> - mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb); >> - if (!tb[DEVLINK_ATTR_BUS_NAME] || !tb[DEVLINK_ATTR_DEV_NAME]) >> - return MNL_CB_ERROR; >> - >> if (tb[DEVLINK_ATTR_RELOAD_FAILED]) >> reload_failed = mnl_attr_get_u8(tb[DEVLINK_ATTR_RELOAD_FAILED]); >>
diff --git a/devlink/devlink.c b/devlink/devlink.c index a9ba0072..bd588869 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -2974,17 +2974,11 @@ static int cmd_dev_param(struct dl *dl) pr_err("Command \"%s\" not found\n", dl_argv(dl)); return -ENOENT; } -static int cmd_dev_show_cb(const struct nlmsghdr *nlh, void *data) + +static void pr_out_dev(struct dl *dl, struct nlattr **tb) { - struct dl *dl = data; - struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {}; - struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh); uint8_t reload_failed = 0; - mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb); - if (!tb[DEVLINK_ATTR_BUS_NAME] || !tb[DEVLINK_ATTR_DEV_NAME]) - return MNL_CB_ERROR; - if (tb[DEVLINK_ATTR_RELOAD_FAILED]) reload_failed = mnl_attr_get_u8(tb[DEVLINK_ATTR_RELOAD_FAILED]); @@ -2996,7 +2990,19 @@ static int cmd_dev_show_cb(const struct nlmsghdr *nlh, void *data) } else { pr_out_handle(dl, tb); } +} +static int cmd_dev_show_cb(const struct nlmsghdr *nlh, void *data) +{ + struct dl *dl = data; + struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {}; + struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh); + + mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb); + if (!tb[DEVLINK_ATTR_BUS_NAME] || !tb[DEVLINK_ATTR_DEV_NAME]) + return MNL_CB_ERROR; + + pr_out_dev(dl, tb); return MNL_CB_OK; } @@ -4838,7 +4844,7 @@ static int cmd_mon_show_cb(const struct nlmsghdr *nlh, void *data) if (!tb[DEVLINK_ATTR_BUS_NAME] || !tb[DEVLINK_ATTR_DEV_NAME]) return MNL_CB_ERROR; pr_out_mon_header(genl->cmd); - pr_out_handle(dl, tb); + pr_out_dev(dl, tb); pr_out_mon_footer(); break; case DEVLINK_CMD_PORT_GET: /* fall through */