]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
devlink: expose devlink instance index over netlink
authorJiri Pirko <jiri@nvidia.com>
Thu, 12 Mar 2026 10:03:55 +0000 (11:03 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 14 Mar 2026 20:08:46 +0000 (13:08 -0700)
Each devlink instance has an internally assigned index used for xarray
storage. Expose it as a new DEVLINK_ATTR_INDEX uint attribute alongside
the existing bus_name and dev_name handle.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Link: https://patch.msgid.link/20260312100407.551173-2-jiri@resnulli.us
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Documentation/netlink/specs/devlink.yaml
include/uapi/linux/devlink.h
net/devlink/devl_internal.h
net/devlink/port.c

index 837112da673807bfc0e8fa5d1092aeb4090dd6c2..1bed67a0eefb64264a2cac7d2d7e80ce47df3100 100644 (file)
@@ -867,6 +867,10 @@ attribute-sets:
         type: flag
         doc: Request restoring parameter to its default value.
         value: 183
+      -
+        name: index
+        type: uint
+        doc: Unique devlink instance index.
   -
     name: dl-dev-stats
     subset-of: devlink
@@ -1311,6 +1315,7 @@ operations:
           attributes:
             - bus-name
             - dev-name
+            - index
             - reload-failed
             - dev-stats
       dump:
index e7d6b6d1347063f09e7eda0f660fee7e792f4408..1ba3436db4ae3ea166824dde826ca60ba1cd755a 100644 (file)
@@ -642,6 +642,8 @@ enum devlink_attr {
        DEVLINK_ATTR_PARAM_VALUE_DEFAULT,       /* dynamic */
        DEVLINK_ATTR_PARAM_RESET_DEFAULT,       /* flag */
 
+       DEVLINK_ATTR_INDEX,                     /* uint */
+
        /* Add new attributes above here, update the spec in
         * Documentation/netlink/specs/devlink.yaml and re-generate
         * net/devlink/netlink_gen.c.
index 1377864383bc265592d506bf548395a744d8c30d..31fa98af418e810ebd4da32024119e01ef8fc8a1 100644 (file)
@@ -178,6 +178,8 @@ devlink_nl_put_handle(struct sk_buff *msg, struct devlink *devlink)
                return -EMSGSIZE;
        if (nla_put_string(msg, DEVLINK_ATTR_DEV_NAME, dev_name(devlink->dev)))
                return -EMSGSIZE;
+       if (nla_put_uint(msg, DEVLINK_ATTR_INDEX, devlink->index))
+               return -EMSGSIZE;
        return 0;
 }
 
index 93d8a25bb920cf9522e00e2824d6f9fd9670d1bb..1ff609571ea4ac4b1fd7c986841dfbf4582b7f7b 100644 (file)
@@ -222,6 +222,7 @@ size_t devlink_nl_port_handle_size(struct devlink_port *devlink_port)
 
        return nla_total_size(strlen(devlink->dev->bus->name) + 1) /* DEVLINK_ATTR_BUS_NAME */
             + nla_total_size(strlen(dev_name(devlink->dev)) + 1) /* DEVLINK_ATTR_DEV_NAME */
+            + nla_total_size(8) /* DEVLINK_ATTR_INDEX */
             + nla_total_size(4); /* DEVLINK_ATTR_PORT_INDEX */
 }