netlink: specs: devlink: extend health reporter dump attributes by port index
authorJiri Pirko <jiri@nvidia.com>
Fri, 11 Aug 2023 15:57:14 +0000 (17:57 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 14 Aug 2023 18:47:25 +0000 (11:47 -0700)
Allow user to pass port index for health reporter dump request.

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-14-jiri@resnulli.us
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Documentation/netlink/specs/devlink.yaml
net/devlink/netlink_gen.c
tools/net/ynl/generated/devlink-user.c
tools/net/ynl/generated/devlink-user.h

index 6dbebee..d1ebcd9 100644 (file)
@@ -516,7 +516,7 @@ operations:
           attributes: *health-reporter-id-attrs
       dump:
         request:
-          attributes: *dev-id-attrs
+          attributes: *port-id-attrs
         reply: *health-reporter-get-reply
 
       # TODO: fill in the operations in between
index 5f3e980..467b7a4 100644 (file)
@@ -129,9 +129,10 @@ static const struct nla_policy devlink_health_reporter_get_do_nl_policy[DEVLINK_
 };
 
 /* DEVLINK_CMD_HEALTH_REPORTER_GET - dump */
-static const struct nla_policy devlink_health_reporter_get_dump_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
+static const struct nla_policy devlink_health_reporter_get_dump_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_TRAP_GET - do */
@@ -373,7 +374,7 @@ const struct genl_split_ops devlink_nl_ops[32] = {
                .cmd            = DEVLINK_CMD_HEALTH_REPORTER_GET,
                .dumpit         = devlink_nl_health_reporter_get_dumpit,
                .policy         = devlink_health_reporter_get_dump_nl_policy,
-               .maxattr        = DEVLINK_ATTR_DEV_NAME,
+               .maxattr        = DEVLINK_ATTR_PORT_INDEX,
                .flags          = GENL_CMD_CAP_DUMP,
        },
        {
index 80ee9d2..3a8d849 100644 (file)
@@ -2079,6 +2079,8 @@ devlink_health_reporter_get_dump(struct ynl_sock *ys,
                mnl_attr_put_strz(nlh, DEVLINK_ATTR_BUS_NAME, req->bus_name);
        if (req->_present.dev_name_len)
                mnl_attr_put_strz(nlh, DEVLINK_ATTR_DEV_NAME, req->dev_name);
+       if (req->_present.port_index)
+               mnl_attr_put_u32(nlh, DEVLINK_ATTR_PORT_INDEX, req->port_index);
 
        err = ynl_exec_dump(ys, nlh, &yds);
        if (err < 0)
index 12530f1..4b686d1 100644 (file)
@@ -1242,10 +1242,12 @@ struct devlink_health_reporter_get_req_dump {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
+               __u32 port_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
+       __u32 port_index;
 };
 
 static inline struct devlink_health_reporter_get_req_dump *
@@ -1276,6 +1278,13 @@ devlink_health_reporter_get_req_dump_set_dev_name(struct devlink_health_reporter
        memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
        req->dev_name[req->_present.dev_name_len] = 0;
 }
+static inline void
+devlink_health_reporter_get_req_dump_set_port_index(struct devlink_health_reporter_get_req_dump *req,
+                                                   __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
 
 struct devlink_health_reporter_get_list {
        struct devlink_health_reporter_get_list *next;