Lines Matching refs:rate_node

806 		struct devlink_rate *rate_node;  in devlink_nl_pre_doit()  local
808 rate_node = devlink_rate_node_get_from_info(devlink, info); in devlink_nl_pre_doit()
809 if (IS_ERR(rate_node)) { in devlink_nl_pre_doit()
810 err = PTR_ERR(rate_node); in devlink_nl_pre_doit()
813 info->user_ptr[1] = rate_node; in devlink_nl_pre_doit()
2030 struct devlink_rate *rate_node; in devlink_nl_cmd_rate_new_doit() local
2043 rate_node = devlink_rate_node_get_from_attrs(devlink, info->attrs); in devlink_nl_cmd_rate_new_doit()
2044 if (!IS_ERR(rate_node)) in devlink_nl_cmd_rate_new_doit()
2046 else if (rate_node == ERR_PTR(-EINVAL)) in devlink_nl_cmd_rate_new_doit()
2049 rate_node = kzalloc(sizeof(*rate_node), GFP_KERNEL); in devlink_nl_cmd_rate_new_doit()
2050 if (!rate_node) in devlink_nl_cmd_rate_new_doit()
2053 rate_node->devlink = devlink; in devlink_nl_cmd_rate_new_doit()
2054 rate_node->type = DEVLINK_RATE_TYPE_NODE; in devlink_nl_cmd_rate_new_doit()
2055 rate_node->name = nla_strdup(info->attrs[DEVLINK_ATTR_RATE_NODE_NAME], GFP_KERNEL); in devlink_nl_cmd_rate_new_doit()
2056 if (!rate_node->name) { in devlink_nl_cmd_rate_new_doit()
2061 err = ops->rate_node_new(rate_node, &rate_node->priv, info->extack); in devlink_nl_cmd_rate_new_doit()
2065 err = devlink_nl_rate_set(rate_node, ops, info); in devlink_nl_cmd_rate_new_doit()
2069 refcount_set(&rate_node->refcnt, 1); in devlink_nl_cmd_rate_new_doit()
2070 list_add(&rate_node->list, &devlink->rate_list); in devlink_nl_cmd_rate_new_doit()
2071 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_NEW); in devlink_nl_cmd_rate_new_doit()
2075 ops->rate_node_del(rate_node, rate_node->priv, info->extack); in devlink_nl_cmd_rate_new_doit()
2077 kfree(rate_node->name); in devlink_nl_cmd_rate_new_doit()
2079 kfree(rate_node); in devlink_nl_cmd_rate_new_doit()
2086 struct devlink_rate *rate_node = info->user_ptr[1]; in devlink_nl_cmd_rate_del_doit() local
2087 struct devlink *devlink = rate_node->devlink; in devlink_nl_cmd_rate_del_doit()
2091 if (refcount_read(&rate_node->refcnt) > 1) { in devlink_nl_cmd_rate_del_doit()
2096 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_DEL); in devlink_nl_cmd_rate_del_doit()
2097 err = ops->rate_node_del(rate_node, rate_node->priv, info->extack); in devlink_nl_cmd_rate_del_doit()
2098 if (rate_node->parent) in devlink_nl_cmd_rate_del_doit()
2099 refcount_dec(&rate_node->parent->refcnt); in devlink_nl_cmd_rate_del_doit()
2100 list_del(&rate_node->list); in devlink_nl_cmd_rate_del_doit()
2101 kfree(rate_node->name); in devlink_nl_cmd_rate_del_doit()
2102 kfree(rate_node); in devlink_nl_cmd_rate_del_doit()
9688 struct devlink_rate *rate_node; in devlink_notify_register() local
9709 list_for_each_entry(rate_node, &devlink->rate_list, list) in devlink_notify_register()
9710 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_NEW); in devlink_notify_register()
9727 struct devlink_rate *rate_node; in devlink_notify_unregister() local
9737 list_for_each_entry_reverse(rate_node, &devlink->rate_list, list) in devlink_notify_unregister()
9738 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_DEL); in devlink_notify_unregister()