Lines Matching refs:root

391 	/* Parent is the root */
393 node->root = node;
395 node->root = parent->root;
519 struct fs_node *root;
522 root = node->root;
524 if (WARN_ON(root->type != FS_TYPE_NAMESPACE)) {
529 ns = container_of(root, struct mlx5_flow_namespace, node);
535 struct mlx5_flow_root_namespace *root = find_root(node);
537 if (root)
538 return root->dev->priv.steering;
544 struct mlx5_flow_root_namespace *root = find_root(node);
546 if (root)
547 return root->dev;
563 struct mlx5_flow_root_namespace *root;
570 root = find_root(&ft->node);
574 err = root->cmds->destroy_flow_table(root, ft);
597 struct mlx5_flow_root_namespace *root;
607 root = find_root(&ft->node);
608 err = root->cmds->update_fte(root, ft, fg, fte->modify_mask, fte);
663 struct mlx5_flow_root_namespace *root;
677 root = find_root(&ft->node);
679 err = root->cmds->delete_fte(root, ft, fte);
708 struct mlx5_flow_root_namespace *root;
718 root = find_root(&ft->node);
719 if (fg->node.active && root->cmds->destroy_flow_group(root, ft, fg))
895 * root sub-tree from start(closest from right), else we search for the
896 * last flow table in the root sub-tree till start(closest from left).
898 static struct mlx5_flow_table *find_closest_ft_recursive(struct fs_node *root,
913 if (!root)
916 list_for_each_advance_continue(iter, &root->children, reverse) {
999 struct mlx5_flow_root_namespace *root = find_root(&prio->node);
1004 err = root->cmds->modify_flow_table(root, iter, ft);
1070 struct mlx5_flow_root_namespace *root = find_root(&prio->node);
1076 if (root->root_ft)
1077 min_level = root->root_ft->level;
1082 if (list_empty(&root->underlay_qpns)) {
1085 err = root->cmds->update_root_ft(root, ft, qpn, false);
1087 list_for_each_entry(uqp, &root->underlay_qpns, list) {
1089 err = root->cmds->update_root_ft(root, ft,
1097 mlx5_core_warn(root->dev,
1098 "Update root flow table of id(%u) qpn(%d) failed\n",
1101 root->root_ft = ft;
1109 struct mlx5_flow_root_namespace *root;
1124 root = find_root(&ft->node);
1125 err = root->cmds->update_fte(root, ft, fg,
1234 struct mlx5_flow_root_namespace *root = find_root(&ns->node);
1241 if (!root) {
1242 pr_err("mlx5: flow steering failed to find root of namespace\n");
1246 mutex_lock(&root->chain_lock);
1269 root->table_type,
1281 err = root->cmds->create_flow_table(root, ft, ft_attr, next_ft);
1286 err = connect_flow_table(root->dev, ft, fs_prio);
1297 ft->node.root = fs_prio->node.root;
1301 mutex_unlock(&root->chain_lock);
1305 root->cmds->destroy_flow_table(root, ft);
1310 mutex_unlock(&root->chain_lock);
1389 struct mlx5_flow_root_namespace *root = find_root(&ft->node);
1413 err = root->cmds->create_flow_group(root, ft, fg_in, fg);
1541 struct mlx5_flow_root_namespace *root;
1557 root = find_root(&fg->node);
1559 err = root->cmds->create_fte(root, ft, fg, fte);
1561 err = root->cmds->update_fte(root, ft, fg, modify_mask, fte);
1627 struct mlx5_flow_root_namespace *root = find_root(&ft->node);
1657 err = root->cmds->create_flow_group(root, ft, in, fg);
2186 struct mlx5_flow_root_namespace *root = find_root(&ft->node);
2203 mutex_lock(&root->chain_lock);
2239 mutex_unlock(&root->chain_lock);
2304 struct mlx5_flow_root_namespace *root = find_root(&ft->node);
2310 if (root->root_ft != ft)
2315 root->root_ft = NULL;
2319 if (list_empty(&root->underlay_qpns)) {
2322 err = root->cmds->update_root_ft(root, new_root_ft,
2325 list_for_each_entry(uqp, &root->underlay_qpns, list) {
2327 err = root->cmds->update_root_ft(root,
2336 mlx5_core_warn(root->dev,
2337 "Update root flow table of id(%u) qpn(%d) failed\n",
2340 root->root_ft = new_root_ft;
2379 struct mlx5_flow_root_namespace *root = find_root(&ft->node);
2382 mutex_lock(&root->chain_lock);
2386 mutex_unlock(&root->chain_lock);
2392 mutex_unlock(&root->chain_lock);
2739 /* Create the root namespace */
3262 struct mlx5_flow_root_namespace *root;
3269 root = find_root(&ns->node);
3270 if (!root)
3273 return root->cmds->get_capabilities(root, root->table_type);
3516 struct mlx5_flow_root_namespace *root = dev->priv.steering->root_ns;
3524 mutex_lock(&root->chain_lock);
3526 if (!root->root_ft) {
3531 err = root->cmds->update_root_ft(root, root->root_ft, underlay_qpn,
3534 mlx5_core_warn(dev, "Failed adding underlay QPN (%u) to root FT err(%d)\n",
3540 list_add_tail(&new_uqp->list, &root->underlay_qpns);
3542 mutex_unlock(&root->chain_lock);
3547 mutex_unlock(&root->chain_lock);
3555 struct mlx5_flow_root_namespace *root = dev->priv.steering->root_ns;
3560 mutex_lock(&root->chain_lock);
3561 list_for_each_entry(uqp, &root->underlay_qpns, list) {
3575 err = root->cmds->update_root_ft(root, root->root_ft, underlay_qpn,
3578 mlx5_core_warn(dev, "Failed removing underlay QPN (%u) from root FT err(%d)\n",
3582 mutex_unlock(&root->chain_lock);
3588 mutex_unlock(&root->chain_lock);
3613 struct mlx5_flow_root_namespace *root;
3617 root = get_root_namespace(dev, ns_type);
3618 if (!root)
3626 err = root->cmds->modify_header_alloc(root, ns_type, num_actions,
3640 struct mlx5_flow_root_namespace *root;
3642 root = get_root_namespace(dev, modify_hdr->ns_type);
3643 if (WARN_ON(!root))
3645 root->cmds->modify_header_dealloc(root, modify_hdr);
3655 struct mlx5_flow_root_namespace *root;
3658 root = get_root_namespace(dev, ns_type);
3659 if (!root)
3668 err = root->cmds->packet_reformat_alloc(root, params, ns_type,
3682 struct mlx5_flow_root_namespace *root;
3684 root = get_root_namespace(dev, pkt_reformat->ns_type);
3685 if (WARN_ON(!root))
3687 root->cmds->packet_reformat_dealloc(root, pkt_reformat);
3702 struct mlx5_flow_root_namespace *root;
3706 root = get_root_namespace(dev, ns_type);
3707 if (!root)
3715 id = root->cmds->create_match_definer(root, format_id, match_mask);
3717 mlx5_core_warn(root->dev, "Failed to create match definer (%d)\n", id);
3728 struct mlx5_flow_root_namespace *root;
3730 root = get_root_namespace(dev, definer->ns_type);
3731 if (WARN_ON(!root))
3734 root->cmds->destroy_match_definer(root, definer->id);
3758 struct mlx5_flow_root_namespace *root;
3762 root = find_root(&ns->node);
3763 if (&root->ns != ns)
3764 /* Can't set cmds to non root namespace */
3767 if (root->table_type != FS_FT_FDB)
3770 if (root->mode == mode)
3780 err = cmds->create_ns(root);
3782 mlx5_core_err(root->dev, "Failed to create flow namespace (%d)\n",
3787 root->cmds->destroy_ns(root);
3788 root->cmds = cmds;
3789 root->mode = mode;