Lines Matching refs:param

97 static int devlink_param_generic_verify(const struct devlink_param *param)
100 if (param->id > DEVLINK_PARAM_GENERIC_ID_MAX)
102 if (strcmp(param->name, devlink_param_generic[param->id].name))
105 WARN_ON(param->type != devlink_param_generic[param->id].type);
110 static int devlink_param_driver_verify(const struct devlink_param *param)
114 if (param->id <= DEVLINK_PARAM_GENERIC_ID_MAX)
118 if (!strcmp(param->name, devlink_param_generic[i].name))
131 if (!strcmp(param_item->param->name, param_name))
144 devlink_param_cmode_is_supported(const struct devlink_param *param,
147 return test_bit(cmode, &param->supported_cmodes);
151 const struct devlink_param *param,
154 if (!param->get)
156 return param->get(devlink, param->id, ctx);
160 const struct devlink_param *param,
163 if (!param->set)
165 return param->set(devlink, param->id, ctx);
245 const struct devlink_param *param = param_item->param;
256 if (!devlink_param_cmode_is_supported(param, i))
267 err = devlink_param_get(devlink, param, &ctx);
291 if (nla_put_string(msg, DEVLINK_ATTR_PARAM_NAME, param->name))
293 if (param->generic && nla_put_flag(msg, DEVLINK_ATTR_PARAM_GENERIC))
296 nla_type = devlink_param_type_to_nla_type(param->type);
310 err = devlink_nl_param_value_fill_one(msg, param->type,
446 devlink_param_value_get_from_info(const struct devlink_param *param,
455 if (param->type != DEVLINK_PARAM_TYPE_BOOL && !param_data)
458 switch (param->type) {
539 const struct devlink_param *param;
546 param = param_item->param;
550 if (param_type != param->type)
552 err = devlink_param_value_get_from_info(param, info, &value);
555 if (param->validate) {
556 err = param->validate(devlink, param->id, value, info->extack);
564 if (!devlink_param_cmode_is_supported(param, cmode))
571 if (!param->set)
575 err = devlink_param_set(devlink, param, &ctx);
613 static int devlink_param_verify(const struct devlink_param *param)
615 if (!param || !param->name || !param->supported_cmodes)
617 if (param->generic)
618 return devlink_param_generic_verify(param);
620 return devlink_param_driver_verify(param);
624 const struct devlink_param *param)
629 WARN_ON(devlink_param_verify(param));
630 WARN_ON(devlink_param_find_by_name(&devlink->params, param->name));
632 if (param->supported_cmodes == BIT(DEVLINK_PARAM_CMODE_DRIVERINIT))
633 WARN_ON(param->get || param->set);
635 WARN_ON(!param->get || !param->set);
641 param_item->param = param;
643 err = xa_insert(&devlink->params, param->id, param_item, GFP_KERNEL);
656 const struct devlink_param *param)
660 param_item = devlink_param_find_by_id(&devlink->params, param->id);
664 xa_erase(&devlink->params, param->id);
681 const struct devlink_param *param = params;
686 for (i = 0; i < params_count; i++, param++) {
687 err = devlink_param_register(devlink, param);
697 for (param--; i > 0; i--, param--)
698 devlink_param_unregister(devlink, param);
726 const struct devlink_param *param = params;
731 for (i = 0; i < params_count; i++, param++)
732 devlink_param_unregister(devlink, param);
784 if (WARN_ON(!devlink_param_cmode_is_supported(param_item->param,
817 if (WARN_ON(!devlink_param_cmode_is_supported(param_item->param,
834 if (!devlink_param_cmode_is_supported(param_item->param,