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 4DF8A4548E; Wed, 19 Jun 2024 11:20:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 94DBF42DB0; Wed, 19 Jun 2024 11:20:26 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2127.outbound.protection.outlook.com [40.107.237.127]) by mails.dpdk.org (Postfix) with ESMTP id 24EC440289 for ; Wed, 19 Jun 2024 11:20:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LVm57G2mkj9x647sYcTuXkEmpCVoulcQXNV1nBqbWw/gtblTw/YYLKY8eIkgq2tZmVYEl8poZb/annZ+qFVrJSVQUhdvFAjxxFuD8jaY65vIJsXSEgBrYQOBLhJm7+rCE/ensJxMLoOCutJN5ArqtTWRwb53It1wp4JpS4FyeaPa/glIyqVHdhlw+nswdSke+/J/MzJ5O/HihhRcXUEjoFewG0uLfC+P2zg66Czk37VU0m6Rd2PiHb4HjnzMdrgKYdp2ie6MLVPhV7EntPc7Fvhns2KBnBSlOb950MIHg8OR/0kKPGNg+bYg4ihSgtebzbPcR/9M5/5C99L9t+Sktg== 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=cYccufLq9xJ4IE3QB/2Ur/y/1EDwfZ6s74k2GAsn91U=; b=QQ3lzxfZfXOoujDWLJjmkOAOO8rF8gJeIbfp8NWfF5FQ3cRps/xiNKQyKBbyn1MMd2B7IwAsC7s2jK7tt1AV9s7XJehKVn3q+rB4rjNYXUKnU9PkljypcyPKcqEgWbNt8XkzF0c5Su+zh38O7/nE1DlLQ2mraumE4e/ifoLQgkID8wO2KT7BHlsefYry2Ik5jH7C0Uz9Zl/938jAE3EEu38kLtyi6WjU5j0KArXgWEngZFwL4K6vT7Dx/eyUwy7Od125xaiNN4d8eH5Rxu/XbiDh00JwZ05pagjvSG/BKdCgiDOgXqXVaP8aPR2uS5Gu6Ac1RiauT65l444Yu9KbbQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cYccufLq9xJ4IE3QB/2Ur/y/1EDwfZ6s74k2GAsn91U=; b=iAM30W9qCJCK/+FbTd9+JLuiL4MOmt4IadFVYQyWNDtPWr9ygA0tLUgLJmq1tEHhQco3+WU9yd/CV3jAIC28JtOOHNpTI3vbREGpWqIpJtZhSqvFAssqujEOCOlfRxAlQvqZiItoVsu+FxEtfW449tbXatsgAjKu3T1NcatZyHQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by BY1PR13MB7041.namprd13.prod.outlook.com (2603:10b6:a03:5a8::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.31; Wed, 19 Jun 2024 09:20:06 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%4]) with mapi id 15.20.7677.030; Wed, 19 Jun 2024 09:20:06 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 4/7] net/nfp: split out the flow item check logic Date: Wed, 19 Jun 2024 17:19:38 +0800 Message-Id: <20240619091941.3479371-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240619091941.3479371-1-chaoyong.he@corigine.com> References: <20240619091941.3479371-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BY5PR13CA0003.namprd13.prod.outlook.com (2603:10b6:a03:180::16) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY1PR13MB7041:EE_ X-MS-Office365-Filtering-Correlation-Id: fe44f55a-c0e5-49c5-2d91-08dc904101d0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230037|1800799021|366013|376011|52116011|38350700011; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?l+YMlBRVacwX9+OCnm/QCnIFQ6c5u6B7or9GyAVZ1x8re15laNc5yEoL0Zbw?= =?us-ascii?Q?gnhwNsFXNEJm0kG290XfTQLgeGpyfFqRzEmXp5/xLhS3e0eq3bzsTZnMFuvV?= =?us-ascii?Q?Z7pmqYbzXrCK6ZSfLUS/rVO4r4iS3xcOWF1GIv16qbTsGccWjZO2izmFDvlf?= =?us-ascii?Q?dE+E9xWdkrUAWflZOPLRTBUfPNswvRJlqtSCSTR8Q9GdMbMr2XHP9A0ybrVh?= =?us-ascii?Q?qfugl13AA1yao3JM+VF0B0aoUP2KswdOUMm2g15ofWA7S70A8vTnUuWNZIev?= =?us-ascii?Q?7suDMfh61yM+YKa948hK6MXlijY0ME7cuI9qzLBGYRgBNwH0eq+xVb0YN+JY?= =?us-ascii?Q?LAeZk960ga9JDJDN7l1qrX/meLcwfcCzZ035Erf84GS3kQ8MJdsnk5cRwM4e?= =?us-ascii?Q?xQyNsXByRX8IjlarPcATGwRAzbrnjC5XdrRUOVBfnZ5Fg4GtxXdTAmGlQds8?= =?us-ascii?Q?h58iPIWl+41zW3a2fuL74vNId5EsYaRFCxkfQSoBye6ydjJ37EBIjGzptc+h?= =?us-ascii?Q?GcNl6JW94T1bC9bLzsS8NDoZIO2WryHOOTom5GcAgoRtI0D63uLB2d3IbnoZ?= =?us-ascii?Q?85IJgW8C9rMjbhc94CRu/bZX9cNhVCEwwkP+bD6U2AZgAHIag3fZViWIt/60?= =?us-ascii?Q?TkdfM/TukrJugZQH+OI1OVncM6tItM/iHagyozi31rBkgmQP+gvoXlvxnqEY?= =?us-ascii?Q?WxeV+kULU9N0X4Gq6CAVa3umran3IPanTZjrJTXfVQxn2ZVGXbMJVjdHfL2z?= =?us-ascii?Q?Tc7r23WUSJxEgt1vbxWdNo+kdp1OCVH04fsjwTJDlf7lVwXnE039ngOZhlZT?= =?us-ascii?Q?v58bJN2MlTxLaaAnppRVg1RmeKhX5H7ZBS/wlXSx+PbJ69fZE4T4xS6xHP8m?= =?us-ascii?Q?bzNA83mxeYeT/hFgOzvq0PX6TDsSupw1/Ypp9kxW4FnLFkAsGvBvCBQwlpF7?= =?us-ascii?Q?TaxWeRVU9uS/qGuDFSNO7WyoHmt3F8W21yMneXfzycn0zL6k8BQRgh20Wrct?= =?us-ascii?Q?bL4DfdWIaPUNMrScRBna5ZVwazAvquDwlhL/YSzu1JvW/ZB/momI9iQQazHa?= =?us-ascii?Q?mBGDwjZDgv+C9YSxqO5FMKBZYOlMiwsAk0+3Ln3S/Tu7pzq8fbpOt/3HP/NB?= =?us-ascii?Q?SeajpmcXRamt748OYSuGYUZxhXGZ9b++MbdDHGjSno97FO9mdfCksdxJBaue?= =?us-ascii?Q?/iTXhS2xYvbhrJcCi+sQquUDhnVG+P6RIV6d6H7da6stMtkanqAIw4cP7/mu?= =?us-ascii?Q?EBCSeG0uJO7/15RHA1Hu0GJi9/ENnSFafP8DvpHT2QWTHHGx68fxC73FD9gA?= =?us-ascii?Q?JekXqQyVh3FP/k3mKDJGM9pypoaw8yXRz80ZN7Vp/2FuBQ+ehQxrXZ5FHez4?= =?us-ascii?Q?/8tpCPI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230037)(1800799021)(366013)(376011)(52116011)(38350700011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AcyZWSJORCTNJFcSb7SPIVit01c09u+hH8EJ//B7A64SZQSF8o6CMYsp99xx?= =?us-ascii?Q?JGipVUjo4fZB8cXv3AdBacx5pYi9KFE8Cz5xOd+ImshB1KkgrAdzWXiL+cd3?= =?us-ascii?Q?KqlLHK1GzSKb+yWXsDRuOBzopIYrK3EWxlv7plylQ9M7M0mqZiE7+FcJYLsS?= =?us-ascii?Q?ckbAYPKGHGqeGT3KmZ9oSKuHbh+PyviVOvfVzbzDbKFcChnDISige+arjBVH?= =?us-ascii?Q?wOV28i6LE9bwJ5eA+V93Igl0R0gpPoRucymhLeSnSNuZfuUaNAr0OhcaGujC?= =?us-ascii?Q?ZV/UvU3tfEMwod1rpP9ZBwueWW0A3eaec3+9oJWwSlBMDb9tBryQ3zCbixwc?= =?us-ascii?Q?nAaab7PiMP7ShwXV5jz9MViZKF2KxvgzlbjEDEP7Bxu0xXjYbdEfcUDzFnL8?= =?us-ascii?Q?VEvFGw+f7mhPGcij2URPnxJbC6dI2eIbWFY+UWioFQmrv+CKJQU4SVs72Ja4?= =?us-ascii?Q?y4qdUAg66LgXe2D7MOBOQ/WeNJGbPfj8bxlgMhe4HcdtnzncjpWz1eBJ9cQn?= =?us-ascii?Q?v+M3Pdc3lPiuZOnFKG2k8FgoDCBpSRXNKyLau7xs5OWUsKyFoNddqfBDSnxe?= =?us-ascii?Q?Y3jD/h1G0R226kX+TAS/dGD8dy9iN39Iy9fEP1lCRBdg6r5IsvyPm6XhGXAP?= =?us-ascii?Q?6nDSLNLjNds4YTSU+LYACfi01mOZ3OSFmWf8S2Fif7SI2FsCAsH9Ys/wmKY2?= =?us-ascii?Q?WRntFVC3kaMlx7ur58xITu1BCTCq3r3yiSr6DfhMswvzx5+6IFG2J7BjTMZM?= =?us-ascii?Q?3SSGTvQ/F6tf4m/jmAOF8c3e3A/GfqqPtymnDM3CWRT6kuQ+V/7c0uAqO9PQ?= =?us-ascii?Q?GV9W2DM8VkiToxkOpPy8X1Uj5NppoE6qOYZ8IKMJmGf0koIJLEan0I81ll4E?= =?us-ascii?Q?NnnH1lSHbnQN0nbpLJrjwbJlIbgQc+PzbGcVxDt7gmvNnJETpEWrs08A/UwK?= =?us-ascii?Q?XtONMEXRqf+7R4j97/QhE5bg68V/AWhO94dz5/OSKIkHkwY3YepXoI5ijwr4?= =?us-ascii?Q?LBWGS2tIY63HU6U2G1QXbzFjbUHwO+Rld1MrBMtct9w1EHYKq4SKywfGPKfw?= =?us-ascii?Q?6ejpSOFsbxH+lyWFIYhDdGWr8Lne5NcF5cCt5I0+OMzufl8pdSPFwujruLbM?= =?us-ascii?Q?lDG8A1OsqSv0cmFWXdn2HrC5D6nNCzi5gMhyy8nEGZqsZ0ALk9EOWEyeqZ4V?= =?us-ascii?Q?pVCg7GcaQXyLbhgeKH3sr0DcGhgHLb0iLEmtHkILfdSTm6bycK1UIsfy//4Y?= =?us-ascii?Q?prp4am+7tNKwHNiS6bkIPqjiRYUyEghC+34zHUb5eLYym52NVpzVCuJLRWv0?= =?us-ascii?Q?BHpjhyQvhkxCM0ULVyGh1y/YVQjkwYfpSIFgI0ZocFFzWnubYTR5IVt+iQCH?= =?us-ascii?Q?X405zR9HEwmLa8mxtsrjUsSaMD3/xEUmEUyCkIYfckkqirk7KQCdtnCy0jT+?= =?us-ascii?Q?E8i8JIraliPxosEbtOSafJGKS3hkhEVEOy8Kdz0BcQOJ9dBvopMcC4VOLXA0?= =?us-ascii?Q?ap1UKOUSX0A79zZFLA3FrQY2QSt/QiWH+a32/W2aYV3xd4FAWOLGKdLoKAPP?= =?us-ascii?Q?d4BfqAgWPoGbzoXGSKBxk8QNvJUneHoJXSxAWOamoRWM/kV8q7l/Ew9VyAqJ?= =?us-ascii?Q?nw=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe44f55a-c0e5-49c5-2d91-08dc904101d0 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2024 09:20:06.0241 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Isk86tJ27C3RtHGV9GN19xDTfH34Cm92JkucZTTnKMmVPVVhanmx7RFTZ+5zdMWTPPlD/sH+k5psIejXWL5tCOAZOpxUfEdEQELBfwnJPg4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR13MB7041 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 Split out the flow item check logic. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower_flow.c | 109 +++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/drivers/net/nfp/flower/nfp_flower_flow.c b/drivers/net/nfp/flower/nfp_flower_flow.c index b533f4e3f2..f73be3c9a2 100644 --- a/drivers/net/nfp/flower/nfp_flower_flow.c +++ b/drivers/net/nfp/flower/nfp_flower_flow.c @@ -820,8 +820,111 @@ struct nfp_item_calculate_param { struct nfp_item_flag *flag; }; +typedef int (*nfp_flow_key_check_item_fn)(struct nfp_item_calculate_param *param); typedef int (*nfp_flow_key_calculate_item_fn)(struct nfp_item_calculate_param *param); +static int +nfp_flow_item_check_port(struct nfp_item_calculate_param *param) +{ + const struct rte_flow_item_port_id *port_id; + + port_id = param->item->spec; + if (port_id == NULL || port_id->id >= RTE_MAX_ETHPORTS) + return -ERANGE; + + return 0; +} + +static int +nfp_flow_item_check_ipv4(struct nfp_item_calculate_param *param) +{ + if (!param->flag->outer_ip4_flag) + param->flag->outer_ip4_flag = true; + + return 0; +} + +static int +nfp_flow_item_check_ipv6(struct nfp_item_calculate_param *param) +{ + if (!param->flag->outer_ip6_flag) + param->flag->outer_ip6_flag = true; + + return 0; +} + +static int +nfp_flow_item_check_vxlan(struct nfp_item_calculate_param *param) +{ + if (!param->flag->outer_ip4_flag && !param->flag->outer_ip6_flag) { + PMD_DRV_LOG(ERR, "No outer IP layer for VXLAN tunnel."); + return -EINVAL; + } + + return 0; +} + +static int +nfp_flow_item_check_geneve(struct nfp_item_calculate_param *param) +{ + if (!param->flag->outer_ip4_flag && !param->flag->outer_ip6_flag) { + PMD_DRV_LOG(ERR, "No outer IP layer for GENEVE tunnel."); + return -EINVAL; + } + + return 0; +} + +static int +nfp_flow_item_check_gre(struct nfp_item_calculate_param *param) +{ + if (!param->flag->outer_ip4_flag && !param->flag->outer_ip6_flag) { + PMD_DRV_LOG(ERR, "No outer IP layer for GRE tunnel."); + return -EINVAL; + } + + return 0; +} + +static nfp_flow_key_check_item_fn check_item_fns[] = { + [RTE_FLOW_ITEM_TYPE_PORT_ID] = nfp_flow_item_check_port, + [RTE_FLOW_ITEM_TYPE_IPV4] = nfp_flow_item_check_ipv4, + [RTE_FLOW_ITEM_TYPE_IPV6] = nfp_flow_item_check_ipv6, + [RTE_FLOW_ITEM_TYPE_VXLAN] = nfp_flow_item_check_vxlan, + [RTE_FLOW_ITEM_TYPE_GENEVE] = nfp_flow_item_check_geneve, + [RTE_FLOW_ITEM_TYPE_GRE] = nfp_flow_item_check_gre, +}; + +static int +nfp_flow_key_layers_check_items(const struct rte_flow_item items[]) +{ + int ret; + struct nfp_item_flag flag = {}; + const struct rte_flow_item *item; + struct nfp_item_calculate_param param = { + .flag = &flag, + }; + + for (item = items; item->type != RTE_FLOW_ITEM_TYPE_END; ++item) { + if (item->type >= RTE_DIM(check_item_fns)) { + PMD_DRV_LOG(ERR, "Flow item %d unsupported", item->type); + return -ERANGE; + } + + if (check_item_fns[item->type] == NULL) + continue; + + param.item = item; + ret = check_item_fns[item->type](¶m); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Flow item %d check fail", item->type); + return ret; + } + } + + return 0; +} + static int nfp_flow_item_calculate_stub(struct nfp_item_calculate_param *param __rte_unused) { @@ -1490,6 +1593,12 @@ nfp_flow_key_layers_calculate(const struct rte_flow_item items[], key_ls->vlan = 0; key_ls->tun_type = NFP_FL_TUN_NONE; + ret = nfp_flow_key_layers_check_items(items); + if (ret != 0) { + PMD_DRV_LOG(ERR, "flow items check failed"); + return ret; + } + ret = nfp_flow_key_layers_calculate_items(items, key_ls); if (ret != 0) { PMD_DRV_LOG(ERR, "flow items calculate failed"); -- 2.39.1