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
371 err = devlink_param_get(devlink, param, ctx, extack); in devlink_nl_param_fill()
377 err = devlink_param_get_default(devlink, param, ctx, in devlink_nl_param_fill()
394 if (devlink_nl_put_handle(msg, devlink)) in devlink_nl_param_fill()
450 static void devlink_param_notify(struct devlink *devlink, in devlink_param_notify() argument
466 if (!devl_is_registered(devlink) || !devlink_nl_notify_need(devlink)) in devlink_param_notify()
472 err = devlink_nl_param_fill(msg, devlink, port_index, param_item, cmd, in devlink_param_notify()
479 devlink_nl_notify_send(devlink, msg); in devlink_param_notify()
482 static void devlink_params_notify(struct devlink *devlink, in devlink_params_notify() argument
488 xa_for_each(&devlink->params, param_id, param_item) in devlink_params_notify()
489 devlink_param_notify(devlink, 0, param_item, cmd); in devlink_params_notify()
492 void devlink_params_notify_register(struct devlink *devlink) in devlink_params_notify_register() argument
494 devlink_params_notify(devlink, DEVLINK_CMD_PARAM_NEW); in devlink_params_notify_register()
497 void devlink_params_notify_unregister(struct devlink *devlink) in devlink_params_notify_unregister() argument
499 devlink_params_notify(devlink, DEVLINK_CMD_PARAM_DEL); in devlink_params_notify_unregister()
503 struct devlink *devlink, in devlink_nl_param_get_dump_one() argument
512 xa_for_each_start(&devlink->params, param_id, param_item, state->idx) { in devlink_nl_param_get_dump_one()
513 err = devlink_nl_param_fill(msg, devlink, 0, param_item, in devlink_nl_param_get_dump_one()
634 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_param_get_doit() local
639 param_item = devlink_param_get_from_info(&devlink->params, info); in devlink_nl_param_get_doit()
647 err = devlink_nl_param_fill(msg, devlink, 0, param_item, in devlink_nl_param_get_doit()
658 static int __devlink_nl_cmd_param_set_doit(struct devlink *devlink, in __devlink_nl_cmd_param_set_doit() argument
689 err = param->validate(devlink, param->id, &value, in __devlink_nl_cmd_param_set_doit()
720 err = devlink_param_reset_default(devlink, param, cmode, in __devlink_nl_cmd_param_set_doit()
723 err = devlink_param_set(devlink, param, &ctx, in __devlink_nl_cmd_param_set_doit()
729 devlink_param_notify(devlink, port_index, param_item, cmd); in __devlink_nl_cmd_param_set_doit()
735 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_param_set_doit() local
737 return __devlink_nl_cmd_param_set_doit(devlink, 0, &devlink->params, in devlink_nl_param_set_doit()
772 static int devlink_param_register(struct devlink *devlink, in devlink_param_register() argument
779 WARN_ON(devlink_param_find_by_name(&devlink->params, param->name)); in devlink_param_register()
792 err = xa_insert(&devlink->params, param->id, param_item, GFP_KERNEL); in devlink_param_register()
796 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW); in devlink_param_register()
804 static void devlink_param_unregister(struct devlink *devlink, in devlink_param_unregister() argument
809 param_item = devlink_param_find_by_id(&devlink->params, param->id); in devlink_param_unregister()
812 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_DEL); in devlink_param_unregister()
813 xa_erase(&devlink->params, param->id); in devlink_param_unregister()
820 * @devlink: devlink
826 int devl_params_register(struct devlink *devlink, in devl_params_register() argument
833 lockdep_assert_held(&devlink->lock); in devl_params_register()
836 err = devlink_param_register(devlink, param); in devl_params_register()
847 devlink_param_unregister(devlink, param); in devl_params_register()
852 int devlink_params_register(struct devlink *devlink, in devlink_params_register() argument
858 devl_lock(devlink); in devlink_params_register()
859 err = devl_params_register(devlink, params, params_count); in devlink_params_register()
860 devl_unlock(devlink); in devlink_params_register()
867 * @devlink: devlink
871 void devl_params_unregister(struct devlink *devlink, in devl_params_unregister() argument
878 lockdep_assert_held(&devlink->lock); in devl_params_unregister()
881 devlink_param_unregister(devlink, param); in devl_params_unregister()
885 void devlink_params_unregister(struct devlink *devlink, in devlink_params_unregister() argument
889 devl_lock(devlink); in devlink_params_unregister()
890 devl_params_unregister(devlink, params, params_count); in devlink_params_unregister()
891 devl_unlock(devlink); in devlink_params_unregister()
899 * @devlink: devlink
915 * If the driver is not able to comply, it has to take the devlink->lock
918 int devl_param_driverinit_value_get(struct devlink *devlink, u32 param_id, in devl_param_driverinit_value_get() argument
923 if (WARN_ON(!devlink_reload_supported(devlink->ops))) in devl_param_driverinit_value_get()
926 param_item = devlink_param_find_by_id(&devlink->params, param_id); in devl_param_driverinit_value_get()
948 * @devlink: devlink
955 void devl_param_driverinit_value_set(struct devlink *devlink, u32 param_id, in devl_param_driverinit_value_set() argument
960 devl_assert_locked(devlink); in devl_param_driverinit_value_set()
962 param_item = devlink_param_find_by_id(&devlink->params, param_id); in devl_param_driverinit_value_set()
974 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW); in devl_param_driverinit_value_set()
978 void devlink_params_driverinit_load_new(struct devlink *devlink) in devlink_params_driverinit_load_new() argument
983 xa_for_each(&devlink->params, param_id, param_item) { in devlink_params_driverinit_load_new()
995 * devl_param_value_changed - notify devlink on a parameter's value
999 * @devlink: devlink
1002 * This function should be used by the driver to notify devlink on value
1006 void devl_param_value_changed(struct devlink *devlink, u32 param_id) in devl_param_value_changed() argument
1010 param_item = devlink_param_find_by_id(&devlink->params, param_id); in devl_param_value_changed()
1013 devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW); in devl_param_value_changed()