From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AEA9444145; Mon, 3 Jun 2024 12:55:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 45B5442E4B; Mon, 3 Jun 2024 12:55:00 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2074.outbound.protection.outlook.com [40.107.243.74]) by mails.dpdk.org (Postfix) with ESMTP id 1F4A542E63 for ; Mon, 3 Jun 2024 12:54:59 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZIPtk2r9YiV7xWkVQpSodPE2eLsEcvEU0xeKLd1Tzej/E8Q0TVBjWUiSo21yTYQbhKi5gLfw40oV1FrLW4ARpIUpe6S+OIV1g47+GmBTcvAYixAsPFmqhq5qNYaCzn9BnsSCjNslZUKwVfNAUCdE/WrTQguCqtEC67e44JL7H6IBI+p7dkUE5np0cIgbsn7ZxmQGXuQpJliBz/5TucU/5Qxw/4JegNqDedhZRUb87iqLqvKaYv8CXIP7pwFofxPNcWq6mcUtVKEb73qe+wgxkE2wcf807XWiPQmLfqaXswVkBcCnalZERcAap213Oqw5w7mYxeqBSxxZ42J5Txu0tQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YrDXkOyZ6VxBA/lViSgnUmAqzvIz4gqyjuEl9L+Mm1I=; b=W8YXfA2erptWDNrzx1BmuTtrxqIe46RrokFkkg52m3BgDrKItsLlZmmL0y8+ThdAZNyYhc1oJzoWXE6HHq/zcUxsa1EkGul0ucmioixVzjeQIWqjSIYeFkgeL4UOgu14Dw6zX2ih2c+juPXeWZIkjeOh6iReBEJlDE7KCjn2NPqpJdFWq4qeaG3LiWc/kIRv1zzsLW0g5UcJlBNrmS7vLO8Gun/4Bi2XLiN3EwUA5o5kGpbCF/mXAtvUDS4nXlbUdM+DjQZXFDYL+nurOprdhqCEJgE10s3chHQR81AE5XoL3NCb0xkn+s1Daxuo629t7GCTsuQ1HMybu6JbttCORg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YrDXkOyZ6VxBA/lViSgnUmAqzvIz4gqyjuEl9L+Mm1I=; b=fJhynZiofRM6BytAMvXnAZ9RFNgEtYJeReKX8XafmvEcogLDrUQIVe0dIs6McOU19NorAXSZTBfQFVpYcqNE9/EyYHIwT2aY65AISLYbW9qd2w8XRSsxhC/ADa3CQPjP72kQs0D5KLMXN/j1jpZRVKziuASmCIjkdmmyGFykKSWeTIabPtbjPoYANPraicbu5Jdp/vzZFySkUV3EuTLXG98ezLmyd7YL3KJs0QFyn+epW1GohjE3llavWWLsfKoCAsXvdpKboCHvCCdB01qWNn4BacxhxXMQOtUGgrSDHzsVIN0he8tGJxu/VRYFGoFJlA1AQtIxnNMkkxmVqPpH4w== Received: from SJ0PR03CA0372.namprd03.prod.outlook.com (2603:10b6:a03:3a1::17) by MN0PR12MB5788.namprd12.prod.outlook.com (2603:10b6:208:377::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.24; Mon, 3 Jun 2024 10:54:56 +0000 Received: from SJ1PEPF0000231D.namprd03.prod.outlook.com (2603:10b6:a03:3a1:cafe::8a) by SJ0PR03CA0372.outlook.office365.com (2603:10b6:a03:3a1::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.29 via Frontend Transport; Mon, 3 Jun 2024 10:54:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by SJ1PEPF0000231D.mail.protection.outlook.com (10.167.242.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.15 via Frontend Transport; Mon, 3 Jun 2024 10:54:55 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 3 Jun 2024 03:54:42 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 3 Jun 2024 03:54:41 -0700 Received: from nvidia.com (10.127.8.14) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4 via Frontend Transport; Mon, 3 Jun 2024 03:54:39 -0700 From: Maayan Kashani To: CC: , , , Viacheslav Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad Subject: [PATCH v3 2/4] net/mlx5: set modify header as shared action Date: Mon, 3 Jun 2024 13:54:28 +0300 Message-ID: <20240603105430.10818-2-mkashani@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240603105430.10818-1-mkashani@nvidia.com> References: <20240602102908.197054-1-mkashani@nvidia.com> <20240603105430.10818-1-mkashani@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231D:EE_|MN0PR12MB5788:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ae1490b-d5cc-4747-2451-08dc83bb9a8f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|376005|36860700004|1800799015|82310400017; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ZrOTgUs6p5nd/dDDabYDxe7Zuu7WaG5jHywEui1jXTaEcQcBwSRf8VtwI0t1?= =?us-ascii?Q?9Gey+cXFeRB6j+xby7N8LeNjTeRqlZtfBQGyPoqENL4dKWqBvJ0FF3G1bUiW?= =?us-ascii?Q?K/svbHBrbP3HipDS15QcMY2a4hKDtOwEG15kg6TiIA1NAquDK3n5cQHjRuRy?= =?us-ascii?Q?3R1GUC5h39IN/L7ZatULQdtzzLVKrEHID0+6+5LG4aOQX1EobhQ+nUiT6BNd?= =?us-ascii?Q?H4uxpa4Ve+TGr268cVIrjEDTh2rmFqPRJMyYQbKi/adz4YKfEYJd9Qnb/UUY?= =?us-ascii?Q?ZAC3TnqyEWZPRb8vnORALRopV0LZMpCjNGgNnG0MOal9Bzey/hh4+bDE1jyF?= =?us-ascii?Q?YQ/OwodI4IgRDzuG0J8E6hnNe+u77M9IIfW36m1DHyZ5Fkn0wceGJf9TJN4b?= =?us-ascii?Q?dfc6hxcHtSgdp1BH7gxTmcruoNNgWRglgzwHl4zzK5j8kDQpOdsY5oj9gnh0?= =?us-ascii?Q?hFHB6nMKBkG9bc+8GBIACK/O/3YrcL9g6bCTZ7au1d//pav3o3vucmZv0PpZ?= =?us-ascii?Q?CPd5lIpXng+l+6t55ucgxrAWb5vE+03cB43vgn2Lj5SA1aBK8mwZ9hk8Ii6c?= =?us-ascii?Q?nrdpoiLnHq7qEqK5FHKWmBS0mPSGo7W0h7cQZRDEUcRMu7OJQ2Y9wFz1EWXK?= =?us-ascii?Q?/iqaV9qMwR356B9p2DJpY5Ryr9cSlWDr25hMpvOx4oDN7Lvenvk2OU49mYpU?= =?us-ascii?Q?vTrBRP62SlAOp239hgGdvD3bxC4D7zdtIFHK/WHRkOOXes8K0XdSTEmjLPIL?= =?us-ascii?Q?MxTZL2AidEAEAiKeSARbW/eFISrLr33T9Hzqf2Cbirc1dACGscRaQvY0nn4a?= =?us-ascii?Q?Byp+XjVfnmBJQaRmabFOjtS41AK4X2P+RFS9dR7qJdrJ3xbTzVrXEEuNW7h7?= =?us-ascii?Q?dEEGU9fQbJHEvbhV+jSL0EdnmAo+hmrdwK2Wyq6ynxt00DBI9Gyq7d+60tkA?= =?us-ascii?Q?Cdu/Ca9l9CYBOxF0MA5shFwYroDz61RjfE4axXWpD5if9o1TXlUpGoVprArV?= =?us-ascii?Q?klWVJ1K8XwBilDdy2nUByXfgjZLAGUaeWABup6AhCOdudSqXQtWaYLdeR1Ui?= =?us-ascii?Q?k9F/wAytH6fTCNAzmolsNyrIRZA3n/iXMmfWQXu8y/Zdu+vuam1wjyxfV6ON?= =?us-ascii?Q?aVHSOP+Ah75iLWad2rfwisz7ZFZPQWcFBX4ywk5PD5TJwZz9CXPym28FVEo9?= =?us-ascii?Q?p987mPw6/0pBDY2qIqhM1evek5DUvcZDUzfgy9GvvFxnx6PNvrOz+prDecGG?= =?us-ascii?Q?5bI4Xk+jBuuEl/x5RWCliKz1GNL/FSm5swAg1dzhlN0TkgWZkIC4GbOciuLu?= =?us-ascii?Q?wEAbq8Pkp2i8FWGUdQ39q1wLWyDDRIie+WUXFqRAuUgP0RYfu53gergMMVPL?= =?us-ascii?Q?RVF3/ZAyA2QhdpmJw92oZnhC9ndw?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230031)(376005)(36860700004)(1800799015)(82310400017); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2024 10:54:55.4337 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ae1490b-d5cc-4747-2451-08dc83bb9a8f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF0000231D.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5788 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org In current implementation, in non template mode, modify header action is not set as always shared. Align to HWS implementation, setting modify header action as always shared. Optimize mask initialization. Signed-off-by: Maayan Kashani --- drivers/net/mlx5/mlx5_flow.h | 3 -- drivers/net/mlx5/mlx5_flow_dv.c | 10 ++-- drivers/net/mlx5/mlx5_flow_hw.c | 91 +++++++++++++++++++-------------- 3 files changed, 59 insertions(+), 45 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index 5a3f047968..f5bb01616e 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -669,9 +669,6 @@ struct mlx5_flow_dv_modify_hdr_resource { struct mlx5_list_entry entry; void *action; /**< Modify header action object. */ uint32_t idx; -#ifdef HAVE_MLX5_HWS_SUPPORT - void *mh_dr_pattern; /**< Modify header DR pattern(HWS only). */ -#endif uint64_t flags; /**< Flags for RDMA API(HWS only). */ /* Key area for hash list matching: */ uint8_t ft_type; /**< Flow table type, Rx or Tx. */ diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 3611ffa4a1..94af391894 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -6219,9 +6219,7 @@ flow_modify_create_cb(void *tool_ctx, void *cb_ctx) uint32_t data_len = ref->actions_num * sizeof(ref->actions[0]); uint32_t key_len = sizeof(*ref) - offsetof(typeof(*ref), ft_type); uint32_t idx; - struct mlx5_tbl_multi_pattern_ctx *mpctx; - typeof(mpctx->mh) *mh_dr_pattern = ref->mh_dr_pattern; if (unlikely(!ipool)) { rte_flow_error_set(ctx->error, ENOMEM, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, @@ -6240,9 +6238,13 @@ flow_modify_create_cb(void *tool_ctx, void *cb_ctx) key_len + data_len); if (sh->config.dv_flow_en == 2) { #ifdef HAVE_MLX5_HWS_SUPPORT + struct mlx5dr_action_mh_pattern pattern = { + .sz = data_len, + .data = (__be64 *)ref->actions + }; entry->action = mlx5dr_action_create_modify_header(ctx->data2, - mh_dr_pattern->elements_num, - mh_dr_pattern->pattern, 0, ref->flags); + 1, + &pattern, 0, ref->flags); if (!entry->action) ret = -1; #else diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index 43bcaab592..134a035f41 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -1439,13 +1439,11 @@ flow_hw_converted_mhdr_cmds_append(struct mlx5_hw_modify_header_action *mhdr, static __rte_always_inline void flow_hw_modify_field_init(struct mlx5_hw_modify_header_action *mhdr, - struct rte_flow_actions_template *at, - bool nt_mode) + struct rte_flow_actions_template *at) { memset(mhdr, 0, sizeof(*mhdr)); /* Modify header action without any commands is shared by default. */ - if (!(nt_mode)) - mhdr->shared = true; + mhdr->shared = true; mhdr->pos = at->mhdr_off; } @@ -2212,10 +2210,6 @@ mlx5_tbl_translate_modify_header(struct rte_eth_dev *dev, struct mlx5_hw_modify_header_action *mhdr, struct rte_flow_error *error) { - struct mlx5_priv *priv = dev->data->dev_private; - const struct rte_flow_template_table_attr *table_attr = &cfg->attr; - const struct rte_flow_attr *attr = &table_attr->flow_attr; - enum mlx5dr_table_type tbl_type = get_mlx5dr_table_type(attr); uint16_t mhdr_ix = mhdr->pos; struct mlx5dr_action_mh_pattern pattern = { .sz = sizeof(struct mlx5_modification_cmd) * mhdr->mhdr_cmds_num @@ -2232,20 +2226,8 @@ mlx5_tbl_translate_modify_header(struct rte_eth_dev *dev, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, "translate modify_header: no memory for modify header context"); rte_memcpy(acts->mhdr, mhdr, sizeof(*mhdr)); - pattern.data = (__be64 *)acts->mhdr->mhdr_cmds; - if (mhdr->shared) { - uint32_t flags = mlx5_hw_act_flag[!!attr->group][tbl_type] | - MLX5DR_ACTION_FLAG_SHARED; - - acts->mhdr->action = mlx5dr_action_create_modify_header - (priv->dr_ctx, 1, &pattern, 0, - flags); - if (!acts->mhdr->action) - return rte_flow_error_set(error, rte_errno, - RTE_FLOW_ERROR_TYPE_UNSPECIFIED, - NULL, "translate modify_header: failed to create DR action"); - acts->rule_acts[mhdr_ix].action = acts->mhdr->action; - } else { + if (!mhdr->shared) { + pattern.data = (__be64 *)acts->mhdr->mhdr_cmds; typeof(mp_ctx->mh) *mh = &mp_ctx->mh; uint32_t idx = mh->elements_num; mh->pattern[mh->elements_num++] = pattern; @@ -2256,6 +2238,32 @@ mlx5_tbl_translate_modify_header(struct rte_eth_dev *dev, return 0; } +static int +mlx5_tbl_ensure_shared_modify_header(struct rte_eth_dev *dev, + const struct mlx5_flow_template_table_cfg *cfg, + struct mlx5_hw_actions *acts, + struct rte_flow_error *error) +{ + struct mlx5_priv *priv = dev->data->dev_private; + const struct rte_flow_template_table_attr *table_attr = &cfg->attr; + const struct rte_flow_attr *attr = &table_attr->flow_attr; + enum mlx5dr_table_type tbl_type = get_mlx5dr_table_type(attr); + struct mlx5dr_action_mh_pattern pattern = { + .sz = sizeof(struct mlx5_modification_cmd) * acts->mhdr->mhdr_cmds_num + }; + uint16_t mhdr_ix = acts->mhdr->pos; + uint32_t flags = mlx5_hw_act_flag[!!attr->group][tbl_type] | MLX5DR_ACTION_FLAG_SHARED; + + pattern.data = (__be64 *)acts->mhdr->mhdr_cmds; + acts->mhdr->action = mlx5dr_action_create_modify_header(priv->dr_ctx, 1, + &pattern, 0, flags); + if (!acts->mhdr->action) + return rte_flow_error_set(error, rte_errno, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, + "translate modify_header: failed to create DR action"); + acts->rule_acts[mhdr_ix].action = acts->mhdr->action; + return 0; +} static int mlx5_create_ipv6_ext_reformat(struct rte_eth_dev *dev, @@ -2393,7 +2401,7 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev, uint32_t target_grp = 0; int table_type; - flow_hw_modify_field_init(&mhdr, at, nt_mode); + flow_hw_modify_field_init(&mhdr, at); if (attr->transfer) type = MLX5DR_TABLE_TYPE_FDB; else if (attr->egress) @@ -2780,10 +2788,14 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev, } } if (mhdr.pos != UINT16_MAX) { - ret = mlx5_tbl_translate_modify_header(dev, cfg, acts, mp_ctx, - &mhdr, error); + ret = mlx5_tbl_translate_modify_header(dev, cfg, acts, mp_ctx, &mhdr, error); if (ret) goto err; + if (!nt_mode && mhdr.shared) { + ret = mlx5_tbl_ensure_shared_modify_header(dev, cfg, acts, error); + if (ret) + goto err; + } } if (reformat_used) { ret = mlx5_tbl_translate_reformat(priv, table_attr, acts, at, @@ -12348,8 +12360,8 @@ static int flow_hw_prepare(struct rte_eth_dev *dev, /*TODO: consider if other allocation is needed for actions translate. */ return 0; } -#define FLOW_HW_SET_DV_FIELDS(flow_attr, root, flags) \ -{ \ + +#define FLOW_HW_SET_DV_FIELDS(flow_attr, root, flags, dv_resource) { \ typeof(flow_attr) _flow_attr = (flow_attr); \ if (_flow_attr->transfer) \ dv_resource.ft_type = MLX5DV_FLOW_TABLE_TYPE_FDB; \ @@ -12370,28 +12382,31 @@ flow_hw_modify_hdr_resource_register { struct rte_flow_attr *attr = &table->cfg.attr.flow_attr; struct mlx5_flow_dv_modify_hdr_resource *dv_resource_ptr = NULL; - struct mlx5_flow_dv_modify_hdr_resource dv_resource; - struct mlx5_tbl_multi_pattern_ctx *mpctx = &table->mpctx; + union { + struct mlx5_flow_dv_modify_hdr_resource dv_resource; + uint8_t data[sizeof(struct mlx5_flow_dv_modify_hdr_resource) + + sizeof(struct mlx5_modification_cmd) * MLX5_MHDR_MAX_CMD]; + } dummy; int ret; if (hw_acts->mhdr) { - dv_resource.actions_num = hw_acts->mhdr->mhdr_cmds_num; - memcpy(dv_resource.actions, hw_acts->mhdr->mhdr_cmds, - sizeof(struct mlx5_modification_cmd) * dv_resource.actions_num); + dummy.dv_resource.actions_num = hw_acts->mhdr->mhdr_cmds_num; + memcpy(dummy.dv_resource.actions, hw_acts->mhdr->mhdr_cmds, + sizeof(struct mlx5_modification_cmd) * dummy.dv_resource.actions_num); } else { return 0; } - FLOW_HW_SET_DV_FIELDS(attr, dv_resource.root, dv_resource.flags); - /* Save a pointer to the pattern needed for DR layer created on actions translate. */ - dv_resource.mh_dr_pattern = &table->mpctx.mh; - ret = __flow_modify_hdr_resource_register(dev, &dv_resource, + FLOW_HW_SET_DV_FIELDS(attr, dummy.dv_resource.root, dummy.dv_resource.flags, + dummy.dv_resource); + dummy.dv_resource.flags |= MLX5DR_ACTION_FLAG_SHARED; + ret = __flow_modify_hdr_resource_register(dev, &dummy.dv_resource, &dv_resource_ptr, error); if (ret) return ret; MLX5_ASSERT(dv_resource_ptr); dev_flow->nt2hws->modify_hdr = dv_resource_ptr; /* keep action for the rule construction. */ - mpctx->segments[0].mhdr_action = dv_resource_ptr->action; + hw_acts->rule_acts[hw_acts->mhdr->pos].action = dv_resource_ptr->action; /* Bulk size is 1, so index is 1. */ dev_flow->res_idx = 1; return 0; @@ -12426,7 +12441,7 @@ flow_hw_encap_decap_resource_register return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, NULL, "No reformat action exist in the table."); dv_resource.size = reformat->reformat_hdr->sz; - FLOW_HW_SET_DV_FIELDS(attr, is_root, dv_resource.flags); + FLOW_HW_SET_DV_FIELDS(attr, is_root, dv_resource.flags, dv_resource); MLX5_ASSERT(dv_resource.size <= MLX5_ENCAP_MAX_LEN); memcpy(dv_resource.buf, reformat->reformat_hdr->data, dv_resource.size); ret = __flow_encap_decap_resource_register(dev, &dv_resource, is_root, -- 2.25.1