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 1664146364 for ; Fri, 7 Mar 2025 13:48:44 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0D8CF40E3A; Fri, 7 Mar 2025 13:48:44 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 5605B402C3 for ; Fri, 7 Mar 2025 13:48:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741351721; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aLfstzXZZf9wSxqteeqzPEeNfP9OG+nSIo7ux1uEq/s=; b=KxMxrGMMISvX/IM0hxLXcP/H7sFDGBvcJhArIRLSXclGMIbYR1C1bWMbikBptwXPrLe+No Dwk+t1QSvDH7ts94oywKrT1LECYNjc/Fw0cZ6nqP0VGBrIjbCoNAnkZjgiz5cjkr0Vo9sU N0eJIJMKkQUc4fjzmvJ3pWKqeBf46i8= Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-382-PhsZv3wfMWG-hKfgwN5eQA-1; Fri, 07 Mar 2025 07:48:38 -0500 X-MC-Unique: PhsZv3wfMWG-hKfgwN5eQA-1 X-Mimecast-MFC-AGG-ID: PhsZv3wfMWG-hKfgwN5eQA_1741351718 Received: from mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DCD1C19560AB; Fri, 7 Mar 2025 12:48:37 +0000 (UTC) Received: from rh.Home (unknown [10.45.226.25]) by mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5AF9F1956095; Fri, 7 Mar 2025 12:48:36 +0000 (UTC) From: Kevin Traynor To: Junfeng Guo Cc: Dariusz Sosnowski , dpdk stable Subject: patch 'net/mlx5: fix actions translation error overwrite' has been queued to stable release 24.11.2 Date: Fri, 7 Mar 2025 12:47:02 +0000 Message-ID: <20250307124726.475001-29-ktraynor@redhat.com> In-Reply-To: <20250307124726.475001-1-ktraynor@redhat.com> References: <20250307124726.475001-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.15 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: jgFWB59EZzUD6rN4WqjKIwfoQ6cOlcKkFOSjCagowN8_1741351718 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org 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 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 Acked-by: Dariusz Sosnowski --- .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 Meunier JĂșlius Milan -Junfeng Guo +Junfeng Guo Junjie Chen Junjie Wan 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@dpdk.org @@ -37 +38 @@ -index 2a3f1b1bd4..e9896a2e5b 100644 +index d9423aa250..0ee46fdb0f 100644 @@ -40 +41 @@ -@@ -761,5 +761,5 @@ Julien Massonneau +@@ -758,5 +758,5 @@ Julien Massonneau