Lines Matching defs: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, ¶m->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,
164 if (!param->set)
166 return param->set(devlink, param->id, ctx, extack);
227 const struct devlink_param *param = param_item->param;
237 if (!devlink_param_cmode_is_supported(param, i))
248 err = devlink_param_get(devlink, param, &ctx);
272 if (nla_put_string(msg, DEVLINK_ATTR_PARAM_NAME, param->name))
274 if (param->generic && nla_put_flag(msg, DEVLINK_ATTR_PARAM_GENERIC))
276 if (nla_put_u8(msg, DEVLINK_ATTR_PARAM_TYPE, param->type))
287 err = devlink_nl_param_value_fill_one(msg, param->type,
404 devlink_param_value_get_from_info(const struct devlink_param *param,
413 if (param->type != DEVLINK_PARAM_TYPE_BOOL && !param_data)
416 switch (param->type) {
497 const struct devlink_param *param;
504 param = param_item->param;
508 if (param_type != param->type)
510 err = devlink_param_value_get_from_info(param, info, &value);
513 if (param->validate) {
514 err = param->validate(devlink, param->id, value, info->extack);
522 if (!devlink_param_cmode_is_supported(param, cmode))
529 if (!param->set)
533 err = devlink_param_set(devlink, param, &ctx, info->extack);
571 static int devlink_param_verify(const struct devlink_param *param)
573 if (!param || !param->name || !param->supported_cmodes)
575 if (param->generic)
576 return devlink_param_generic_verify(param);
578 return devlink_param_driver_verify(param);
582 const struct devlink_param *param)
587 WARN_ON(devlink_param_verify(param));
588 WARN_ON(devlink_param_find_by_name(&devlink->params, param->name));
590 if (param->supported_cmodes == BIT(DEVLINK_PARAM_CMODE_DRIVERINIT))
591 WARN_ON(param->get || param->set);
593 WARN_ON(!param->get || !param->set);
599 param_item->param = param;
601 err = xa_insert(&devlink->params, param->id, param_item, GFP_KERNEL);
614 const struct devlink_param *param)
618 param_item = devlink_param_find_by_id(&devlink->params, param->id);
622 xa_erase(&devlink->params, param->id);
639 const struct devlink_param *param = params;
644 for (i = 0; i < params_count; i++, param++) {
645 err = devlink_param_register(devlink, param);
655 for (param--; i > 0; i--, param--)
656 devlink_param_unregister(devlink, param);
684 const struct devlink_param *param = params;
689 for (i = 0; i < params_count; i++, param++)
690 devlink_param_unregister(devlink, param);
742 if (WARN_ON(!devlink_param_cmode_is_supported(param_item->param,
775 if (WARN_ON(!devlink_param_cmode_is_supported(param_item->param,
792 if (!devlink_param_cmode_is_supported(param_item->param,