Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: 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>

authored by

Daniel Zahka and committed by
Jakub Kicinski
72924056 b11d358b

+57
+56
drivers/net/netdevsim/dev.c
··· 320 320 &nsim_dev->max_macs); 321 321 debugfs_create_bool("test1", 0600, nsim_dev->ddir, 322 322 &nsim_dev->test1); 323 + debugfs_create_u32("test2", 0600, nsim_dev->ddir, 324 + &nsim_dev->test2); 323 325 nsim_dev->take_snapshot = debugfs_create_file("take_snapshot", 324 326 0200, 325 327 nsim_dev->ddir, ··· 523 521 enum nsim_devlink_param_id { 524 522 NSIM_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX, 525 523 NSIM_DEVLINK_PARAM_ID_TEST1, 524 + NSIM_DEVLINK_PARAM_ID_TEST2, 526 525 }; 526 + 527 + static int 528 + nsim_devlink_param_test2_get(struct devlink *devlink, u32 id, 529 + struct devlink_param_gset_ctx *ctx, 530 + struct netlink_ext_ack *extack) 531 + { 532 + struct nsim_dev *nsim_dev = devlink_priv(devlink); 533 + 534 + ctx->val.vu32 = nsim_dev->test2; 535 + return 0; 536 + } 537 + 538 + static int 539 + nsim_devlink_param_test2_set(struct devlink *devlink, u32 id, 540 + struct devlink_param_gset_ctx *ctx, 541 + struct netlink_ext_ack *extack) 542 + { 543 + struct nsim_dev *nsim_dev = devlink_priv(devlink); 544 + 545 + nsim_dev->test2 = ctx->val.vu32; 546 + return 0; 547 + } 548 + 549 + #define NSIM_DEV_TEST2_DEFAULT 1234 550 + 551 + static int 552 + nsim_devlink_param_test2_get_default(struct devlink *devlink, u32 id, 553 + struct devlink_param_gset_ctx *ctx, 554 + struct netlink_ext_ack *extack) 555 + { 556 + ctx->val.vu32 = NSIM_DEV_TEST2_DEFAULT; 557 + return 0; 558 + } 559 + 560 + static int 561 + nsim_devlink_param_test2_reset_default(struct devlink *devlink, u32 id, 562 + enum devlink_param_cmode cmode, 563 + struct netlink_ext_ack *extack) 564 + { 565 + struct nsim_dev *nsim_dev = devlink_priv(devlink); 566 + 567 + nsim_dev->test2 = NSIM_DEV_TEST2_DEFAULT; 568 + return 0; 569 + } 527 570 528 571 static const struct devlink_param nsim_devlink_params[] = { 529 572 DEVLINK_PARAM_GENERIC(MAX_MACS, ··· 578 531 "test1", DEVLINK_PARAM_TYPE_BOOL, 579 532 BIT(DEVLINK_PARAM_CMODE_DRIVERINIT), 580 533 NULL, NULL, NULL), 534 + DEVLINK_PARAM_DRIVER_WITH_DEFAULTS(NSIM_DEVLINK_PARAM_ID_TEST2, 535 + "test2", DEVLINK_PARAM_TYPE_U32, 536 + BIT(DEVLINK_PARAM_CMODE_RUNTIME), 537 + nsim_devlink_param_test2_get, 538 + nsim_devlink_param_test2_set, 539 + NULL, 540 + nsim_devlink_param_test2_get_default, 541 + nsim_devlink_param_test2_reset_default), 581 542 }; 582 543 583 544 static void nsim_devlink_set_params_init_values(struct nsim_dev *nsim_dev, ··· 1645 1590 nsim_dev->fw_update_flash_chunk_time_ms = NSIM_DEV_FLASH_CHUNK_TIME_MS_DEFAULT; 1646 1591 nsim_dev->max_macs = NSIM_DEV_MAX_MACS_DEFAULT; 1647 1592 nsim_dev->test1 = NSIM_DEV_TEST1_DEFAULT; 1593 + nsim_dev->test2 = NSIM_DEV_TEST2_DEFAULT; 1648 1594 spin_lock_init(&nsim_dev->fa_cookie_lock); 1649 1595 1650 1596 dev_set_drvdata(&nsim_bus_dev->dev, nsim_dev);
+1
drivers/net/netdevsim/netdevsim.h
··· 331 331 u32 fw_update_flash_chunk_time_ms; 332 332 u32 max_macs; 333 333 bool test1; 334 + u32 test2; 334 335 bool dont_allow_reload; 335 336 bool fail_reload; 336 337 struct devlink_region *dummy_region;