patch 'net/mlx5: fix modify field action restriction' has been queued to stable release 23.11.6
Shani Peretz
shperetz at nvidia.com
Thu Dec 25 10:18:17 CET 2025
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/shanipr/dpdk-stable
This queued commit can be viewed at:
https://github.com/shanipr/dpdk-stable/commit/5733bf629fa1a4d20f421da19515ed8681b07e61
Thanks.
Shani
---
>From 5733bf629fa1a4d20f421da19515ed8681b07e61 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani at nvidia.com>
Date: Wed, 5 Nov 2025 10:50:49 +0200
Subject: [PATCH] net/mlx5: fix modify field action restriction
[ upstream commit 17082f45e93697dcfbe056da7f90af90362cc6b2 ]
Update DV flow engine modify field validation:
- Reject 'add' and 'sub' operations when source field is not VALUE
or POINTER in DV flow engine.
Update documentation to clarify operation support:
- 'set' operation is supported in all modes
- 'add' operation with VALUE/POINTER source fields is
supported in DV/HWS mode.
- Specify relevant HW supporting packet header as 'src' field.
- List supported 'dst' fields.
Fixes: 641dbe4fb053 ("net/mlx5: support modify field flow action")
Signed-off-by: Maayan Kashani <mkashani at nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski at nvidia.com>
---
doc/guides/nics/mlx5.rst | 21 ++++++++++++++++++++-
drivers/net/mlx5/mlx5_flow_dv.c | 7 +++++++
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index 01133a5898..d19de3f871 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -579,7 +579,26 @@ Limitations
- Modify Field flow:
- - Supports the 'set' and 'add' operations for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` action.
+ - Supports the 'set' operation for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` in all flow engines.
+ - Supports the 'add' operation with 'src' field of type
+ ``RTE_FLOW_FIELD_VALUE`` or ``RTE_FLOW_FIELD_POINTER`` with both HW steering (``dv_flow_en=2``)
+ and DV flow engine (``dv_flow_en=1``).
+ - HW steering flow engine, starting with ConnectX-7 and BlueField-3,
+ supports packet header fields in 'src' field.
+ 'dst' field can be any of the following:
+
+ - ``RTE_FLOW_FIELD_IPV4_TTL``
+ - ``RTE_FLOW_FIELD_IPV6_HOPLIMIT``
+ - ``RTE_FLOW_FIELD_TCP_SEQ_NUM``
+ - ``RTE_FLOW_FIELD_TCP_ACK_NUM``
+ - ``RTE_FLOW_FIELD_TAG``
+ - ``RTE_FLOW_FIELD_META``
+ - ``RTE_FLOW_FIELD_FLEX_ITEM``
+ - ``RTE_FLOW_FIELD_TCP_DATA_OFFSET``
+ - ``RTE_FLOW_FIELD_IPV4_IHL``
+ - ``RTE_FLOW_FIELD_IPV4_TOTAL_LEN``
+ - ``RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN``
+
- Modification of an arbitrary place in a packet via the special ``RTE_FLOW_FIELD_START`` Field ID is not supported.
- Modification of the MPLS header is supported only in HWS and only to copy from,
the encapsulation level is always 0.
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index d8cfb7cee5..56a0beeef6 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -5357,6 +5357,13 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev,
}
if (src_data->field != RTE_FLOW_FIELD_VALUE &&
src_data->field != RTE_FLOW_FIELD_POINTER) {
+ if (conf->operation != RTE_FLOW_MODIFY_SET)
+ return rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ACTION_CONF,
+ &conf->operation,
+ "modify field action type add is not"
+ " supported when src field type is"
+ " not value/pointer");
if (root)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_ACTION, action,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.151846631 +0200
+++ 0056-net-mlx5-fix-modify-field-action-restriction.patch 2025-12-25 11:16:35.925949000 +0200
@@ -1 +1 @@
-From 17082f45e93697dcfbe056da7f90af90362cc6b2 Mon Sep 17 00:00:00 2001
+From 5733bf629fa1a4d20f421da19515ed8681b07e61 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 17082f45e93697dcfbe056da7f90af90362cc6b2 ]
+
@@ -18 +19,0 @@
-Cc: stable at dpdk.org
@@ -23 +24 @@
- doc/guides/nics/mlx5.rst | 23 ++++++++++++++++++++++-
+ doc/guides/nics/mlx5.rst | 21 ++++++++++++++++++++-
@@ -25 +26 @@
- 2 files changed, 29 insertions(+), 1 deletion(-)
+ 2 files changed, 27 insertions(+), 1 deletion(-)
@@ -28 +29 @@
-index 8474ebf601..3eb7817f9a 100644
+index 01133a5898..d19de3f871 100644
@@ -31,3 +32 @@
-@@ -3086,7 +3086,28 @@ DPDK 21.02
- Limitations
- ^^^^^^^^^^^
+@@ -579,7 +579,26 @@ Limitations
@@ -35,9 +34,10 @@
--#. Supports the 'set' and 'add' operations for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` action.
-+#. Supports the 'set' operation for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` in all flow engines.
-+
-+#. Supports the 'add' operation with 'src' field
-+ of type ``RTE_FLOW_FIELD_VALUE`` or ``RTE_FLOW_FIELD_POINTER``
-+ with both :ref:`HW steering <mlx5_hws>` and DV flow engine (``dv_flow_en=1``).
-+
-+ HW steering flow engine, starting with ConnectX-7 and BlueField-3,
-+ supports packet header fields in 'src' field.
+ - Modify Field flow:
+
+- - Supports the 'set' and 'add' operations for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` action.
++ - Supports the 'set' operation for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` in all flow engines.
++ - Supports the 'add' operation with 'src' field of type
++ ``RTE_FLOW_FIELD_VALUE`` or ``RTE_FLOW_FIELD_POINTER`` with both HW steering (``dv_flow_en=2``)
++ and DV flow engine (``dv_flow_en=1``).
++ - HW steering flow engine, starting with ConnectX-7 and BlueField-3,
++ supports packet header fields in 'src' field.
++ 'dst' field can be any of the following:
@@ -45 +45,11 @@
-+ 'dst' field can be any of the following:
++ - ``RTE_FLOW_FIELD_IPV4_TTL``
++ - ``RTE_FLOW_FIELD_IPV6_HOPLIMIT``
++ - ``RTE_FLOW_FIELD_TCP_SEQ_NUM``
++ - ``RTE_FLOW_FIELD_TCP_ACK_NUM``
++ - ``RTE_FLOW_FIELD_TAG``
++ - ``RTE_FLOW_FIELD_META``
++ - ``RTE_FLOW_FIELD_FLEX_ITEM``
++ - ``RTE_FLOW_FIELD_TCP_DATA_OFFSET``
++ - ``RTE_FLOW_FIELD_IPV4_IHL``
++ - ``RTE_FLOW_FIELD_IPV4_TOTAL_LEN``
++ - ``RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN``
@@ -47,14 +57,3 @@
-+ - ``RTE_FLOW_FIELD_IPV4_TTL``
-+ - ``RTE_FLOW_FIELD_IPV6_HOPLIMIT``
-+ - ``RTE_FLOW_FIELD_TCP_SEQ_NUM``
-+ - ``RTE_FLOW_FIELD_TCP_ACK_NUM``
-+ - ``RTE_FLOW_FIELD_TAG``
-+ - ``RTE_FLOW_FIELD_META``
-+ - ``RTE_FLOW_FIELD_FLEX_ITEM``
-+ - ``RTE_FLOW_FIELD_TCP_DATA_OFFSET``
-+ - ``RTE_FLOW_FIELD_IPV4_IHL``
-+ - ``RTE_FLOW_FIELD_IPV4_TOTAL_LEN``
-+ - ``RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN``
-
- #. In template tables of group 0, the modify action must be fully masked.
-
+ - Modification of an arbitrary place in a packet via the special ``RTE_FLOW_FIELD_START`` Field ID is not supported.
+ - Modification of the MPLS header is supported only in HWS and only to copy from,
+ the encapsulation level is always 0.
@@ -62 +61 @@
-index f765f94116..95ca57e8c4 100644
+index d8cfb7cee5..56a0beeef6 100644
@@ -65 +64 @@
-@@ -5642,6 +5642,13 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev,
+@@ -5357,6 +5357,13 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev,
More information about the stable
mailing list