The modify field implementation in mlx5 driver has a check to
prevent a copy from a field to the same field. But the level
is not taken into account which prevents a copy from different
tags. Check the level and allow a copy from one tag to another.

Fixes: 641dbe4fb05 ("net/mlx5: support modify field flow action")
Cc: sta...@dpdk.org

Signed-off-by: Alexander Kozyrev <akozy...@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index c50649a107..acb9af4e61 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -4788,8 +4788,10 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev 
*dev,
                                        "inner header fields modification"
                                        " is not supported");
        }
-       if (action_modify_field->dst.field ==
-           action_modify_field->src.field)
+       if ((action_modify_field->dst.field ==
+            action_modify_field->src.field) &&
+           (action_modify_field->dst.level ==
+            action_modify_field->src.level))
                return rte_flow_error_set(error, EINVAL,
                                RTE_FLOW_ERROR_TYPE_ACTION, action,
                                "source and destination fields"
-- 
2.18.2

Reply via email to