patch 'net/mlx5: fix actions translation error overwrite' has been queued to stable release 24.11.2
Kevin Traynor
ktraynor at redhat.com
Fri Mar 7 13:47:02 CET 2025
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/12/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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f43c794f603e818502096ccf3bfda3160cbfd018
Thanks.
Kevin
---
>From f43c794f603e818502096ccf3bfda3160cbfd018 Mon Sep 17 00:00:00 2001
From: Junfeng Guo <junfengg at nvidia.com>
Date: Thu, 20 Feb 2025 09:08:50 +0200
Subject: [PATCH] net/mlx5: fix actions translation error overwrite
[ upstream commit 494da70e289c6a603185c890111f95568eb1fd63 ]
Function __flow_hw_translate_actions_template contains several
encapsulated functions that already have internal error handling
process via rte_flow_error_set for each case.
Thus the one (rte_flow_error_set) within the goto statement `err`
at the end of __flow_hw_translate_actions_template function may be
redundant for those failed cases. As a result, the error messages
would all be overwritten as "fail to create rte table", making it
displayed at quite large granularity.
To prevent above error messages overwrite, this patch add a local
variable `struct rte_flow_error sub_error` to the function and pass
this `sub_error` instead of `error` to each sub-function. Under error
handling process (`err` label), if `sub_error` was updated, copy its
contents to `error` and return. If it was not updated, return default
error message (`fail to create rte table`).
Also refactor the logic for SEND_TO_KERNEL, COUNT and AGE actions in
above function to align the error handling process.
Fixes: f13fab23922b ("net/mlx5: add flow jump action")
Signed-off-by: Junfeng Guo <junfengg at nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski at nvidia.com>
---
.mailmap | 2 +-
drivers/net/mlx5/mlx5_flow_hw.c | 65 ++++++++++++++++++++-------------
2 files changed, 40 insertions(+), 27 deletions(-)
diff --git a/.mailmap b/.mailmap
index d9423aa250..0ee46fdb0f 100644
--- a/.mailmap
+++ b/.mailmap
@@ -758,5 +758,5 @@ Julien Massonneau <julien.massonneau at 6wind.com>
Julien Meunier <julien.meunier at nokia.com> <julien.meunier at 6wind.com>
Július Milan <jmilan.dev at gmail.com>
-Junfeng Guo <junfeng.guo at intel.com>
+Junfeng Guo <junfengg at nvidia.com> <junfeng.guo at intel.com>
Junjie Chen <junjie.j.chen at intel.com>
Junjie Wan <wanjunjie at bytedance.com>
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 501bf33f94..e72b87d70f 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -2544,4 +2544,9 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
size_t data_size = 0, push_size = 0;
struct mlx5_hw_modify_header_action mhdr = { 0 };
+ struct rte_flow_error sub_error = {
+ .type = RTE_FLOW_ERROR_TYPE_NONE,
+ .cause = NULL,
+ .message = NULL,
+ };
bool actions_end = false;
uint32_t type;
@@ -2663,5 +2668,5 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
actions->conf)->group;
acts->jump = flow_hw_jump_action_register
- (dev, cfg, jump_group, error);
+ (dev, cfg, jump_group, &sub_error);
if (!acts->jump)
goto err;
@@ -2794,13 +2799,14 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
case RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL:
ret = flow_hw_translate_group(dev, cfg, attr->group,
- &target_grp, error);
+ &target_grp, &sub_error);
if (ret)
- return ret;
+ goto err;
if (target_grp == 0) {
__flow_hw_action_template_destroy(dev, acts);
- return rte_flow_error_set(error, ENOTSUP,
- RTE_FLOW_ERROR_TYPE_ACTION,
- NULL,
- "Send to kernel action on root table is not supported in HW steering mode");
+ rte_flow_error_set(&sub_error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ACTION,
+ NULL,
+ "Send to kernel action on root table is not supported in HW steering mode");
+ goto err;
}
table_type = attr->ingress ? MLX5DR_TABLE_TYPE_NIC_RX :
@@ -2812,5 +2818,5 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
err = flow_hw_modify_field_compile(dev, attr, actions,
masks, acts, &mhdr,
- src_pos, error);
+ src_pos, &sub_error);
if (err)
goto err;
@@ -2819,5 +2825,5 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
if (flow_hw_represented_port_compile
(dev, attr, actions,
- masks, acts, src_pos, dr_pos, error))
+ masks, acts, src_pos, dr_pos, &sub_error))
goto err;
break;
@@ -2833,5 +2839,6 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
masks->conf)->mtr_id) {
err = flow_hw_meter_compile(dev, cfg,
- dr_pos, jump_pos, actions, acts, error);
+ dr_pos, jump_pos, actions, acts,
+ &sub_error);
if (err)
goto err;
@@ -2844,13 +2851,14 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
case RTE_FLOW_ACTION_TYPE_AGE:
ret = flow_hw_translate_group(dev, cfg, attr->group,
- &target_grp, error);
+ &target_grp, &sub_error);
if (ret)
- return ret;
+ goto err;
if (target_grp == 0) {
__flow_hw_action_template_destroy(dev, acts);
- return rte_flow_error_set(error, ENOTSUP,
- RTE_FLOW_ERROR_TYPE_ACTION,
- NULL,
- "Age action on root table is not supported in HW steering mode");
+ rte_flow_error_set(&sub_error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ACTION,
+ NULL,
+ "Age action on root table is not supported in HW steering mode");
+ goto err;
}
if (__flow_hw_act_data_general_append(priv, acts,
@@ -2862,13 +2870,14 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
case RTE_FLOW_ACTION_TYPE_COUNT:
ret = flow_hw_translate_group(dev, cfg, attr->group,
- &target_grp, error);
+ &target_grp, &sub_error);
if (ret)
- return ret;
+ goto err;
if (target_grp == 0) {
__flow_hw_action_template_destroy(dev, acts);
- return rte_flow_error_set(error, ENOTSUP,
- RTE_FLOW_ERROR_TYPE_ACTION,
- NULL,
- "Counter action on root table is not supported in HW steering mode");
+ rte_flow_error_set(&sub_error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ACTION,
+ NULL,
+ "Counter action on root table is not supported in HW steering mode");
+ goto err;
}
if ((at->action_flags & MLX5_FLOW_ACTION_AGE) ||
@@ -2913,5 +2922,5 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
&acts->mtr_id,
MLX5_HW_INV_QUEUE,
- error);
+ &sub_error);
if (err)
goto err;
@@ -2980,9 +2989,9 @@ __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, &sub_error);
if (ret)
goto err;
if (!nt_mode && mhdr.shared) {
- ret = mlx5_tbl_ensure_shared_modify_header(dev, cfg, acts, error);
+ ret = mlx5_tbl_ensure_shared_modify_header(dev, cfg, acts, &sub_error);
if (ret)
goto err;
@@ -2995,5 +3004,5 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
mp_ctx, data_size,
reformat_src,
- refmt_type, error);
+ refmt_type, &sub_error);
if (ret)
goto err;
@@ -3021,4 +3030,8 @@ err:
err = rte_errno;
__flow_hw_action_template_destroy(dev, acts);
+ if (error != NULL && sub_error.type != RTE_FLOW_ERROR_TYPE_NONE) {
+ rte_memcpy(error, &sub_error, sizeof(sub_error));
+ return -EINVAL;
+ }
return rte_flow_error_set(error, err,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-07 11:02:57.977737092 +0000
+++ 0029-net-mlx5-fix-actions-translation-error-overwrite.patch 2025-03-07 11:02:56.897335815 +0000
@@ -1 +1 @@
-From 494da70e289c6a603185c890111f95568eb1fd63 Mon Sep 17 00:00:00 2001
+From f43c794f603e818502096ccf3bfda3160cbfd018 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 494da70e289c6a603185c890111f95568eb1fd63 ]
+
@@ -27 +28,0 @@
-Cc: stable at dpdk.org
@@ -37 +38 @@
-index 2a3f1b1bd4..e9896a2e5b 100644
+index d9423aa250..0ee46fdb0f 100644
@@ -40 +41 @@
-@@ -761,5 +761,5 @@ Julien Massonneau <julien.massonneau at 6wind.com>
+@@ -758,5 +758,5 @@ Julien Massonneau <julien.massonneau at 6wind.com>
More information about the stable
mailing list