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 0F62C48AED for ; Wed, 12 Nov 2025 12:45:30 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D9BF740281; Wed, 12 Nov 2025 12:45:29 +0100 (CET) Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010054.outbound.protection.outlook.com [52.101.61.54]) by mails.dpdk.org (Postfix) with ESMTP id 4A07D40281 for ; Wed, 12 Nov 2025 12:45:28 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fCSwvWbGHF+Mp2fkYOFAmg9AZe0kz+wtHZJwUZj1fJZoMW6bOCElpwQtA3Jxh4f//KK5CrSeowZdRseMV3oV2IVLdiraC2UG/pUk0W4IXopxOrJRAwneNNcqTG8s24trsQVGzbjj35irZPztfy5a3E3m7kRk5XRwnI1iwhIMm+LtFWwrGuyFnUyd6lQGpITuSRObFoCCurQLBDAUit/ZHPq53i/CdLR87LXf/xohaLfA/VIGabBDAc7zHSHRph4ZH8iYrT6yGNiDX1CjPiQqGzmpF6t8k+oAbIgpfhDA/Pt8ksTFpL16MxA74n/RDHs1cXz1Ln8PLptJLfRgkSOhtw== 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=3jZ0EDFEwIEMr3ixgifw8xjro0lFGxFavfCdAKRWFLg=; b=RBxkVDsuAsfNdk5MCtblKWv9EBWE8YJIEYr4XAFaS0W+I9By1khCkSLAhlFe+e3hYdVoa04SMPMiii+XfviANRp6m9B5E/hMSKEQEnXJ0hYM5zS+NLU5h2+RcySoIrKWG4qyHKt7FIfSnIs2yP0ZEkoSGUfD/JDQW4X8f6PJ3LLU0B8cTa0NtZvQ0PaEVdYl0201GcQmuWztWBFkzNn/g9hMcGHlzzp8EnjGU0Ugew2ZCXP3KG9F8dIlZzJqmB0swoK9QUmOsKpWvE2crhsJbQ7aibC97N2hK2UGUKcoz7LUbPiPr9ky8HZBwSWgR6YTz5/AsOe2h7AqrS4jMhE1lw== 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=3jZ0EDFEwIEMr3ixgifw8xjro0lFGxFavfCdAKRWFLg=; b=aS4zqcy8v2mESGmMhtQTGiyqBWQeh5VE7M8S4fuhCnxwd9xTm66gMIiVnFbaRe2z/uc2WAcZfcIOWqD/tiwUxksLSvZRIBixGX0oRDzxylp5Y8txFrTrCX4REq3BY9StDLPgGgNUcYejIOGaBSZhF5EPykWg6x7QnscdBG6o5i67hMRlgVSSLhr4u6NCJLMncyprVbCDfsOMxC2QyugFNE3MR+54UOGGldVuFXOoZ5iAGFrbTu3mdd3UR/CB7DjnIGqcBpNc7d1lUuq43zMY0UiEIHUoNDzbLDkLAG8Ac6VaSfQckkM+Z8GFfnzVrYFuE8UTagu0ITyC81kgH7ibEA== Received: from CH5P220CA0015.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:1ef::9) by SJ1PR12MB6217.namprd12.prod.outlook.com (2603:10b6:a03:458::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.15; Wed, 12 Nov 2025 11:45:24 +0000 Received: from DS2PEPF0000343D.namprd02.prod.outlook.com (2603:10b6:610:1ef:cafe::79) by CH5P220CA0015.outlook.office365.com (2603:10b6:610:1ef::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9320.16 via Frontend Transport; Wed, 12 Nov 2025 11:45:22 +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 DS2PEPF0000343D.mail.protection.outlook.com (10.167.18.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.13 via Frontend Transport; Wed, 12 Nov 2025 11:45:23 +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.2562.20; Wed, 12 Nov 2025 03:45:06 -0800 Received: from nvidia.com (10.126.231.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.2562.20; Wed, 12 Nov 2025 03:45:04 -0800 From: Viacheslav Ovsiienko To: CC: , , , "Matan Azrad" Subject: [PATCH 22.11] net/mlx5: fix ESP header match after UDP for group 0 Date: Wed, 12 Nov 2025 13:44:49 +0200 Message-ID: <20251112114449.1041889-1-viacheslavo@nvidia.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PEPF0000343D:EE_|SJ1PR12MB6217:EE_ X-MS-Office365-Filtering-Correlation-Id: a50a16dd-0e93-4a8b-1e55-08de21e0f70a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|376014|36860700013|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?X/zhyvqjJa67mHf1L2rSo6WInzkbttxVMmkumBImISPv/7FmILxk4fQ/FiqH?= =?us-ascii?Q?uRpdgZFN8jqzH5vvjyCznCRUy6AAgYpTT7bCTlRjROxydgqN6v6NYusWVD8b?= =?us-ascii?Q?Yxv0LwGZMAAmXdp2KRIEv9tfDAU0gW8G4BAZ9/lpRp+7kTjvtPFCLHJhUKnd?= =?us-ascii?Q?xhN9JfTUIm3mGoeJFoKVlprXZ26bM42YTqtxTUADayt6cD+9/LxDCdu2ijxh?= =?us-ascii?Q?r7L+vwZU+Ecp02goHj9UYixi2YwXKkVtZb0Jv+CjonlZyGExvrCsnaFz0x1m?= =?us-ascii?Q?MZ9RNX+t9je73ObQlnpT3k15J3dKBU5eb9OzDy4ARNXht69iAgY8UGPf1RNJ?= =?us-ascii?Q?1S42KB552Lwg6VX3/+5JBJUg+EUFD6MILy1EHNl2vjg1THCxYdqV/5gAveL5?= =?us-ascii?Q?OjIcDpOFzqnfFo5tKHX4HeGSaGz702Hbug2/yoLUWLtz0An7rH37HjXcQI+c?= =?us-ascii?Q?tach0p1ZwpI5ViugR/m0dIll4HI3TArjVCwgWuIBmUhY6ox+W3YcRiH8E7dn?= =?us-ascii?Q?bfqNQEUy+hvP1mJGhj8PDyBbdrlP1blfvYRjzfo+rZxGTrMwrL4ZssIyOf7I?= =?us-ascii?Q?8ScIsWKGDgF22VHAvYHDwVMifXZvVoFI0q4yjBHx1HI/7cRPYYoYf/IspORx?= =?us-ascii?Q?gNmAPvO4/Uwg2ejYJvRdrDMlH6nIfYyZ1zPuHnsud1amT+4HmOsD/imhD6AK?= =?us-ascii?Q?7w4Gq7CfxXMGZnPNQ5WYXu8LN0hlDA2ryY2kwP+ty/hHDQ6H1IwSFXvJCy3j?= =?us-ascii?Q?pXcMicdTzrLtUGynbLzxJsRow3E3d9DsmyFWDLrxY656gw8DwS9t7clbzsFa?= =?us-ascii?Q?92l4PTjloh4CU/6C9gqPrffuQKzK6Tn+dralDu2YsvhMVC/9vEViGeOWh4YZ?= =?us-ascii?Q?VARsQNSMYLKUsbBnd55vpOCIX6cSD9YvwmA2kqBlNjV6KOWbXPncvG5X/1Fx?= =?us-ascii?Q?ZKyiznrZh4x0O3tInpQuOo6QwyFy9ts03AT5k80dopPvZDDiNNV4FJjttE8q?= =?us-ascii?Q?9Yoz29DNobD0XBD5LHgT5B0mBwqcSTbHAVUE4D2URqNx3CV2Kd90b7M4M5L+?= =?us-ascii?Q?WPqZIeNx8rgT3uvCMtjq/wWrr+ZrdVxhh0+r+OStwvEr/JB+VThQ4hHXkB+N?= =?us-ascii?Q?KSawfKCUSqsYncLys0NHbccRaO0za0CdHhIQdiYhWjtmoG7kGL7go5DHACyR?= =?us-ascii?Q?mefrc10ko9FPOqFwlKkqqPZg7m+wKMmWYBFILQVlxtf8yRqDDkgWu+55/5R2?= =?us-ascii?Q?Y4bOF1jTMRU+BfnkXKnWSCc9xMlZDItzE4jOeoiocU9V4BfAL4S7HzMMc7NW?= =?us-ascii?Q?9cVVFLeep5BBpDS78ctyTj7vlxZnIxddMLJi6K93ErdBG6vkU3DF5gowpZoW?= =?us-ascii?Q?zMAZOv6mbMNxm01YGiggzOMibjLKTrqSP4ec721Zfkl3EkQOXEMMWXmZ6STN?= =?us-ascii?Q?Pd7xvfdc7tEGrLaDL3+qGB1iYrX3mBGFdriQGX4+LyLm44KD/aEN0FzORfFR?= =?us-ascii?Q?jwnrsoQ9+RtdH9tsVeUpWbIpL9gr2cQ2wq0EHzDEkyFWud9fRUGgAQJ1xJ0A?= =?us-ascii?Q?JrdiFZYxowfa9DYYL8o=3D?= 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)(1800799024)(82310400026)(376014)(36860700013)(7053199007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2025 11:45:23.2741 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a50a16dd-0e93-4a8b-1e55-08de21e0f70a 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: DS2PEPF0000343D.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6217 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 ed8eb60c9b2c243b4098f59dc6d9a87ee0bbd4c8 ] The ESP item translation routine always forced the match on IP next protocol to be 50 (ESP). This prevented on matching ESP packets over UDP. The patch checks if UDP header is expected, and also forces match on UDP destination port 4500 if it is not set by the caller yet. Fixes: 18ca4a4ec73a ("net/mlx5: support ESP SPI match and RSS hash") Cc: stable@dpdk.org Signed-off-by: Viacheslav Ovsiienko Acked-by: Matan Azrad --- drivers/net/mlx5/linux/mlx5_flow_os.c | 6 ----- drivers/net/mlx5/mlx5_flow.h | 3 +++ drivers/net/mlx5/mlx5_flow_dv.c | 34 ++++++++++++++++----------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/drivers/net/mlx5/linux/mlx5_flow_os.c b/drivers/net/mlx5/linux/mlx5_flow_os.c index 2767b11708..2851b05f6a 100644 --- a/drivers/net/mlx5/linux/mlx5_flow_os.c +++ b/drivers/net/mlx5/linux/mlx5_flow_os.c @@ -23,18 +23,12 @@ mlx5_flow_os_validate_item_esp(const struct rte_flow_item *item, const int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL); const uint64_t l3m = tunnel ? MLX5_FLOW_LAYER_INNER_L3 : MLX5_FLOW_LAYER_OUTER_L3; - const uint64_t l4m = tunnel ? MLX5_FLOW_LAYER_INNER_L4 : - MLX5_FLOW_LAYER_OUTER_L4; int ret; if (!(item_flags & l3m)) return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "L3 is mandatory to filter on L4"); - if (item_flags & l4m) - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "multiple L4 layers not supported"); if (target_protocol != 0xff && target_protocol != IPPROTO_ESP) return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index 3a23954697..fc0b569505 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -367,6 +367,9 @@ enum mlx5_feature_name { /* UDP port numbers for GENEVE. */ #define MLX5_UDP_PORT_GENEVE 6081 +/* UDP port numbers for ESP. */ +#define MLX5_UDP_PORT_ESP 4500 + /* Lowest priority indicator. */ #define MLX5_FLOW_LOWEST_PRIO_INDICATOR ((uint32_t)-1) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index d7e886fa4f..f036b14a7b 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -8980,29 +8980,35 @@ flow_dv_translate_item_tcp(void *key, const struct rte_flow_item *item, */ static void flow_dv_translate_item_esp(void *key, const struct rte_flow_item *item, - int inner, uint32_t key_type) + int inner, uint32_t key_type, uint64_t item_flags) { const struct rte_flow_item_esp *esp_m; const struct rte_flow_item_esp *esp_v; void *headers_v; char *spi_v; + bool over_udp = item_flags & (inner ? MLX5_FLOW_LAYER_INNER_L4_UDP : + MLX5_FLOW_LAYER_OUTER_L4_UDP); headers_v = inner ? MLX5_ADDR_OF(fte_match_param, key, inner_headers) : - MLX5_ADDR_OF(fte_match_param, key, outer_headers); - if (key_type & MLX5_SET_MATCHER_M) - MLX5_SET(fte_match_set_lyr_2_4, headers_v, - ip_protocol, 0xff); - else - MLX5_SET(fte_match_set_lyr_2_4, headers_v, - ip_protocol, IPPROTO_ESP); + MLX5_ADDR_OF(fte_match_param, key, outer_headers); + if (key_type & MLX5_SET_MATCHER_M) { + MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol, 0xff); + if (over_udp && !MLX5_GET16(fte_match_set_lyr_2_4, headers_v, udp_dport)) + MLX5_SET(fte_match_set_lyr_2_4, headers_v, udp_dport, 0xFFFF); + } else { + if (!over_udp) + MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol, IPPROTO_ESP); + else + if (!MLX5_GET16(fte_match_set_lyr_2_4, headers_v, udp_dport)) + MLX5_SET(fte_match_set_lyr_2_4, headers_v, udp_dport, + MLX5_UDP_PORT_ESP); + } if (MLX5_ITEM_VALID(item, key_type)) return; - MLX5_ITEM_UPDATE(item, key_type, esp_v, esp_m, - &rte_flow_item_esp_mask); + MLX5_ITEM_UPDATE(item, key_type, esp_v, esp_m, &rte_flow_item_esp_mask); headers_v = MLX5_ADDR_OF(fte_match_param, key, misc_parameters); - spi_v = inner ? MLX5_ADDR_OF(fte_match_set_misc, headers_v, - inner_esp_spi) : MLX5_ADDR_OF(fte_match_set_misc - , headers_v, outer_esp_spi); + spi_v = inner ? MLX5_ADDR_OF(fte_match_set_misc, headers_v, inner_esp_spi) : + MLX5_ADDR_OF(fte_match_set_misc, headers_v, outer_esp_spi); *(uint32_t *)spi_v = esp_m->hdr.spi & esp_v->hdr.spi; } @@ -13260,7 +13266,7 @@ flow_dv_translate_items(struct rte_eth_dev *dev, switch (item_type) { case RTE_FLOW_ITEM_TYPE_ESP: - flow_dv_translate_item_esp(key, items, tunnel, key_type); + flow_dv_translate_item_esp(key, items, tunnel, key_type, wks->item_flags); wks->priority = MLX5_PRIORITY_MAP_L4; last_item = MLX5_FLOW_ITEM_ESP; break; -- 2.34.1