From: Or Har-Toov <ohartoov@nvidia.com>
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>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
drivers/net/netdevsim/dev.c | 22 +++++++++++++++++++++-
drivers/net/netdevsim/netdevsim.h | 4 ++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c
index dfd571b22107..ebda1b961664 100644
--- a/drivers/net/netdevsim/dev.c
+++ b/drivers/net/netdevsim/dev.c
@@ -1486,9 +1486,24 @@ 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, "max_sfs", 20,
+ NSIM_PORT_RESOURCE_MAX_SFS,
+ parent_id, ¶ms);
+ 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 +1526,9 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, enum nsim_dev_port_typ
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 +1545,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);
}
diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h
index f767fc8a7505..11ea1a52924a 100644
--- a/drivers/net/netdevsim/netdevsim.h
+++ b/drivers/net/netdevsim/netdevsim.h
@@ -224,6 +224,10 @@ enum nsim_resource_id {
NSIM_RESOURCE_NEXTHOPS,
};
+enum nsim_port_resource_id {
+ NSIM_PORT_RESOURCE_MAX_SFS = 1,
+};
+
struct nsim_dev_health {
struct devlink_health_reporter *empty_reporter;
struct devlink_health_reporter *dummy_reporter;
--
2.40.1
Tue, Feb 03, 2026 at 08:10:31AM +0100, tariqt@nvidia.com wrote:
>From: Or Har-Toov <ohartoov@nvidia.com>
>
>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>
>Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
>---
> drivers/net/netdevsim/dev.c | 22 +++++++++++++++++++++-
> drivers/net/netdevsim/netdevsim.h | 4 ++++
> 2 files changed, 25 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c
>index dfd571b22107..ebda1b961664 100644
>--- a/drivers/net/netdevsim/dev.c
>+++ b/drivers/net/netdevsim/dev.c
>@@ -1486,9 +1486,24 @@ 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, "max_sfs", 20,
Two questions:
1) Why you have "max_sfs" here and "max_SFs" in mlx5? Just curious
2) Why you don't have the name made up completely instead, like "test1"
or something? It does not really affect anything in netdevsim.
>+ NSIM_PORT_RESOURCE_MAX_SFS,
>+ parent_id, ¶ms);
>+ 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 +1526,9 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, enum nsim_dev_port_typ
> 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 +1545,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);
> }
>diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h
>index f767fc8a7505..11ea1a52924a 100644
>--- a/drivers/net/netdevsim/netdevsim.h
>+++ b/drivers/net/netdevsim/netdevsim.h
>@@ -224,6 +224,10 @@ enum nsim_resource_id {
> NSIM_RESOURCE_NEXTHOPS,
> };
>
>+enum nsim_port_resource_id {
>+ NSIM_PORT_RESOURCE_MAX_SFS = 1,
>+};
>+
> struct nsim_dev_health {
> struct devlink_health_reporter *empty_reporter;
> struct devlink_health_reporter *dummy_reporter;
>--
>2.40.1
>
© 2016 - 2026 Red Hat, Inc.