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 AEF214653E for ; Wed, 9 Apr 2025 08:36:58 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8CA1D402B7; Wed, 9 Apr 2025 08:36:58 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2045.outbound.protection.outlook.com [40.107.93.45]) by mails.dpdk.org (Postfix) with ESMTP id 897F1402B7 for ; Wed, 9 Apr 2025 08:36:57 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=St7r0uqmWlb+0bBIqkyWMaTMNm1l2RfiNF3AfTSYxRTCyOhZNDI8H7gXkuzU2Z+NGWW6uBP0SLlYuuvOA9x3z2P6/vevwfTZ/EjV7uNR9U+gI36wCSA379YirNs1KREo3+KR7UVYyq1mTk7zGVUZs6o3AGcLBM5aSFLz5+qVXTys7W0Gp8Ud/D2pcJKsyYRzVZrQxw6r/+Q0vOGulNNKzG+70a13QvMZQtjQaI+AsWEHVjWqYk/dePo95mSBrpkSABFB7GkfJu5nV3RbRrDGi5QmEw4iXjgDbAWm853Y4R3ONthBHCXl4CPhEcKoPj1ATVIhlqMXazvzng4MKlQtew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=w63dEQ5c2C104fU9+tlLu4M8P++MoP153PJlHDJOkk8=; b=moCcX36j3CmAwxkqkYXo8OVrvCCTPiG+97r0iPcufhYMP/hOF1gN3DryYu+5Iwnhq08IHlUtd1g0diteOXkdycff3sSDMWo2xJHdjLX+k5/xrpCJN7qUoiEzkaDTDbHgDPJXe+mT3JuN1KKQ4IUY72wPEUlDScVWoDcAcO6m8EG6B/OiqhlseuEwtjtqDQsugmP1OxlMddNC1blm+0/xsrV2E4YrRP3u5U6W2SO1h1ovCNZnoNnousgZuA5EULfwpQ5lA1SXfmbuXqnEJ+oflhmnXyPp13VnYLLQ02FBASOm0pfrTiqQiNsIjvuQY3NgKjNh31GaSa7007mgUYn0Iw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) 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=w63dEQ5c2C104fU9+tlLu4M8P++MoP153PJlHDJOkk8=; b=k89XHlmxLabmp8NhcsZy++bZETzL3Et4Sj/IR0UMIGWwiCHqh+NE1A0on0qK01C0zjjksX6SiFSdkBqDOXJ3F6dEqMB1cZnsBP37wLGwJa2FGqr+J7TwMlqQ4Fbgpmxc3vNkAVJw5wCVhjIt0jgbx8H1DWhazg029tAWntllEruy9BWGVFFcBMOmHLfpxgCqG+X9fGrfbQ+zm3751K2XQ6pBx5afGRXIqcDnEjrgVSukiHc6dMsJlqFknb3HJs/Zm2xOaITB2bOzC6lSWRNJYipvEr3qlZ+O3GWFlVQYMQ+0uaTwRQ6o1NwQTVifOQROXfSAi0ILZZbDCMCRNkRT8g== Received: from BN9PR03CA0303.namprd03.prod.outlook.com (2603:10b6:408:112::8) by SJ0PR12MB8092.namprd12.prod.outlook.com (2603:10b6:a03:4ee::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.22; Wed, 9 Apr 2025 06:36:51 +0000 Received: from BN3PEPF0000B06A.namprd21.prod.outlook.com (2603:10b6:408:112:cafe::98) by BN9PR03CA0303.outlook.office365.com (2603:10b6:408:112::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8606.36 via Frontend Transport; Wed, 9 Apr 2025 06:36:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN3PEPF0000B06A.mail.protection.outlook.com (10.167.243.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.0 via Frontend Transport; Wed, 9 Apr 2025 06:36:51 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 8 Apr 2025 23:36:34 -0700 Received: from nvidia.com (10.126.230.35) 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.14; Tue, 8 Apr 2025 23:36:31 -0700 From: Junfeng Guo To: CC: , , , , , , Subject: [PATCH 23.11] net/mlx5: fix actions translation error overwrite Date: Wed, 9 Apr 2025 09:35:59 +0300 Message-ID: <20250409063559.288037-1-junfengg@nvidia.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06A:EE_|SJ0PR12MB8092:EE_ X-MS-Office365-Filtering-Correlation-Id: 5dc360a3-89be-4137-64af-08dd7730e94b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700013|7053199007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SjZBdHdLYktpRGJPeUNGMHJ4K09leFRBTERBWk9DYXAxczRXZVl4S09RU0hY?= =?utf-8?B?WXNxZnhLdUFSUFBwOVpHZ0hRV3FwTUJsZklJdmhkK2ZCNTBkSFUvd2J2dWp1?= =?utf-8?B?SXVTRE42RllVZUNJZnZybFJjREhtV2ZSZjVZZUdCVVE0R1ZtNkRXaExsaFl4?= =?utf-8?B?bGJCT01RYllKelJUbnc1dWhKRldHNEphWlJDODR6YnNYUThsak91QVRSdEVy?= =?utf-8?B?dno1OTV4bzhKUVI4TUZsTHhqYTdrU2lrSnZ5bUd4SzJ4MTFVNVhXM25HejRs?= =?utf-8?B?dlhObEVVZjJVRGZFZWJnQW5KcWJXT3cyaEJyN0Q2TkpOSjlvbnZMMVNsRGxC?= =?utf-8?B?L1FJT0QzeHo4SE1Ic2ZSZm1EK2tXYU1ZNTF1NTFIR29mbkFMeGVlMG5RajYr?= =?utf-8?B?azdXOUpPV3NPR0VRN0tJMnRZbG96TDJtTDM2cXhrWnFTeC83TmJ2OTFvd0M2?= =?utf-8?B?L21nL3ZlSHhyWWc1TUcwMGRzM2srZVdGQ2p6TGxNeGR5QzZHWWZCeTFTcmVw?= =?utf-8?B?aXRidnZtYTVVS0p4ZVgyOTJnaTJYYnBkTml2NzFzdnZKc1pCWlpLZEM0QXNk?= =?utf-8?B?MmxQTEFkai9ERlBwN3dHdjlOcEFXK0pmRzIzZzdkWEFMZXdxOFZTZ3F0ajRu?= =?utf-8?B?VlEvaTJJM3o3bGhTaDhMTGZXNVJOc1Y5QTNKL2wzb2prNWcvK1lFb0VRNDh0?= =?utf-8?B?TnF3N0g4VmtmUSt6WEJFS0Ruc2J4YVJXa1VvN3BIc1lIQUs0TGUzdXdLa3VN?= =?utf-8?B?a0RsQkxIWEpjS001RDFrM3l1MFkrRlpEQlYvV1ZMLzhiMHY4eHFSdlZUOVQ3?= =?utf-8?B?RnpXZ2o2TWcrMXphczgzSENuYVg1Z2pZSXFDb3NDL3ViREtJckVvQ3FBRnA1?= =?utf-8?B?bjF1eXRveEpwV2UxcExoVlNwNU1NaEhOeTJ1cnZCZlNYR051TEZReGxCaFdK?= =?utf-8?B?MG5xSjduUVRYZmpTNWxFYklQclFqbjVpRW82UHZYblJjRTJRNVNwd050Qk9j?= =?utf-8?B?ak50SVFWbmRnZ3JuT2kvV0hWbC9LNnZhTnp0REdRL0lreGs3WDVlQmZURm5O?= =?utf-8?B?cTRpLzg1cEkyNkl6UG5mRWdpTENYZTh5bTk1Yjd1UktldkUyMEErRnVqcU0w?= =?utf-8?B?SnYxOHJwY1dKazkzZkVISDVUdHIwZVNHZ3hFbnZ0OEtDZTZxYUNDNEd5My9R?= =?utf-8?B?azQ2ZUF0Vjk0MWFQcWZtUERNb0ZLWVRGazFBemF1dWlQeG5PcklPYkt5bDht?= =?utf-8?B?WjN3NHU0Mi9wcElpZUhPTjZraEZDUk9yWEp0TXkwOVo5K1V4ZU9sR2xqSWRK?= =?utf-8?B?RmtYdDJrRnkvRU1FdG40UzQ2SU40NUZPMTdmOWZVelE0VjZZUHZJalBFcldX?= =?utf-8?B?cWpvZkdDQUx1WElIdDdPay85Z2YvbU5Sckg3Q1lZOWhUNXZxMHJBY2ptNXJ6?= =?utf-8?B?bm1kcGpoQnQ3R2RMN2VkQTBWb2Z1VUQ1YmRwL0tpd084NDhTTWxLMWpxc2Za?= =?utf-8?B?dEFHdUppMy9wajlmdlJEUFFKY0psS2pnbWYwU1FQZ0NBMUN4cGlFU2R4eXli?= =?utf-8?B?eFZ4SDhQVnU0UmUzNUJMUFNJR3FjdkFnZzFtcTB1eVFkRFM1L2xKWkh2bkxy?= =?utf-8?B?OUV3d08va1VraEVJQ1JKZVh2U2ljRWxCSVpaU3oza3J0amV0MWkzeE5ndXRj?= =?utf-8?B?em4xL09YRFFDTzEwbG83eUZ4d0VROFZlSjl6eFcvbUh1T0FJRDlNV2YzZDJk?= =?utf-8?B?YUhZbG9vNnM2VmtLK0w3aXlpTW1EZUxSeVl4T1pLb0FtV3NLamttNGMyVHN1?= =?utf-8?B?UW9abmUrSWNzM29hZVYxMGY1ZlZTVE1JTVVQR3daNVFhSVZXWnlZZW9XdjQ5?= =?utf-8?B?ZUhqaVZMNktYVW1XRGE4RVV4cFBVd2Rrb0tEeWhXSjdFamIwMTB5ZmVLZHdQ?= =?utf-8?B?SWU4SUpONytvRjIzeFc4QkhHSzNVR0FXSEsrMVkvY25ib2FMQkJvaFN2VVRn?= =?utf-8?B?TVBHenU1dmt0bHJWdnR1ejhKaHI0dER0V2JiUXJBTXNDV3M5dHBVRWRWeFY1?= =?utf-8?Q?JKhPz2?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013)(7053199007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 06:36:51.0732 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5dc360a3-89be-4137-64af-08dd7730e94b 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.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN3PEPF0000B06A.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB8092 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 [ 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") Cc: suanmingm@nvidia.com Cc: stable@dpdk.org Signed-off-by: Junfeng Guo --- .mailmap | 2 +- drivers/net/mlx5/mlx5_flow_hw.c | 55 ++++++++++++++++++++------------- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/.mailmap b/.mailmap index 7b2798a31a..20fa4a22ba 100644 --- a/.mailmap +++ b/.mailmap @@ -721,7 +721,7 @@ Julien Hascoet Julien Massonneau Julien Meunier JĂșlius Milan -Junfeng Guo +Junfeng Guo Junjie Chen Junjie Wan Jun Qiu diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index 54f264a03c..c53d407746 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -2138,6 +2138,11 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, uint8_t *push_data = NULL, *push_data_m = NULL; 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; bool reformat_used = false; @@ -2246,7 +2251,7 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, ((const struct rte_flow_action_jump *) 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; acts->rule_acts[dr_pos].action = (!!attr->group) ? @@ -2379,13 +2384,14 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, break; case RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL: flow_hw_translate_group(dev, cfg, attr->group, - &target_grp, error); + &target_grp, &sub_error); 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 : ((attr->egress) ? MLX5DR_TABLE_TYPE_NIC_TX : @@ -2395,14 +2401,14 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, case RTE_FLOW_ACTION_TYPE_MODIFY_FIELD: err = flow_hw_modify_field_compile(dev, attr, actions, masks, acts, &mhdr, - src_pos, error); + src_pos, &sub_error); if (err) goto err; break; case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: 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; case RTE_FLOW_ACTION_TYPE_METER: @@ -2416,7 +2422,8 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, ((const struct rte_flow_action_meter *) 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; } else if (__flow_hw_act_data_general_append(priv, acts, @@ -2427,13 +2434,14 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, break; case RTE_FLOW_ACTION_TYPE_AGE: flow_hw_translate_group(dev, cfg, attr->group, - &target_grp, error); + &target_grp, &sub_error); 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, actions->type, @@ -2443,13 +2451,14 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, break; case RTE_FLOW_ACTION_TYPE_COUNT: flow_hw_translate_group(dev, cfg, attr->group, - &target_grp, error); + &target_grp, &sub_error); 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) || (at->action_flags & MLX5_FLOW_ACTION_INDIRECT_AGE)) @@ -2519,7 +2528,7 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, } if (mhdr.pos != UINT16_MAX) { ret = mlx5_tbl_translate_modify_header(dev, cfg, acts, mp_ctx, - &mhdr, error); + &mhdr, &sub_error); if (ret) goto err; } @@ -2529,7 +2538,7 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, encap_data, encap_data_m, mp_ctx, data_size, reformat_src, - refmt_type, error); + refmt_type, &sub_error); if (ret) goto err; } @@ -2548,6 +2557,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, rte_errno = EINVAL; 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, "fail to create rte table"); -- 2.34.1