Lines Matching defs:devlink

150 static int devlink_param_get(struct devlink *devlink,
156 return param->get(devlink, param->id, ctx);
159 static int devlink_param_set(struct devlink *devlink,
166 return param->set(devlink, param->id, ctx, extack);
238 static int devlink_nl_param_fill(struct sk_buff *msg, struct devlink *devlink,
268 err = devlink_param_get(devlink, param, &ctx);
280 if (devlink_nl_put_handle(msg, devlink))
331 static void devlink_param_notify(struct devlink *devlink,
347 if (!devl_is_registered(devlink) || !devlink_nl_notify_need(devlink))
353 err = devlink_nl_param_fill(msg, devlink, port_index, param_item, cmd,
360 devlink_nl_notify_send(devlink, msg);
363 static void devlink_params_notify(struct devlink *devlink,
369 xa_for_each(&devlink->params, param_id, param_item)
370 devlink_param_notify(devlink, 0, param_item, cmd);
373 void devlink_params_notify_register(struct devlink *devlink)
375 devlink_params_notify(devlink, DEVLINK_CMD_PARAM_NEW);
378 void devlink_params_notify_unregister(struct devlink *devlink)
380 devlink_params_notify(devlink, DEVLINK_CMD_PARAM_DEL);
384 struct devlink *devlink,
393 xa_for_each_start(&devlink->params, param_id, param_item, state->idx) {
394 err = devlink_nl_param_fill(msg, devlink, 0, param_item,
505 struct devlink *devlink = info->user_ptr[0];
510 param_item = devlink_param_get_from_info(&devlink->params, info);
518 err = devlink_nl_param_fill(msg, devlink, 0, param_item,
529 static int __devlink_nl_cmd_param_set_doit(struct devlink *devlink,
556 err = param->validate(devlink, param->id, value, info->extack);
575 err = devlink_param_set(devlink, param, &ctx, info->extack);
580 devlink_param_notify(devlink, port_index, param_item, cmd);
586 struct devlink *devlink = info->user_ptr[0];
588 return __devlink_nl_cmd_param_set_doit(devlink, 0, &devlink->params,
623 static int devlink_param_register(struct devlink *devlink,
630 WARN_ON(devlink_param_find_by_name(&devlink->params, param->name));
643 err = xa_insert(&devlink->params, param->id, param_item, GFP_KERNEL);
647 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW);
655 static void devlink_param_unregister(struct devlink *devlink,
660 param_item = devlink_param_find_by_id(&devlink->params, param->id);
663 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_DEL);
664 xa_erase(&devlink->params, param->id);
671 * @devlink: devlink
677 int devl_params_register(struct devlink *devlink,
684 lockdep_assert_held(&devlink->lock);
687 err = devlink_param_register(devlink, param);
698 devlink_param_unregister(devlink, param);
703 int devlink_params_register(struct devlink *devlink,
709 devl_lock(devlink);
710 err = devl_params_register(devlink, params, params_count);
711 devl_unlock(devlink);
718 * @devlink: devlink
722 void devl_params_unregister(struct devlink *devlink,
729 lockdep_assert_held(&devlink->lock);
732 devlink_param_unregister(devlink, param);
736 void devlink_params_unregister(struct devlink *devlink,
740 devl_lock(devlink);
741 devl_params_unregister(devlink, params, params_count);
742 devl_unlock(devlink);
750 * @devlink: devlink
766 * If the driver is not able to comply, it has to take the devlink->lock
769 int devl_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
774 if (WARN_ON(!devlink_reload_supported(devlink->ops)))
777 param_item = devlink_param_find_by_id(&devlink->params, param_id);
799 * @devlink: devlink
806 void devl_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
811 devl_assert_locked(devlink);
813 param_item = devlink_param_find_by_id(&devlink->params, param_id);
824 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW);
828 void devlink_params_driverinit_load_new(struct devlink *devlink)
833 xa_for_each(&devlink->params, param_id, param_item) {
845 * devl_param_value_changed - notify devlink on a parameter's value
849 * @devlink: devlink
852 * This function should be used by the driver to notify devlink on value
856 void devl_param_value_changed(struct devlink *devlink, u32 param_id)
860 param_item = devlink_param_find_by_id(&devlink->params, param_id);
863 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW);