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 2AE98454E5; Wed, 26 Jun 2024 20:15:31 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8131D40659; Wed, 26 Jun 2024 20:15:19 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2056.outbound.protection.outlook.com [40.107.236.56]) by mails.dpdk.org (Postfix) with ESMTP id DCDF040615 for ; Wed, 26 Jun 2024 20:15:15 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ajAP1al5XTWNcQjRbGWiFmMznSbiiN8rD7te5ciVfPKBoj6bF7oP0jSbZDhxXIuCZ1bXWQ+0sH0N+TMQ+d5UeafTxZs2dntZxYWOJYT5XznRBFcytUjSEmuX0LMRUQ5hXxxIuzoCO0w4AG5bKdERtcXcKMxmYAyCytGGhlEHcwX2XBDaCpBPWdqQqu5VuFrKvl2d0I+CgBd3kvQvn9wlrOTRnEV+qKBX63P4K0F2vQRr4K6KyKtSf6d9aanlResc+JKjo7y1gctKl2bdCVCuL9+lt6bZU51mVfVAf9O4jyKCRXh+OT/sip/7G8jthmAXiqlbU9JA055G5J2ZSbFO8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=78RbpBCRjKVfcSqrT88teXGjkjrZqWR7P3beGG3wDiQ=; b=WlbNlsjJR6NIQB4z9eWsFXeU9FaGYynPFngkLx0NbEzqgtnvzS3v/z1JUJokfU5K1Qt5BbZyr4K91H5vun84lglvKJEJy8jq33JX8eMi/YNq/+FNqJfvgkp0MopGEDr8BQiFqAh+nqc91NomDOPopuSYkedOogGKgX4DBUOsHXfxNaf6qXWrvqZxB8ARXyvFCN6a7fqoNwHYd5fxThyz8Vf7VSzkfRzrRNlYN8/gzljgek34c1Zp/hMEJ1lMwhsjxJGSOW7+hGScisa05hkUGOD0auBNcKEN1+VS9K+abi34l+7yJIBiAxcVxeC5o2+CF8bTgjHiAHQUABDSNoFFDg== 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=78RbpBCRjKVfcSqrT88teXGjkjrZqWR7P3beGG3wDiQ=; b=k3+R3491mVrVaY763II22FiVUKQu0WZGv/U3RSg/L7uXHFItsoBCZZySiXyj4uuYe+5T2L0T0siBySYMhet3oCMCUt06jjvJuStMAyOaLTOAZnEksVnvCxgR/BAdDBvTdPqPgO5VW4vvUCHJELbrxFmV7b44ibNKPVUXadiIuYJRZ0WjNQcv5jsBu3wxM6NZWn67QWmQ6bKVHxB/uN9eMBfsrGdZJzodzkQUlwSW7cwIhSsOR9Qa+4K/lEJurymbjxVASSgjKTG8aEkfhAKVARrhXEwO7SZ4DApS/uwDnb2hHcLedrDRgr9QMPO29Hbxi0sr4uE5doj0x9R/kGF2Fw== Received: from MW4PR03CA0235.namprd03.prod.outlook.com (2603:10b6:303:b9::30) by BL1PR12MB5705.namprd12.prod.outlook.com (2603:10b6:208:384::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.28; Wed, 26 Jun 2024 18:15:11 +0000 Received: from SJ5PEPF000001C8.namprd05.prod.outlook.com (2603:10b6:303:b9:cafe::41) by MW4PR03CA0235.outlook.office365.com (2603:10b6:303:b9::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.23 via Frontend Transport; Wed, 26 Jun 2024 18:15:11 +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 SJ5PEPF000001C8.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.15 via Frontend Transport; Wed, 26 Jun 2024 18:15:10 +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; Wed, 26 Jun 2024 11:14:54 -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.4; Wed, 26 Jun 2024 11:14:52 -0700 From: Dariusz Sosnowski To: Viacheslav Ovsiienko , Bing Zhao , Ori Kam , Suanming Mou , Matan Azrad CC: Subject: [PATCH v3 3/8] net/mlx5: store pattern template items Date: Wed, 26 Jun 2024 20:14:23 +0200 Message-ID: <20240626181428.1678402-4-dsosnowski@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240626181428.1678402-1-dsosnowski@nvidia.com> References: <20240612162426.978117-1-dsosnowski@nvidia.com> <20240626181428.1678402-1-dsosnowski@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.230.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: SJ5PEPF000001C8:EE_|BL1PR12MB5705:EE_ X-MS-Office365-Filtering-Correlation-Id: a373b196-0836-4ddd-c57b-08dc960beaf1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230038|1800799022|82310400024|36860700011|376012; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qBbqykKUrNB3BPNmHctHzMVImqg+YLbZJ3jtnXm1f/3TpT9G1d60aBpdNmVo?= =?us-ascii?Q?Zyroq2EcM0UBpJ/KBupmc3e9faXu4Un7k23ta6zpxpZ8GfONXVetpmk4s7cr?= =?us-ascii?Q?UGsG9FDdIUM+EKKzHXrBH32d+o6UvCwDaajYCHVlxolwj4sMV47Nnh+TWISV?= =?us-ascii?Q?KVqhSkWJwDXx7ay9jNP6VhUlkb2Ug+CCvnl92GV8RpWDpZGlTXqKXL7k1nMi?= =?us-ascii?Q?eOdseuG7cfJAgntGNfbEl2VZhX3Y9n97LbF809boHBo1koa3KP2UTv3rA9Ys?= =?us-ascii?Q?AoIK4Yh0oztcurDOWGOSXJVQZn9WsRyiEcH0NLwr9RtKzSrI/J2fXs69m2L+?= =?us-ascii?Q?omUpE8/MIbSEwGte9b0t5Lh0oVhIi81qpP2BTzDoAHUi1rl63hMTGEBaCBr0?= =?us-ascii?Q?rjUhYRzltfHnoEfMi19M/+MZRy+jBfjTgWTfdkWTqcXg5V7mlozt3k9tS5kb?= =?us-ascii?Q?A6Dt+ZuEjmvbN+etmz8VqWebiokbZsr9jB0LliTUOG06gCOCB8IdJ7udCGtr?= =?us-ascii?Q?CDo+gSI0PVu7Iswh0F/WSY2pM3OlPBLw38jEbemiK5XjXnmlCxLST6g/8khz?= =?us-ascii?Q?rzs9hDxCjb5iX5HAn+fw9AUvnRr/zGE8BUK1NXkF/rC59behCJ9BGYk+pzYx?= =?us-ascii?Q?mBwZPVmO9XVoLwvF4WS46dmtBAKKvBFXjZLKG8Xgshn2kKKcDsBgGBkq6L7s?= =?us-ascii?Q?xqIYPmNsXe4rymerCDnReEhwEc9e2shXD5vvDjD3lP4usqsqasrAMUzU0/hZ?= =?us-ascii?Q?zUQne8B1koE+nsalL4Cbne/NuNQEYeWmo0WA0NK1a2jYxyBpUjsNmAFXwdRZ?= =?us-ascii?Q?eOeUmCPcJsGmdMB+aIsXJZUcIEhOD+y0cklFzeW9M1MCwBPbjbe+6w1g8gr+?= =?us-ascii?Q?YtRRNRFGj//cw02YywASesw8C9BXRWTtg2KfPCWQ+E6fNkAqbJgCALa9I6vG?= =?us-ascii?Q?HRw1TtjhhSz94Li1/YJhTywvgoBIVU0AA8Nmphc2BsDuIsDc2q38z6DxWO0r?= =?us-ascii?Q?/y3BeYBzGCXgCjQBdu63wfMqv1CjGMeIx7vTaMhkLzkkmUQ70nYa/ZFiTcDa?= =?us-ascii?Q?atXhbQaT/cTrBonEaUBM/L1FuyoykKaEOFUFRLUpxF925xz2NQL9x2Sb6Ti3?= =?us-ascii?Q?Y0VGQXUCTqTwK8X4vYjwYPnay8+6o5LDXyk7zW5uhW1RQLDaQ9UPzjseehjr?= =?us-ascii?Q?//JM1FoXZm2tn/rp7pfMd7Q/iJefcRMj5jIuUX937ftSr2OgpZYLsT7+NQH6?= =?us-ascii?Q?vfz+v2Qs9B6HeIbM9Qt83rliGXCHbbKUTZ0UoUS2FPmywMqN2ES0AMh0pevg?= =?us-ascii?Q?552T6aD/yky4SogGWlp+jmnWe97xPlgCOeqMNw8tMx4vXMTXjyJjwB5kQSXy?= =?us-ascii?Q?j20gVDoJhHjZzHRM09+Dw4BlXX6JE87euCG0glKl9FiDNUxwVA=3D=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:(13230038)(1800799022)(82310400024)(36860700011)(376012); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jun 2024 18:15:10.9975 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a373b196-0836-4ddd-c57b-08dc960beaf1 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: SJ5PEPF000001C8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5705 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Store items which define the pattern template on creation. This allows validation of items, provided by the user during flow rule creation, against pattern template. Signed-off-by: Dariusz Sosnowski Acked-by: Ori Kam --- drivers/net/mlx5/mlx5_flow.h | 2 ++ drivers/net/mlx5/mlx5_flow_hw.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index da7d06d033..5c2cc2b7c1 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -1522,6 +1522,8 @@ struct rte_flow_pattern_template { /* Manages all GENEVE TLV options used by this pattern template. */ struct mlx5_geneve_tlv_options_mng geneve_opt_mng; uint8_t flex_item; /* flex item index. */ + /* Items on which this pattern template is based on. */ + struct rte_flow_item *items; }; /* Flow action template struct. */ diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index c0d763198d..1ad261d529 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -8772,6 +8772,7 @@ flow_hw_pattern_template_create(struct rte_eth_dev *dev, .mask = &tag_m, .last = NULL }; + int it_items_size; unsigned int i = 0; int rc; @@ -8815,6 +8816,31 @@ flow_hw_pattern_template_create(struct rte_eth_dev *dev, it->attr = *attr; it->item_flags = item_flags; it->orig_item_nb = orig_item_nb; + it_items_size = rte_flow_conv(RTE_FLOW_CONV_OP_PATTERN, NULL, 0, tmpl_items, error); + if (it_items_size <= 0) { + rte_flow_error_set(error, ENOMEM, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, + "Failed to determine buffer size for pattern"); + goto error; + } + it_items_size = RTE_ALIGN(it_items_size, 16); + it->items = mlx5_malloc(MLX5_MEM_ZERO, it_items_size, 0, rte_dev_numa_node(dev->device)); + if (it->items == NULL) { + rte_flow_error_set(error, ENOMEM, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, + "Cannot allocate memory for pattern"); + goto error; + } + rc = rte_flow_conv(RTE_FLOW_CONV_OP_PATTERN, it->items, it_items_size, tmpl_items, error); + if (rc <= 0) { + rte_flow_error_set(error, ENOMEM, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, + "Failed to store pattern"); + goto error; + } it->mt = mlx5dr_match_template_create(tmpl_items, attr->relaxed_matching); if (!it->mt) { rte_flow_error_set(error, rte_errno, @@ -8829,6 +8855,7 @@ flow_hw_pattern_template_create(struct rte_eth_dev *dev, else if (attr->egress) it->implicit_tag = true; mlx5_free(copied_items); + copied_items = NULL; } /* Either inner or outer, can't both. */ if (it->item_flags & (MLX5_FLOW_ITEM_OUTER_IPV6_ROUTING_EXT | @@ -8889,6 +8916,7 @@ flow_hw_pattern_template_create(struct rte_eth_dev *dev, mlx5_geneve_tlv_options_unregister(priv, &it->geneve_opt_mng); if (it->mt) claim_zero(mlx5dr_match_template_destroy(it->mt)); + mlx5_free(it->items); mlx5_free(it); } if (copied_items) @@ -8931,6 +8959,7 @@ flow_hw_pattern_template_destroy(struct rte_eth_dev *dev, flow_hw_flex_item_release(dev, &template->flex_item); mlx5_geneve_tlv_options_unregister(priv, &template->geneve_opt_mng); claim_zero(mlx5dr_match_template_destroy(template->mt)); + mlx5_free(template->items); mlx5_free(template); return 0; } -- 2.39.2