Commit 72924056 authored by Daniel Zahka's avatar Daniel Zahka Committed by Jakub Kicinski
Browse files

netdevsim: register a new devlink param with default value interface



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: default avatarAleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: default avatarDaniel Zahka <daniel.zahka@gmail.com>
Link: https://patch.msgid.link/20251119025038.651131-6-daniel.zahka@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent b11d358b
Loading
Loading
Loading
Loading
+56 −0
Original line number Diff line number Diff line
@@ -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 @@ static int nsim_dev_resources_register(struct devlink *devlink)
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);
+1 −0
Original line number Diff line number Diff line
@@ -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;