]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
netdevsim: register a new devlink param with default value interface
authorDaniel Zahka <daniel.zahka@gmail.com>
Wed, 19 Nov 2025 02:50:35 +0000 (18:50 -0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 21 Nov 2025 03:01:23 +0000 (19:01 -0800)
Create a new devlink param, test2, that supports default param actions
via the devlink_param::get_default() and
devlink_param::reset_default() functions.

Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Daniel Zahka <daniel.zahka@gmail.com>
Link: https://patch.msgid.link/20251119025038.651131-6-daniel.zahka@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/netdevsim/dev.c
drivers/net/netdevsim/netdevsim.h

index 95f66c1f59db88ceafbf656b56081664168e5260..2683a989873e1d68651918bd9d745549b9c5e237 100644 (file)
@@ -320,6 +320,8 @@ static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev)
                           &nsim_dev->max_macs);
        debugfs_create_bool("test1", 0600, nsim_dev->ddir,
                            &nsim_dev->test1);
+       debugfs_create_u32("test2", 0600, nsim_dev->ddir,
+                          &nsim_dev->test2);
        nsim_dev->take_snapshot = debugfs_create_file("take_snapshot",
                                                      0200,
                                                      nsim_dev->ddir,
@@ -521,8 +523,53 @@ err_out:
 enum nsim_devlink_param_id {
        NSIM_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX,
        NSIM_DEVLINK_PARAM_ID_TEST1,
+       NSIM_DEVLINK_PARAM_ID_TEST2,
 };
 
+static int
+nsim_devlink_param_test2_get(struct devlink *devlink, u32 id,
+                            struct devlink_param_gset_ctx *ctx,
+                            struct netlink_ext_ack *extack)
+{
+       struct nsim_dev *nsim_dev = devlink_priv(devlink);
+
+       ctx->val.vu32 = nsim_dev->test2;
+       return 0;
+}
+
+static int
+nsim_devlink_param_test2_set(struct devlink *devlink, u32 id,
+                            struct devlink_param_gset_ctx *ctx,
+                            struct netlink_ext_ack *extack)
+{
+       struct nsim_dev *nsim_dev = devlink_priv(devlink);
+
+       nsim_dev->test2 = ctx->val.vu32;
+       return 0;
+}
+
+#define NSIM_DEV_TEST2_DEFAULT 1234
+
+static int
+nsim_devlink_param_test2_get_default(struct devlink *devlink, u32 id,
+                                    struct devlink_param_gset_ctx *ctx,
+                                    struct netlink_ext_ack *extack)
+{
+       ctx->val.vu32 = NSIM_DEV_TEST2_DEFAULT;
+       return 0;
+}
+
+static int
+nsim_devlink_param_test2_reset_default(struct devlink *devlink, u32 id,
+                                      enum devlink_param_cmode cmode,
+                                      struct netlink_ext_ack *extack)
+{
+       struct nsim_dev *nsim_dev = devlink_priv(devlink);
+
+       nsim_dev->test2 = NSIM_DEV_TEST2_DEFAULT;
+       return 0;
+}
+
 static const struct devlink_param nsim_devlink_params[] = {
        DEVLINK_PARAM_GENERIC(MAX_MACS,
                              BIT(DEVLINK_PARAM_CMODE_DRIVERINIT),
@@ -531,6 +578,14 @@ static const struct devlink_param nsim_devlink_params[] = {
                             "test1", DEVLINK_PARAM_TYPE_BOOL,
                             BIT(DEVLINK_PARAM_CMODE_DRIVERINIT),
                             NULL, NULL, NULL),
+       DEVLINK_PARAM_DRIVER_WITH_DEFAULTS(NSIM_DEVLINK_PARAM_ID_TEST2,
+                                          "test2", DEVLINK_PARAM_TYPE_U32,
+                                          BIT(DEVLINK_PARAM_CMODE_RUNTIME),
+                                          nsim_devlink_param_test2_get,
+                                          nsim_devlink_param_test2_set,
+                                          NULL,
+                                          nsim_devlink_param_test2_get_default,
+                                          nsim_devlink_param_test2_reset_default),
 };
 
 static void nsim_devlink_set_params_init_values(struct nsim_dev *nsim_dev,
@@ -1590,6 +1645,7 @@ int nsim_drv_probe(struct nsim_bus_dev *nsim_bus_dev)
        nsim_dev->fw_update_flash_chunk_time_ms = NSIM_DEV_FLASH_CHUNK_TIME_MS_DEFAULT;
        nsim_dev->max_macs = NSIM_DEV_MAX_MACS_DEFAULT;
        nsim_dev->test1 = NSIM_DEV_TEST1_DEFAULT;
+       nsim_dev->test2 = NSIM_DEV_TEST2_DEFAULT;
        spin_lock_init(&nsim_dev->fa_cookie_lock);
 
        dev_set_drvdata(&nsim_bus_dev->dev, nsim_dev);
index af6fcfcda8ba82e699e8fad4823a60a9e49ba977..d1a941e2b18fc94b2393a7800612c5b8d18a272a 100644 (file)
@@ -331,6 +331,7 @@ struct nsim_dev {
        u32 fw_update_flash_chunk_time_ms;
        u32 max_macs;
        bool test1;
+       u32 test2;
        bool dont_allow_reload;
        bool fail_reload;
        struct devlink_region *dummy_region;