Lines Matching refs:rate_node

532 		struct devlink_rate *rate_node;  in devlink_nl_pre_doit()  local
534 rate_node = devlink_rate_node_get_from_info(devlink, info); in devlink_nl_pre_doit()
535 if (IS_ERR(rate_node)) { in devlink_nl_pre_doit()
536 err = PTR_ERR(rate_node); in devlink_nl_pre_doit()
539 info->user_ptr[1] = rate_node; in devlink_nl_pre_doit()
1777 struct devlink_rate *rate_node; in devlink_nl_cmd_rate_new_doit() local
1790 rate_node = devlink_rate_node_get_from_attrs(devlink, info->attrs); in devlink_nl_cmd_rate_new_doit()
1791 if (!IS_ERR(rate_node)) in devlink_nl_cmd_rate_new_doit()
1793 else if (rate_node == ERR_PTR(-EINVAL)) in devlink_nl_cmd_rate_new_doit()
1796 rate_node = kzalloc(sizeof(*rate_node), GFP_KERNEL); in devlink_nl_cmd_rate_new_doit()
1797 if (!rate_node) in devlink_nl_cmd_rate_new_doit()
1800 rate_node->devlink = devlink; in devlink_nl_cmd_rate_new_doit()
1801 rate_node->type = DEVLINK_RATE_TYPE_NODE; in devlink_nl_cmd_rate_new_doit()
1802 rate_node->name = nla_strdup(info->attrs[DEVLINK_ATTR_RATE_NODE_NAME], GFP_KERNEL); in devlink_nl_cmd_rate_new_doit()
1803 if (!rate_node->name) { in devlink_nl_cmd_rate_new_doit()
1808 err = ops->rate_node_new(rate_node, &rate_node->priv, info->extack); in devlink_nl_cmd_rate_new_doit()
1812 err = devlink_nl_rate_set(rate_node, ops, info); in devlink_nl_cmd_rate_new_doit()
1816 refcount_set(&rate_node->refcnt, 1); in devlink_nl_cmd_rate_new_doit()
1817 list_add(&rate_node->list, &devlink->rate_list); in devlink_nl_cmd_rate_new_doit()
1818 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_NEW); in devlink_nl_cmd_rate_new_doit()
1822 ops->rate_node_del(rate_node, rate_node->priv, info->extack); in devlink_nl_cmd_rate_new_doit()
1824 kfree(rate_node->name); in devlink_nl_cmd_rate_new_doit()
1826 kfree(rate_node); in devlink_nl_cmd_rate_new_doit()
1833 struct devlink_rate *rate_node = info->user_ptr[1]; in devlink_nl_cmd_rate_del_doit() local
1834 struct devlink *devlink = rate_node->devlink; in devlink_nl_cmd_rate_del_doit()
1838 if (refcount_read(&rate_node->refcnt) > 1) { in devlink_nl_cmd_rate_del_doit()
1843 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_DEL); in devlink_nl_cmd_rate_del_doit()
1844 err = ops->rate_node_del(rate_node, rate_node->priv, info->extack); in devlink_nl_cmd_rate_del_doit()
1845 if (rate_node->parent) in devlink_nl_cmd_rate_del_doit()
1846 refcount_dec(&rate_node->parent->refcnt); in devlink_nl_cmd_rate_del_doit()
1847 list_del(&rate_node->list); in devlink_nl_cmd_rate_del_doit()
1848 kfree(rate_node->name); in devlink_nl_cmd_rate_del_doit()
1849 kfree(rate_node); in devlink_nl_cmd_rate_del_doit()