]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
netdevsim: Add devlink port resource registration
authorOr Har-Toov <ohartoov@nvidia.com>
Tue, 7 Apr 2026 19:40:59 +0000 (22:40 +0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 9 Apr 2026 02:55:38 +0000 (19:55 -0700)
Register port-level resources for netdevsim ports to enable testing
of the port resource infrastructure.

Signed-off-by: Or Har-Toov <ohartoov@nvidia.com>
Reviewed-by: Shay Drori <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20260407194107.148063-5-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/netdevsim/dev.c
drivers/net/netdevsim/netdevsim.h

index e82de0fd3157940f6dacb567608d6550d89b2d81..1e06e781c835f0df9897e7c01754cdbc8aafaded 100644 (file)
@@ -1486,9 +1486,25 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, enum nsim_dev_port_typ
        if (err)
                goto err_port_free;
 
+       if (nsim_dev_port_is_pf(nsim_dev_port)) {
+               u64 parent_id = DEVLINK_RESOURCE_ID_PARENT_TOP;
+               struct devlink_resource_size_params params = {
+                       .size_max = 100,
+                       .size_granularity = 1,
+                       .unit = DEVLINK_RESOURCE_UNIT_ENTRY
+               };
+
+               err = devl_port_resource_register(devlink_port,
+                                                 "test_resource", 20,
+                                                 NSIM_PORT_RESOURCE_TEST,
+                                                 parent_id, &params);
+               if (err)
+                       goto err_dl_port_unregister;
+       }
+
        err = nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port);
        if (err)
-               goto err_dl_port_unregister;
+               goto err_port_resource_unregister;
 
        nsim_dev_port->ns = nsim_create(nsim_dev, nsim_dev_port, perm_addr);
        if (IS_ERR(nsim_dev_port->ns)) {
@@ -1511,6 +1527,9 @@ err_nsim_destroy:
        nsim_destroy(nsim_dev_port->ns);
 err_port_debugfs_exit:
        nsim_dev_port_debugfs_exit(nsim_dev_port);
+err_port_resource_unregister:
+       if (nsim_dev_port_is_pf(nsim_dev_port))
+               devl_port_resources_unregister(devlink_port);
 err_dl_port_unregister:
        devl_port_unregister(devlink_port);
 err_port_free:
@@ -1527,6 +1546,8 @@ static void __nsim_dev_port_del(struct nsim_dev_port *nsim_dev_port)
                devl_rate_leaf_destroy(&nsim_dev_port->devlink_port);
        nsim_destroy(nsim_dev_port->ns);
        nsim_dev_port_debugfs_exit(nsim_dev_port);
+       if (nsim_dev_port_is_pf(nsim_dev_port))
+               devl_port_resources_unregister(devlink_port);
        devl_port_unregister(devlink_port);
        kfree(nsim_dev_port);
 }
index c904e14f6b3f934aa3beadf4ec0e15a98c322d60..c7de53706ec49d818135b6829d6ee2daa103369c 100644 (file)
@@ -224,6 +224,10 @@ enum nsim_resource_id {
        NSIM_RESOURCE_NEXTHOPS,
 };
 
+enum nsim_port_resource_id {
+       NSIM_PORT_RESOURCE_TEST = 1,
+};
+
 struct nsim_dev_health {
        struct devlink_health_reporter *empty_reporter;
        struct devlink_health_reporter *dummy_reporter;