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 90E84470E5 for ; Thu, 25 Dec 2025 10:23:08 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8446D40DD6; Thu, 25 Dec 2025 10:22:53 +0100 (CET) Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010029.outbound.protection.outlook.com [52.101.193.29]) by mails.dpdk.org (Postfix) with ESMTP id DEC4B40609 for ; Thu, 25 Dec 2025 10:22:48 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fyZFrWr6Uqtl4nPVnDIDCDIHO1JHrL2j+2KT5rnLjXYl+N1uflYzGDX3amHbLbWAn9e8+ZlZiP1mffgNe8aPm4RD4LnbHEDhyemAgY3GgGcZwgh1cBmXlghNAo2NckZz9M9i+ezv35HYZinQ5IyhFFnbALI+4PRmtV0PXJJPNcs271Fb9/GEqbFKo6Ii7bkfYwieRIzafTbOvP0NIDESGLfursTgJUcSt3fCV2MZUzxJkLqZJv+gesF0JVS4MZn2ZtG7gZcy8kNtguxRPpuvuNvZUCiwWIcUibpCjVISHP9XCAvTSO4ZXB4W+AqRPBiJJWNLJ6ygwmYCzPlN6cjcKw== 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=5/UVwW1wKOSMKl6VvPDbz01QJJ0xHUbRPFjic2GWdfg=; b=Psv2W1qTbWdvdfHfyYcYV3lzBa8JKBILVYg8/F0SlnwqnL1dI0cXqPQCZ523DTqeCnYjvBizPrA4BEt1m/TsTmGUY2EwgMDE01ah0sV5XGRhaYyrH4JE/QT5/8MYJCRki5XFCZMkYeMj2wo37oooDD9cTQfKQV25+fdiI1KGlWIfjNATn82G7nHtdxpxFmGb4zgSv2BT8fV3NRp8SjqhqPl/jlFk1/Ceglr5NYPqmcWbGIXV9VVppFc6n+oebwqL7z0ZGE3coaSWrGrNzcKJWWcqZ0LjojiYCIVLRYL4jz5X+3uQxkKwE3QrsYgAfLQBTPkIiFvClP9S1qWHyMojog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=trustnetic.com 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=5/UVwW1wKOSMKl6VvPDbz01QJJ0xHUbRPFjic2GWdfg=; b=j6TlOgWsCa6yk6jtCrBpDXZ8PDrtvrSWxFlEopmU4M+OXA/hM6bPURg9/DV2doNM35kpgr3poAh0o7jTFr+H+5dRuGkJw0KSiVjzEZHNWnTf+q4OWsYL6bpKKUZQ3WdJOzB0azKEj29cIPW7JCy1mZb2vYiyKZMltvKqX11s8nClpcLi4WcEmhdKsutOiXfKH6geKWip7qL7WniRv39XqlRGdsJtu6nJ3jEW1lw/Js65r4r/ELJRkqD1dvDPyVynueKKUbKzEaSMwmgxjMbKWdYg4E5EpV48qlubvDG/VCAURLxAv0CnfTGmZ3gHPzvL67Ti+Zq9R3tnTzHHy3SSuA== Received: from SA9PR13CA0103.namprd13.prod.outlook.com (2603:10b6:806:24::18) by CH1PR12MB9598.namprd12.prod.outlook.com (2603:10b6:610:2ae::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.11; Thu, 25 Dec 2025 09:22:44 +0000 Received: from SN1PEPF0002636B.namprd02.prod.outlook.com (2603:10b6:806:24:cafe::58) by SA9PR13CA0103.outlook.office365.com (2603:10b6:806:24::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9478.2 via Frontend Transport; Thu, 25 Dec 2025 09:22:44 +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 SN1PEPF0002636B.mail.protection.outlook.com (10.167.241.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9456.9 via Frontend Transport; Thu, 25 Dec 2025 09:22:43 +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; Thu, 25 Dec 2025 01:22:32 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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; Thu, 25 Dec 2025 01:22:31 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Thu, 25 Dec 2025 01:22:30 -0800 From: Shani Peretz To: Jiawen Wu CC: dpdk stable Subject: patch 'net/txgbe: switch to FDIR when ntuple filter is full' has been queued to stable release 23.11.6 Date: Thu, 25 Dec 2025 11:18:02 +0200 Message-ID: <20251225091938.345892-41-shperetz@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251225091938.345892-1-shperetz@nvidia.com> References: <20251221145746.763179-93-shperetz@nvidia.com> <20251225091938.345892-1-shperetz@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002636B:EE_|CH1PR12MB9598:EE_ X-MS-Office365-Filtering-Correlation-Id: 336fd15f-0390-4d14-b838-08de439728fe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|1800799024|376014|13003099007|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Ij72FvmXITJPJfpQ2laoJ7UDAAJ47jDAxv/OWyyanN5QiTNU+bHSkKK/f6pS?= =?us-ascii?Q?FzJrwl4u3pDLzvb5dmqlwjG5BhwgwULN71CSYwMdVbSvAJfxkWbUkOtMfpXG?= =?us-ascii?Q?xGIaiEp0h+m17WAScD7Ka6zGHcaO66fI0OL3g/KgmWwzURn/73hCbVwqc24c?= =?us-ascii?Q?0t5/XX1sBdxU53VXNqpduCsR0uZJ0zfRrrItcrEr7+MF3fivfBuEr8DGGq2+?= =?us-ascii?Q?A2yPuTO7ohYo7RUF5qY4zQcs0AGWO4RGlmfLabsIWTQsXR8Uv8Ny17Mk0NUj?= =?us-ascii?Q?OZhzFz1elwJC0YtKg24clV3VTa8ZKwJ1l4C16gs20PNVlytAv6oQNGeul1Ih?= =?us-ascii?Q?O/ysUrQSE3gUnj5WRA0bIg/jUdme1U/6/Jgff7tVqUAwm1jQ8UKdbMCmuFO/?= =?us-ascii?Q?G/RpUo06oHgm5jNcd40QdQYrKwaM4u3o0al122JtO6Dpo8ufkiNEUW2G86Ya?= =?us-ascii?Q?MY+4HX6tBgjRK+J3SGK91M7VijofSWgucgVksR+pFOgINPAUCuZcQP/G7eUm?= =?us-ascii?Q?Uk5oIa8Q2zg0Q3UEPNXKMNJndzALiN5lTi5sgpK6SfZoAipHyzQp7qGAPkin?= =?us-ascii?Q?IyxM8mHyFxPNFz9BcmkCstWMQBnvOGuOmn2VZ6yaoQmIUPXjOFK397qq+3Kr?= =?us-ascii?Q?0969nDbqmHl77NnLo1grzunGKT34U98wHckoBs/Ep+ZJl5KmXGITKFEJHYnR?= =?us-ascii?Q?hJMfZefSbKWbintFozwUpDTjlWFT5UfoNqbILp2xSj2scpHic2SwGMsZavsa?= =?us-ascii?Q?aguMehu4LTo/IVLI6dF9DdxACuiJGoApIpftYbLfn2G+X3luY2NshuPzuOJ3?= =?us-ascii?Q?wo2EfcWlBggBBuWTDDVlM0vehKhct2sBl+GoBZUTm2+j7MPdgLJHvH4ii0LI?= =?us-ascii?Q?+aqotnPeEb77UfIzNTr2QOUOz5JMdwlwNc7nWMvVDxRXYnm7hB+oo3X65gx7?= =?us-ascii?Q?46tHTF23IvXhz+eHMfip+csckhWpfgF8zFkZAW0UXcu7bWFGrPh/XdZQp78y?= =?us-ascii?Q?x1qCdOJFm1y4hGR/Xf6voB1eYAs7SUegcAmWMlARHRAMfMalKoIZsQeuNvxo?= =?us-ascii?Q?6J1l6rAqzdh0vKbFp4cVM6ckFvHChCgwrJTK+5IDgQ6q9tq07SA8r569TzlY?= =?us-ascii?Q?9/4k5wWIr9OTuyw20T3xKC3LCkjHym7YzXaiaHKbKhEnO739Mp93vPvkoBy7?= =?us-ascii?Q?GmbtUS3Gmm3RNyTCTWcCBZkaZV9fZJcdtuvBbD5lAr1iq2pXIzJ3oUTfVGy2?= =?us-ascii?Q?GLcRXG/3jTgw8wXEB/Q+2MvHF3I1T98WTqIuzcFQjHf6yPq/he20Gx4eqUKO?= =?us-ascii?Q?VDzjnst+rfr3Tgm3BSoSH42sOE9Ql9AN/UoCDGvJvXpre/aZO6yJN68Dynni?= =?us-ascii?Q?fJbbvf5C5d66tilVmHlHZqgTx2yh3RKEZNpgcMDEMHu5RJz7NEc+Ty/pVQgg?= =?us-ascii?Q?yXASR4rWO4itcdozuQWpXzEUC/6eL3KACzfibhxdFdN+ZuJ94VwXqkAXhMCe?= =?us-ascii?Q?YBrjUjkeePw7v87M7ywFr+OOl2wtUrm5fjHWGGl1JXQUJTbVVXHDPnA4UZJf?= =?us-ascii?Q?6aQTpYs9SvVfyAqrIxUESbfj0ZVTZewP4Sh4ABbd?= 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)(36860700013)(82310400026)(1800799024)(376014)(13003099007)(7053199007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Dec 2025 09:22:43.8601 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 336fd15f-0390-4d14-b838-08de439728fe 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: SN1PEPF0002636B.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PR12MB9598 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 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/f2dd11d1144493f5825144e94515b0bd13a4deb1 Thanks. Shani --- >From f2dd11d1144493f5825144e94515b0bd13a4deb1 Mon Sep 17 00:00:00 2001 From: Jiawen Wu Date: Mon, 27 Oct 2025 11:15:39 +0800 Subject: [PATCH] net/txgbe: switch to FDIR when ntuple filter is full [ upstream commit ccac5e093041f255f38a59ea472c6dee493ccc7c ] Using ntuple filter has less performance loss on the hardware compared to FDIR filter. So when the flow rule both match ntuple filter and FDIR filter, ntuple filter will be created first. But there are only maximum 128 flow rules can be created on ntuple filter, it is far less than the requirements of many users. So switch to use FDIR when ntuple filters are full. Fixes: 77a72b4d9dc0 ("net/txgbe: support ntuple filter add and delete") Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 5 ++++- drivers/net/txgbe/txgbe_ethdev.h | 1 + drivers/net/txgbe/txgbe_flow.c | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 01d9fdfb82..b20897cc9f 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -852,6 +852,7 @@ static int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev) } memset(filter_info->fivetuple_mask, 0, sizeof(uint32_t) * TXGBE_5TUPLE_ARRAY_SIZE); + filter_info->ntuple_is_full = false; return 0; } @@ -4165,7 +4166,8 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev, } } if (i >= TXGBE_MAX_FTQF_FILTERS) { - PMD_DRV_LOG(ERR, "5tuple filters are full."); + PMD_DRV_LOG(INFO, "5tuple filters are full, switch to FDIR"); + filter_info->ntuple_is_full = true; return -ENOSYS; } @@ -4193,6 +4195,7 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev, ~(1 << (index % (sizeof(uint32_t) * NBBY))); TAILQ_REMOVE(&filter_info->fivetuple_list, filter, entries); rte_free(filter); + filter_info->ntuple_is_full = false; wr32(hw, TXGBE_5TFDADDR(index), 0); wr32(hw, TXGBE_5TFSADDR(index), 0); diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h index 34280a146b..56c2b263b4 100644 --- a/drivers/net/txgbe/txgbe_ethdev.h +++ b/drivers/net/txgbe/txgbe_ethdev.h @@ -243,6 +243,7 @@ struct txgbe_filter_info { /* Bit mask for every used 5tuple filter */ uint32_t fivetuple_mask[TXGBE_5TUPLE_ARRAY_SIZE]; struct txgbe_5tuple_filter_list fivetuple_list; + bool ntuple_is_full; /* store the SYN filter info */ uint32_t syn_info; /* store the rss filter info */ diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c index 50e4fe76af..160439863a 100644 --- a/drivers/net/txgbe/txgbe_flow.c +++ b/drivers/net/txgbe/txgbe_flow.c @@ -580,8 +580,12 @@ txgbe_parse_ntuple_filter(struct rte_eth_dev *dev, struct rte_eth_ntuple_filter *filter, struct rte_flow_error *error) { + struct txgbe_filter_info *filter_info = TXGBE_DEV_FILTER(dev); int ret; + if (filter_info->ntuple_is_full) + return -ENOSYS; + ret = cons_parse_ntuple_filter(attr, pattern, actions, filter, error); if (ret) @@ -2734,6 +2738,7 @@ txgbe_flow_create(struct rte_eth_dev *dev, struct txgbe_fdir_rule_ele *fdir_rule_ptr; struct txgbe_rss_conf_ele *rss_filter_ptr; struct txgbe_flow_mem *txgbe_flow_mem_ptr; + struct txgbe_filter_info *filter_info = TXGBE_DEV_FILTER(dev); uint8_t first_mask = FALSE; flow = rte_zmalloc("txgbe_rte_flow", sizeof(struct rte_flow), 0); @@ -2779,10 +2784,13 @@ txgbe_flow_create(struct rte_eth_dev *dev, flow->rule = ntuple_filter_ptr; flow->filter_type = RTE_ETH_FILTER_NTUPLE; return flow; + } else if (filter_info->ntuple_is_full) { + goto next; } goto out; } +next: memset(ðertype_filter, 0, sizeof(struct rte_eth_ethertype_filter)); ret = txgbe_parse_ethertype_filter(dev, attr, pattern, actions, ðertype_filter, error); -- 2.43.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-12-25 11:16:38.359431028 +0200 +++ 0041-net-txgbe-switch-to-FDIR-when-ntuple-filter-is-full.patch 2025-12-25 11:16:35.642920000 +0200 @@ -1 +1 @@ -From ccac5e093041f255f38a59ea472c6dee493ccc7c Mon Sep 17 00:00:00 2001 +From f2dd11d1144493f5825144e94515b0bd13a4deb1 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit ccac5e093041f255f38a59ea472c6dee493ccc7c ] + @@ -14 +15,0 @@ -Cc: stable@dpdk.org @@ -24 +25 @@ -index f650c5b7a4..21f0711762 100644 +index 01d9fdfb82..b20897cc9f 100644 @@ -27 +28 @@ -@@ -893,6 +893,7 @@ int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev) +@@ -852,6 +852,7 @@ static int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev) @@ -35 +36 @@ -@@ -4495,7 +4496,8 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev, +@@ -4165,7 +4166,8 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev, @@ -45 +46 @@ -@@ -4526,6 +4528,7 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev, +@@ -4193,6 +4195,7 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev, @@ -51,2 +52,2 @@ - if (!txgbe_is_pf(TXGBE_DEV_HW(dev))) { - txgbevf_remove_5tuple_filter(dev, index); + wr32(hw, TXGBE_5TFDADDR(index), 0); + wr32(hw, TXGBE_5TFSADDR(index), 0); @@ -54 +55 @@ -index 053aa1645f..1e7cc5ea80 100644 +index 34280a146b..56c2b263b4 100644 @@ -57 +58 @@ -@@ -245,6 +245,7 @@ struct txgbe_filter_info { +@@ -243,6 +243,7 @@ struct txgbe_filter_info { @@ -66 +67 @@ -index d3113b6fc8..cd05ceffed 100644 +index 50e4fe76af..160439863a 100644 @@ -82 +83 @@ -@@ -3200,6 +3204,7 @@ txgbe_flow_create(struct rte_eth_dev *dev, +@@ -2734,6 +2738,7 @@ txgbe_flow_create(struct rte_eth_dev *dev, @@ -90 +91 @@ -@@ -3245,6 +3250,8 @@ txgbe_flow_create(struct rte_eth_dev *dev, +@@ -2779,10 +2784,13 @@ txgbe_flow_create(struct rte_eth_dev *dev, @@ -97,3 +97,0 @@ - goto out; - } -@@ -3254,6 +3261,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,