Lines Matching full:param

97 static int devlink_param_generic_verify(const struct devlink_param *param)  in devlink_param_generic_verify()  argument
100 if (param->id > DEVLINK_PARAM_GENERIC_ID_MAX) in devlink_param_generic_verify()
102 if (strcmp(param->name, devlink_param_generic[param->id].name)) in devlink_param_generic_verify()
105 WARN_ON(param->type != devlink_param_generic[param->id].type); in devlink_param_generic_verify()
110 static int devlink_param_driver_verify(const struct devlink_param *param) in devlink_param_driver_verify() argument
114 if (param->id <= DEVLINK_PARAM_GENERIC_ID_MAX) in devlink_param_driver_verify()
118 if (!strcmp(param->name, devlink_param_generic[i].name)) in devlink_param_driver_verify()
131 if (!strcmp(param_item->param->name, param_name)) in devlink_param_find_by_name()
144 devlink_param_cmode_is_supported(const struct devlink_param *param, in devlink_param_cmode_is_supported() argument
147 return test_bit(cmode, &param->supported_cmodes); in devlink_param_cmode_is_supported()
151 const struct devlink_param *param, in devlink_param_get() argument
154 if (!param->get) in devlink_param_get()
156 return param->get(devlink, param->id, ctx); in devlink_param_get()
160 const struct devlink_param *param, in devlink_param_set() argument
163 if (!param->set) in devlink_param_set()
165 return param->set(devlink, param->id, ctx); in devlink_param_set()
245 const struct devlink_param *param = param_item->param; in devlink_nl_param_fill() local
256 if (!devlink_param_cmode_is_supported(param, i)) in devlink_nl_param_fill()
267 err = devlink_param_get(devlink, param, &ctx); in devlink_nl_param_fill()
291 if (nla_put_string(msg, DEVLINK_ATTR_PARAM_NAME, param->name)) in devlink_nl_param_fill()
293 if (param->generic && nla_put_flag(msg, DEVLINK_ATTR_PARAM_GENERIC)) in devlink_nl_param_fill()
296 nla_type = devlink_param_type_to_nla_type(param->type); in devlink_nl_param_fill()
310 err = devlink_nl_param_value_fill_one(msg, param->type, in devlink_nl_param_fill()
445 devlink_param_value_get_from_info(const struct devlink_param *param, in devlink_param_value_get_from_info() argument
454 if (param->type != DEVLINK_PARAM_TYPE_BOOL && !param_data) in devlink_param_value_get_from_info()
457 switch (param->type) { in devlink_param_value_get_from_info()
538 const struct devlink_param *param; in __devlink_nl_cmd_param_set_doit() local
545 param = param_item->param; in __devlink_nl_cmd_param_set_doit()
549 if (param_type != param->type) in __devlink_nl_cmd_param_set_doit()
551 err = devlink_param_value_get_from_info(param, info, &value); in __devlink_nl_cmd_param_set_doit()
554 if (param->validate) { in __devlink_nl_cmd_param_set_doit()
555 err = param->validate(devlink, param->id, value, info->extack); in __devlink_nl_cmd_param_set_doit()
563 if (!devlink_param_cmode_is_supported(param, cmode)) in __devlink_nl_cmd_param_set_doit()
570 if (!param->set) in __devlink_nl_cmd_param_set_doit()
574 err = devlink_param_set(devlink, param, &ctx); in __devlink_nl_cmd_param_set_doit()
612 static int devlink_param_verify(const struct devlink_param *param) in devlink_param_verify() argument
614 if (!param || !param->name || !param->supported_cmodes) in devlink_param_verify()
616 if (param->generic) in devlink_param_verify()
617 return devlink_param_generic_verify(param); in devlink_param_verify()
619 return devlink_param_driver_verify(param); in devlink_param_verify()
623 const struct devlink_param *param) in devlink_param_register() argument
628 WARN_ON(devlink_param_verify(param)); in devlink_param_register()
629 WARN_ON(devlink_param_find_by_name(&devlink->params, param->name)); in devlink_param_register()
631 if (param->supported_cmodes == BIT(DEVLINK_PARAM_CMODE_DRIVERINIT)) in devlink_param_register()
632 WARN_ON(param->get || param->set); in devlink_param_register()
634 WARN_ON(!param->get || !param->set); in devlink_param_register()
640 param_item->param = param; in devlink_param_register()
642 err = xa_insert(&devlink->params, param->id, param_item, GFP_KERNEL); in devlink_param_register()
655 const struct devlink_param *param) in devlink_param_unregister() argument
659 param_item = devlink_param_find_by_id(&devlink->params, param->id); in devlink_param_unregister()
663 xa_erase(&devlink->params, param->id); in devlink_param_unregister()
680 const struct devlink_param *param = params; in devl_params_register() local
685 for (i = 0; i < params_count; i++, param++) { in devl_params_register()
686 err = devlink_param_register(devlink, param); in devl_params_register()
696 for (param--; i > 0; i--, param--) in devl_params_register()
697 devlink_param_unregister(devlink, param); in devl_params_register()
725 const struct devlink_param *param = params; in devl_params_unregister() local
730 for (i = 0; i < params_count; i++, param++) in devl_params_unregister()
731 devlink_param_unregister(devlink, param); in devl_params_unregister()
783 if (WARN_ON(!devlink_param_cmode_is_supported(param_item->param, in devl_param_driverinit_value_get()
816 if (WARN_ON(!devlink_param_cmode_is_supported(param_item->param, in devl_param_driverinit_value_set()
833 if (!devlink_param_cmode_is_supported(param_item->param, in devlink_params_driverinit_load_new()