Lines Matching full:devlink

180 static int devlink_param_get(struct devlink *devlink,  in devlink_param_get()  argument
187 return param->get(devlink, param->id, ctx, extack); in devlink_param_get()
190 static int devlink_param_set(struct devlink *devlink, in devlink_param_set() argument
197 return param->set(devlink, param->id, ctx, extack); in devlink_param_set()
200 static int devlink_param_get_default(struct devlink *devlink, in devlink_param_get_default() argument
208 return param->get_default(devlink, param->id, ctx, extack); in devlink_param_get_default()
211 static int devlink_param_reset_default(struct devlink *devlink, in devlink_param_reset_default() argument
219 return param->reset_default(devlink, param->id, cmode, extack); in devlink_param_reset_default()
314 static int devlink_nl_param_fill(struct sk_buff *msg, struct devlink *devlink, in devlink_nl_param_fill() argument
372 err = devlink_param_get(devlink, param, ctx, extack); in devlink_nl_param_fill()
378 err = devlink_param_get_default(devlink, param, ctx, in devlink_nl_param_fill()
395 if (devlink_nl_put_handle(msg, devlink)) in devlink_nl_param_fill()
451 static void devlink_param_notify(struct devlink *devlink, in devlink_param_notify() argument
467 if (!devl_is_registered(devlink) || !devlink_nl_notify_need(devlink)) in devlink_param_notify()
473 err = devlink_nl_param_fill(msg, devlink, port_index, param_item, cmd, in devlink_param_notify()
480 devlink_nl_notify_send(devlink, msg); in devlink_param_notify()
483 static void devlink_params_notify(struct devlink *devlink, in devlink_params_notify() argument
489 xa_for_each(&devlink->params, param_id, param_item) in devlink_params_notify()
490 devlink_param_notify(devlink, 0, param_item, cmd); in devlink_params_notify()
493 void devlink_params_notify_register(struct devlink *devlink) in devlink_params_notify_register() argument
495 devlink_params_notify(devlink, DEVLINK_CMD_PARAM_NEW); in devlink_params_notify_register()
498 void devlink_params_notify_unregister(struct devlink *devlink) in devlink_params_notify_unregister() argument
500 devlink_params_notify(devlink, DEVLINK_CMD_PARAM_DEL); in devlink_params_notify_unregister()
504 struct devlink *devlink, in devlink_nl_param_get_dump_one() argument
513 xa_for_each_start(&devlink->params, param_id, param_item, state->idx) { in devlink_nl_param_get_dump_one()
514 err = devlink_nl_param_fill(msg, devlink, 0, param_item, in devlink_nl_param_get_dump_one()
635 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_param_get_doit() local
640 param_item = devlink_param_get_from_info(&devlink->params, info); in devlink_nl_param_get_doit()
648 err = devlink_nl_param_fill(msg, devlink, 0, param_item, in devlink_nl_param_get_doit()
659 static int __devlink_nl_cmd_param_set_doit(struct devlink *devlink, in __devlink_nl_cmd_param_set_doit() argument
690 err = param->validate(devlink, param->id, &value, in __devlink_nl_cmd_param_set_doit()
721 err = devlink_param_reset_default(devlink, param, cmode, in __devlink_nl_cmd_param_set_doit()
724 err = devlink_param_set(devlink, param, &ctx, in __devlink_nl_cmd_param_set_doit()
730 devlink_param_notify(devlink, port_index, param_item, cmd); in __devlink_nl_cmd_param_set_doit()
736 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_param_set_doit() local
738 return __devlink_nl_cmd_param_set_doit(devlink, 0, &devlink->params, in devlink_nl_param_set_doit()
773 static int devlink_param_register(struct devlink *devlink, in devlink_param_register() argument
780 WARN_ON(devlink_param_find_by_name(&devlink->params, param->name)); in devlink_param_register()
793 err = xa_insert(&devlink->params, param->id, param_item, GFP_KERNEL); in devlink_param_register()
797 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW); in devlink_param_register()
805 static void devlink_param_unregister(struct devlink *devlink, in devlink_param_unregister() argument
810 param_item = devlink_param_find_by_id(&devlink->params, param->id); in devlink_param_unregister()
813 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_DEL); in devlink_param_unregister()
814 xa_erase(&devlink->params, param->id); in devlink_param_unregister()
821 * @devlink: devlink
827 int devl_params_register(struct devlink *devlink, in devl_params_register() argument
834 lockdep_assert_held(&devlink->lock); in devl_params_register()
837 err = devlink_param_register(devlink, param); in devl_params_register()
848 devlink_param_unregister(devlink, param); in devl_params_register()
853 int devlink_params_register(struct devlink *devlink, in devlink_params_register() argument
859 devl_lock(devlink); in devlink_params_register()
860 err = devl_params_register(devlink, params, params_count); in devlink_params_register()
861 devl_unlock(devlink); in devlink_params_register()
868 * @devlink: devlink
872 void devl_params_unregister(struct devlink *devlink, in devl_params_unregister() argument
879 lockdep_assert_held(&devlink->lock); in devl_params_unregister()
882 devlink_param_unregister(devlink, param); in devl_params_unregister()
886 void devlink_params_unregister(struct devlink *devlink, in devlink_params_unregister() argument
890 devl_lock(devlink); in devlink_params_unregister()
891 devl_params_unregister(devlink, params, params_count); in devlink_params_unregister()
892 devl_unlock(devlink); in devlink_params_unregister()
900 * @devlink: devlink
916 * If the driver is not able to comply, it has to take the devlink->lock
919 int devl_param_driverinit_value_get(struct devlink *devlink, u32 param_id, in devl_param_driverinit_value_get() argument
924 if (WARN_ON(!devlink_reload_supported(devlink->ops))) in devl_param_driverinit_value_get()
927 param_item = devlink_param_find_by_id(&devlink->params, param_id); in devl_param_driverinit_value_get()
949 * @devlink: devlink
956 void devl_param_driverinit_value_set(struct devlink *devlink, u32 param_id, in devl_param_driverinit_value_set() argument
961 devl_assert_locked(devlink); in devl_param_driverinit_value_set()
963 param_item = devlink_param_find_by_id(&devlink->params, param_id); in devl_param_driverinit_value_set()
975 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW); in devl_param_driverinit_value_set()
979 void devlink_params_driverinit_load_new(struct devlink *devlink) in devlink_params_driverinit_load_new() argument
984 xa_for_each(&devlink->params, param_id, param_item) { in devlink_params_driverinit_load_new()
996 * devl_param_value_changed - notify devlink on a parameter's value
1000 * @devlink: devlink
1003 * This function should be used by the driver to notify devlink on value
1007 void devl_param_value_changed(struct devlink *devlink, u32 param_id) in devl_param_value_changed() argument
1011 param_item = devlink_param_find_by_id(&devlink->params, param_id); in devl_param_value_changed()
1014 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW); in devl_param_value_changed()