Lines Matching defs:rate_node
168 struct devlink_rate *rate_node;
170 list_for_each_entry(rate_node, &devlink->rate_list, list)
171 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_NEW);
176 struct devlink_rate *rate_node;
178 list_for_each_entry_reverse(rate_node, &devlink->rate_list, list)
179 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_DEL);
486 struct devlink_rate *rate_node;
499 rate_node = devlink_rate_node_get_from_attrs(devlink, info->attrs);
500 if (!IS_ERR(rate_node))
502 else if (rate_node == ERR_PTR(-EINVAL))
505 rate_node = kzalloc(sizeof(*rate_node), GFP_KERNEL);
506 if (!rate_node)
509 rate_node->devlink = devlink;
510 rate_node->type = DEVLINK_RATE_TYPE_NODE;
511 rate_node->name = nla_strdup(info->attrs[DEVLINK_ATTR_RATE_NODE_NAME], GFP_KERNEL);
512 if (!rate_node->name) {
517 err = ops->rate_node_new(rate_node, &rate_node->priv, info->extack);
521 err = devlink_nl_rate_set(rate_node, ops, info);
525 refcount_set(&rate_node->refcnt, 1);
526 list_add(&rate_node->list, &devlink->rate_list);
527 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_NEW);
531 ops->rate_node_del(rate_node, rate_node->priv, info->extack);
533 kfree(rate_node->name);
535 kfree(rate_node);
542 struct devlink_rate *rate_node;
545 rate_node = devlink_rate_node_get_from_info(devlink, info);
546 if (IS_ERR(rate_node))
547 return PTR_ERR(rate_node);
549 if (refcount_read(&rate_node->refcnt) > 1) {
554 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_DEL);
555 err = devlink->ops->rate_node_del(rate_node, rate_node->priv,
557 if (rate_node->parent)
558 refcount_dec(&rate_node->parent->refcnt);
559 list_del(&rate_node->list);
560 kfree(rate_node->name);
561 kfree(rate_node);
591 struct devlink_rate *rate_node;
593 rate_node = devlink_rate_node_get_by_name(devlink, node_name);
594 if (!IS_ERR(rate_node))
597 rate_node = kzalloc(sizeof(*rate_node), GFP_KERNEL);
598 if (!rate_node)
602 rate_node->parent = parent;
603 refcount_inc(&rate_node->parent->refcnt);
606 rate_node->type = DEVLINK_RATE_TYPE_NODE;
607 rate_node->devlink = devlink;
608 rate_node->priv = priv;
610 rate_node->name = kstrdup(node_name, GFP_KERNEL);
611 if (!rate_node->name) {
612 kfree(rate_node);
616 refcount_set(&rate_node->refcnt, 1);
617 list_add(&rate_node->list, &devlink->rate_list);
618 devlink_rate_notify(rate_node, DEVLINK_CMD_RATE_NEW);
619 return rate_node;