From patchwork Fri Nov 3 06:25:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133807 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6ADEF43275; Fri, 3 Nov 2023 07:26:37 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2919140DDB; Fri, 3 Nov 2023 07:26:33 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2093.outbound.protection.outlook.com [40.107.237.93]) by mails.dpdk.org (Postfix) with ESMTP id 0222440265 for ; Fri, 3 Nov 2023 07:26:32 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ut3pNh5lAl8WdUUzIQMFztxsSFD7Xd0phuUQoCVg/lsmwgdoPr2JCgdH2Puez51bNNkD3dgXNIpW2AV35XFCdgh4bLfF/PWT5CDyvb3fYKdgkIHRFHs+aOncGDhIRZJiwl4CU+qjdQRxFjC5lSe4Ep6QW5T2cUO0oGsB03eVrSVae4jrx2dMDxQ4EX99BhdNoxzHZNZNeIVrJ7qvpJAddMsMfzpiP3hlD4uUdRvGLB7eYd6eG4QuBBjkzAEcHl8GAl9+UNsiEmEwnKFdNKcPG/HTDqQ3GabtUwhj+9RNVNnEaEZVhfkGTAeJxFpHJ8DlIXmZOwQGOnkAPZzBJ+H5tQ== 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=i3Vuq7nQHgv+gsJ1OptGilE0Ix5fcxnqLIYUNigPlnY=; b=FZhEF1iYBfNS3dhAWbwprW4ostYAzDZ2IJ/zau3E0sfzmkdm60p9V2pwE+n2IBuC+aqkmEGqcqpFHEMfDfQCnaVV5jghHjuPPLno5zXsIHHQlLPyozbcdIFttutIZ+z6BxGlihAV6mlkSfcmA8Q1VzRfXhIvogz9jw75BGLt7VSNz79V4hQyUv8kqaivUOWFLvGvxdWu2R4PKvoQfYSsx9KmzbXDCMkRsEwbTPPXpN9BP5To5dNffWRCXmlNwkmRZpenA26a3DdnwjHRMc28a0YSKLKYt339ewqDpdLhu2kBYo4UDzlEsNFnCBUGDad2Uub4Gn9m8sN0YYlJjyUinA== 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=i3Vuq7nQHgv+gsJ1OptGilE0Ix5fcxnqLIYUNigPlnY=; b=ZgRAko14uUIMc1ILLIpp/16Zj9bo3YRBTykgUADpdrM1AVctjIErzdSnhUUBQUUvgA5cJIm/1cBzBAaw1jX2L4++ckPHO+P5HTQZdszIeb0HZDeMuqpgt7vu8yRXw1PrK/c1Y3LUppMITa1Vnk98oIBqm7gMqy2vNKIOgRh3bWQ= 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 DM6PR13MB4416.namprd13.prod.outlook.com (2603:10b6:5:1b5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.21; Fri, 3 Nov 2023 06:26:30 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:30 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 01/11] net/nfp: move some source files Date: Fri, 3 Nov 2023 14:25:56 +0800 Message-Id: <20231103062606.2632012-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4416:EE_ X-MS-Office365-Filtering-Correlation-Id: 7441df67-faab-4adf-5033-08dbdc35d115 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mNG8C8VPY6k5NRJqwuY0JEr702IIP2+4Bjn6NgKWA8KISltkEjPru9O6dmCQwOy8a2im9TnRANFPYmbRAw3/6UxsvNFVGxcqLv3hX5KUC/hoyaHJPgANS1wPm5eDzt2oWTHh8NRAvVJo4qpciRCNdxZTlJUBCF6rrSo6gaIuxOsa37IEFz21rq47CBfLh6fZN73WFr1P43RAbC0HfVLBt9TIsH9j8a2YXdzxSTK7xom89vUZC4lRSCeEil1XvLR93x42WZAGNgfkfwPdLTyHDNhOgSO1Z7ypSYFpxtYKZuUmgi2YV0w4zRJS+iVWpfk8XeR1UrwUSW5WXqwPFN3vPbP+ceWL0voNKIPFDDwtLI8YDQXFqVMNtflR3RHOkL42eBlLsiMzWO1J6nke/rKzcOF7cqc0bEwX266i0JwDaV+PhATgy34LPVjDgCqCEU1yG14KqCSRVvf0I3smqteIbWMo4EbxBBhzR4xC5qW4MYfkT+ljcMqha3zdYQ1sBNHfVCIW0FJekca3HndBVNRIhXwWuS6H2p0UtUwKPiizCKu4gJ/Q1CcUrTRkfTHoqNHCOw4tA8cibXdENrxGIGwjJ4Lvq7L7kZBvjf2JwkV2xARviw/JwjTh4jsg7wBmPfZOEq6pneIXZMC0ZIRBHuk52a13t0jJcOoxnaznqIFIF0I= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(136003)(396003)(346002)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(107886003)(2616005)(6512007)(1076003)(38350700005)(86362001)(36756003)(38100700002)(83380400001)(2906002)(5660300002)(52116002)(478600001)(6666004)(26005)(6506007)(4326008)(8936002)(8676002)(6916009)(66946007)(66476007)(316002)(66556008)(54906003)(41300700001)(44832011)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aU+sTLCEE3LxM2m2tJbvxl8Acm48Ai8/yQqO0SvyvRa0x8S20KnE0M74++t08CrBTPpCPE0GPazKMBfUk8/HZYT4F7Q65f6c7D6by9nIqFZiTLjDWiQ27UedpVJCu568NIzuoACFD7HyyeBtaNfRSTcvqTHqUhVdJBKkrRiesu92H62nKa3RgTiQERP449fHfbEc8+7coTosUszpilN4iLyMroxGU1tIIrTXMTVnk0d99hhR7VKJkYQEEa8iwsWPY+JyqulCoZf8ee5leN2gLO34lwFDCRgSmOw/fMNpfXHona1e+FAw+vTuFY0O5cqjvqk01D98o9yPmVK4xtjQKDrSRqZg5YC0NNN+ueLdJisNLvbOCBssqkFbQcOI3px47ULyf7aKBoT6lHS1ocb63DqSXqJAQ0M4wzaIIfVgmUvZUOg2XkTICIzzY4ti+XTU+jcIfiOQ7hzKtlaRV49JcmSU5TLKLOYgb3O/xlPwb1KR5YxT7MklSk5gxysvr/XOQnDCFzsuUXIBdd/DGpLw0LnYPGHCgAn1B8wQagMpgxN6a89SLJzGXbprfY5ghwHsMpjlbLxMn0w5fu0IhG43h4tP9W77S5j03eX0YV/91wirKW6L76Ly1rnoz8UP0ynaq0BVp05N7zJhB6/sWgYbByYxURRzpUdKNKt9suw9Dp+bPIh51B3t5HByAvF3OWYrOn/pVJj94LGDaDXJsEW4mBSSRyGz5v67YUEdEJXpba+LHjC00T0vwEc+B6yrbye8177QbYjHAfrglDF7JiGI4bBdWaAU+4QIVZCwxOD6bS9ZnOR6Jzy+kzu8QpuNIetpu3of5BoxIM4TIqUerBmtVOj+fOc+Z0IS9H8yKlDOdmmIsygK78MgS9BuoOpjVqZS1kgnNTqQdC+1ygp++qbRGtFKYRmaxNnwdwzxjt7TzuVX9CR862a9Go14W+6xi3DPucCuxnQHTg2MKHHvFZSXKYmx3QvkoWvnMw+OArNFOaQ9UQs+ptO8tsws3xOUWfgoDHW0tLBQXptdiDzCPy6ztM7Pj2ikJ2nsAh0FGX1RWDUw8hg8LPrMXkau5gtLn8ihxmQ8wEDGE8p3pApYbzY6mKtQxIUsUGZvEGwLBvwvDbBOfAf0A8x7puNnPOVIV+b9oj1bkrZ3sZ7mb77TgpHDzN4uZalezDZVUb0qER8bX/wXaqDwGEIaMHd/8s08knGTDqzfx7XfVInLSRDxi3Z9mZeLIFoHsFp9+0bQ2hXw6X3bFQX7og2HQYpdRA5qegy/x1LjgKZWssGdF6zl43d+yBdQOYqG/tA4dcGh6YuxxA4l7alT6xChLwM7BeiJAI+hKgjSX7KcnZpQNULuDhQITODJQDpgKSKXqZsJ86s0PFrnA4Z/h6A41YjdJnYcvceYJ8mi1jPz8qhZ2sJ2KVRwYgvwAEe1WjN+qBDa3uf/OcbmEUb51jjm7wnedyvM2EzAHT80eM63LVIIj5sCU7rQ8RM8I9005qNL1CRxaGoEdUkSv3ETyZvNLOEwe8b7sDmXVmUa7UrmqO5l26kbL5weEq1oI+JFm5aD1qgk3wE1MqO5aniPtj+V9ls0rdjMvM8nQSQKDeq8Lcc5HekOVFshxg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7441df67-faab-4adf-5033-08dbdc35d115 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:30.5239 (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: cRvm20m5MHJ0n6YeH1Vjb+Z5JPeGNCmnQMrEGBLvVjXhcUujNmBueA9hViNkBoAkNQLRwJGCL4q60mG4gFjEkacLigagfTLD2DHk8a6n+vI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4416 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 Rename module 'nfp_flow' into 'nfp_flower_flow' and move the source files into the 'flower' sub-directory. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_conntrack.h | 2 +- drivers/net/nfp/flower/nfp_flower_cmsg.h | 2 +- .../net/nfp/{nfp_flow.c => flower/nfp_flower_flow.c} | 4 ++-- .../net/nfp/{nfp_flow.h => flower/nfp_flower_flow.h} | 10 +++++----- drivers/net/nfp/flower/nfp_flower_representor.c | 2 +- drivers/net/nfp/meson.build | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) rename drivers/net/nfp/{nfp_flow.c => flower/nfp_flower_flow.c} (99%) rename drivers/net/nfp/{nfp_flow.h => flower/nfp_flower_flow.h} (96%) diff --git a/drivers/net/nfp/flower/nfp_conntrack.h b/drivers/net/nfp/flower/nfp_conntrack.h index 5abab4e984..9bfca236ed 100644 --- a/drivers/net/nfp/flower/nfp_conntrack.h +++ b/drivers/net/nfp/flower/nfp_conntrack.h @@ -11,7 +11,7 @@ #include #include -#include "../nfp_flow.h" +#include "nfp_flower_flow.h" struct nfp_ct_map_entry; diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h index c2938fb6f6..45543816ae 100644 --- a/drivers/net/nfp/flower/nfp_flower_cmsg.h +++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h @@ -6,8 +6,8 @@ #ifndef __NFP_CMSG_H__ #define __NFP_CMSG_H__ -#include "../nfp_flow.h" #include "nfp_flower.h" +#include "nfp_flower_flow.h" struct nfp_flower_cmsg_hdr { rte_be16_t pad; diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/flower/nfp_flower_flow.c similarity index 99% rename from drivers/net/nfp/nfp_flow.c rename to drivers/net/nfp/flower/nfp_flower_flow.c index f832b52d89..e26be30d18 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/flower/nfp_flower_flow.c @@ -3,7 +3,7 @@ * All rights reserved. */ -#include "nfp_flow.h" +#include "nfp_flower_flow.h" #include #include @@ -4318,7 +4318,7 @@ static const struct rte_flow_ops nfp_flow_ops = { }; int -nfp_net_flow_ops_get(struct rte_eth_dev *dev, +nfp_flow_ops_get(struct rte_eth_dev *dev, const struct rte_flow_ops **ops) { if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) == 0) { diff --git a/drivers/net/nfp/nfp_flow.h b/drivers/net/nfp/flower/nfp_flower_flow.h similarity index 96% rename from drivers/net/nfp/nfp_flow.h rename to drivers/net/nfp/flower/nfp_flower_flow.h index 09e5b30dd8..75f18c6bd5 100644 --- a/drivers/net/nfp/nfp_flow.h +++ b/drivers/net/nfp/flower/nfp_flower_flow.h @@ -3,10 +3,10 @@ * All rights reserved. */ -#ifndef __NFP_FLOW_H__ -#define __NFP_FLOW_H__ +#ifndef __NFP_FLOWER_FLOW_H__ +#define __NFP_FLOWER_FLOW_H__ -#include "nfp_net_common.h" +#include "../nfp_net_common.h" /* The firmware expects lengths in units of long words */ #define NFP_FL_LW_SIZ 2 @@ -182,7 +182,7 @@ struct nfp_flower_representor; int nfp_flow_priv_init(struct nfp_pf_dev *pf_dev); void nfp_flow_priv_uninit(struct nfp_pf_dev *pf_dev); -int nfp_net_flow_ops_get(struct rte_eth_dev *dev, const struct rte_flow_ops **ops); +int nfp_flow_ops_get(struct rte_eth_dev *dev, const struct rte_flow_ops **ops); bool nfp_flow_inner_item_get(const struct rte_flow_item items[], const struct rte_flow_item **inner_item); struct rte_flow *nfp_flow_process(struct nfp_flower_representor *representor, @@ -202,4 +202,4 @@ int nfp_flow_destroy(struct rte_eth_dev *dev, struct rte_flow *nfp_flow, struct rte_flow_error *error); -#endif /* __NFP_FLOW_H__ */ +#endif /* __NFP_FLOWER_FLOW_H__ */ diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index 0f0e63aae0..c23a82c356 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -334,7 +334,7 @@ static const struct eth_dev_ops nfp_flower_repr_dev_ops = { .mac_addr_set = nfp_flower_repr_mac_addr_set, .fw_version_get = nfp_net_firmware_version_get, - .flow_ops_get = nfp_net_flow_ops_get, + .flow_ops_get = nfp_flow_ops_get, .mtr_ops_get = nfp_net_mtr_ops_get, }; diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index cf9c16266d..8407073af8 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -11,6 +11,7 @@ sources = files( 'flower/nfp_flower.c', 'flower/nfp_flower_cmsg.c', 'flower/nfp_flower_ctrl.c', + 'flower/nfp_flower_flow.c', 'flower/nfp_flower_representor.c', 'nfd3/nfp_nfd3_dp.c', 'nfdk/nfp_nfdk_dp.c', @@ -30,7 +31,6 @@ sources = files( 'nfp_cpp_bridge.c', 'nfp_ethdev.c', 'nfp_ethdev_vf.c', - 'nfp_flow.c', 'nfp_ipsec.c', 'nfp_logs.c', 'nfp_mtr.c', From patchwork Fri Nov 3 06:25:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133809 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 71C4443275; Fri, 3 Nov 2023 07:26:52 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 602A742D78; Fri, 3 Nov 2023 07:26:39 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2111.outbound.protection.outlook.com [40.107.93.111]) by mails.dpdk.org (Postfix) with ESMTP id 296D8427DD for ; Fri, 3 Nov 2023 07:26:37 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TQ9x50ZuZ7hscTqUSzuMXRvUHd5NYL/pZky17ykTEvnl196qj08zn8z+zOPW+UzZ9jkovzRMXOKA6+ZGh//0gW7GvmkKdYdKa1GbXAfjK1diiezDYmpGDwy7o2VhhMTf2oo2SnVwI9neQWZFjxIKdx9UPpaeaVoNFDhMzW+eakhaCY6jHwCVgBzPRPphMuErYrhxIisXPPwTHJ9t+SeIMwQ1FYr/mvyivs8l9boTpHYYaqYPTroaeQ0ps/DNwONaGEYZj45dqdcOP2hARD0hhrooRJGQtCX5On1PNlmxRpSALxJMACx8H+41wC9S67Pw2UzDz7OKuuHpFDjZGA+73w== 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=DqlcuPCq7pCDDakzv3SLa7EuAVm1UOaNaCHOWYAPRyQ=; b=lTlrG9dY5/eq90NBN2hS7ryq6zOnVrrryQPlEnQLCjndT5Osdpi6K/9NGS8fc0gaHrmYfb8Jl5wFy/bKL4KnNEjDwTouauCZ13kkZ0F0jJNrdq2fTA0HU2z1X7+4nysjaYCN7o0HHhgZhHB+Ce2xgcm2x4+WNeXGfWIndAMWseYKYPnQjI8k9DKTBR6OHpBRr7HVd5oSm5Da6Y/606F7wRfVczYD5aAFOK8d1hlTYJlwPL6YMcXyeLY6BkCOEIaMJaJtdvgwj5RziPP886aqrpWUvI9bMs6yeW4mbydmKqNHrJ/auQZ/nx9G2otLZDggVegMQhPQ17QyPPHgLpojcw== 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=DqlcuPCq7pCDDakzv3SLa7EuAVm1UOaNaCHOWYAPRyQ=; b=XodDZU+thqLMvzFPEorNyon0LPVJgEzXcC9LF7u2Djiu1COt61Q5fwL8ke5wiwwi7AOoG7XhYImFnEni7U3HtygPhPftcw13JhRuFmgPcxHdYS3o2T8DyQABnngnwydDBVYQ+XlbKo2m/c+d8OSqUQ97YRpSjjGf2uO4Zj9pjVI= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:33 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:32 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 02/11] drivers: add the structures and functions for flow offload Date: Fri, 3 Nov 2023 14:25:57 +0800 Message-Id: <20231103062606.2632012-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: 17112ce8-843f-4e65-19a2-08dbdc35d263 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X9h4j/A28Zbatq91cv113QNNXlZ7RremSborAF+NTOZGwwpDaYf18+Fwrb4ZY3FF3SnLt1psOcjmjAyTcu6SjY/WVpF89pU2xNIqMqZFiNUqj67Yxx9JEYKQ8/86WkmVuVqXwysTMOwuc4enQfr8KCZSrvDWKfGGDJ8UFoPwEcGuxZ43ZXvf4MZmpxjfQPupEVHyMX0tsmpt3rBOiIKN5Vm9Wofy35KRsEUbm5FuQOSgCoTDBp84Y7Xmr8DGXrOcngLsewXmzqKyLChSUuGsSTN6tpBXiVLyiyTzBUvqAMn/GtD7/4enmmrYqtbMeMvfjXu8kaFHRQf4lS25LAp3PfYBu90jPPNKCSBQoLGWEN5jwbhA3zjka1865JSiqwDFa/J6pS9oadLeyRlpGvfdQyeMAftNb8EZdGtmclZaFP8d3/wYN6meGPANDTv7rkPfKdUDzKCdnWa/jMiuMqiwYu4ea0bpdqfWpwEeOsFNqswzqidRHD0lew+VuPRvJvaWjmF2WoU/PGLiT5RnFX1N4DZm0qOMW2OEjqbAUoz+xJQ5OUw4ldUUnA6ZvXYsQVJSxuAKRYQ+3gSTgYG6d1mx23haNGOf4hP01+Re858TS1zKqvG1V1WeW8vHvDRj1PH97bUn+yMuFMP/mbpDapaZDycBKwfmNLa20a6ZDXculnA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(83380400001)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Tc3XvtqJ1G2bLQr65POcj+unn6L+kAy4rIHNHIWe4AM1czVNpa2kTObCk01clg1Q4QPx/lnsaDrmIGivheC2Vj3Pw3WQai2n0Ug4bCGTNdEyKpXCKtfhXdo0WMuYq5TIg8IIs5eNfH8yCSIbeuhoA79t5NhTEKk3zA4Di61hG1aKrPKN7kjxRJ/5kAIlAptT+yW2Ow7/41piYMAYBWY6FOqxo2KXk/siX3XgjJPx44xh28YKSS1ZMEdQQNfJkAilsFU3yjej9ASJYcbybhsGGE35yhvxHjHf2c+bSOQwoO0y3LQwHh+T+3IxzggFmG2ZwV/Qp1YK49lhjUqgMgzJeif53chOEdgfO/e9fug+CoQLQEGgWY5Tw/KhGvAbXMJDAiTueOh7xRUClwffJsarWIaHfBZBnHGK+cndM4bhsOAhVDD4gbMdA5I2xXx9R13CVuYfk4Tbqm0slNwHAfqLellcIBWJ30OC2dcNXVTmphKxp06Hy8ticQl/YvH9g0oNxXLwR7PF/HRbq9do2qURZ/qmJgNO2nCrMYNcKAepANps3wgpCUMo+NCDuJZOmXyh2hE2ivYfJu6MxLf1QWxUlWOuPfX/Nl7uQI+X+T+HAI7JSXnDyikv0cxEkXAUNXrnBdGBdQRbM78GMGqBiW7e+t0I78uo0y2Ikhm5Rjvs4ArY2DJzVqJvKkJvKSUCk44vI+U9Rtu69Wbs1I+89/Itq5naIAi256GPJOHjLcYJbGtYtkS0Q0rlGYKIslvq87kErLdruCFw425rVg+zJT+n6h02CKmJf9Qb56rtqjsClwsCUJUk/cDuGgBBq8I0s18przXYcsNX7SBRcvM0JXWaU8k5Kr52q+MwZ056CVQrZUotc+gIt6BE4YLXW2Cy9m6Wx2so9wmN/heiwYGJ+H6GSldOovGZ4veAKQTEWZ+nZ59ckVgFnHP6WAKVRF32R06ijpNpfs7wC4f6yI4pIEE1roF/oZrvVpCmuD5Ou/a+oJu+Xoxy73unAg161R4zeb2ZpItV+rrPFglwrl7ZuDnYVylw8Fu9hBK9zRiI0VhwIP1jpQ7R+Ty4Ur0gMhsmss48xJiyVA+1DDL+M3IPgU6n/47b989YRlAlwC1D+WdJEVqOs0e/hzqbL+xXMgobYeH4vOpAfv4VzA2V4IXJLoipRXqSmECGxOIoQzPJyA9q7wMpdDzXcJudiNBOkaG4nUKNYIaPo1sILak37Z9Qwx/mLYNcPj7mQ4xdqn5Z/dRH0G2XHvaflQNrQVEhpHN1+eZLTpCQ+H4qfBsurejaq/hMoE19TPT5Hm5HwPgReugjWYRdUZ2AT2fK7uUOr87FltvUOoXuJvYQ27NpL7tJW3lHx/Mj50r5696KsSiJgRLqDPCNFiVarpfZEcLKYQNHreq5Fm/FbZTLdOKbdQWCT9428/gvt/UTXsN9mAi7pl1irA5K9JY6S+S0rfUV9Pw6Pu0/3YlzLpRURdP8NIE9L3mxZmq5AqZyeIDIurudX3heXILfVNQjmmbbE95P4QSB1dl8Y+rVJizjDetoNFk9BzgvGk0wn7APKk94k2gio3ZnfULhH1vRXbj7qT6Jsur0N50FvBN6JlZM1Un1P6UWToCC1Q== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17112ce8-843f-4e65-19a2-08dbdc35d263 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:32.7028 (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: lQFmzsKKy61ZFtDsTDL7T9g8OywuApPqtG40MuhB/CEJY6gOcL3kI65NNsPmKb6liSkDs/4tWdk5aABZyLpEQTyvDSW4Bp1IiEVq9LPjreQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the structures and functions to process flow table, which is used in the rte_flow offload logics. This module is used for the CoreNIC firmware. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_ctrl.h | 1 + drivers/net/nfp/meson.build | 1 + drivers/net/nfp/nfp_ethdev.c | 26 +++-- drivers/net/nfp/nfp_net_common.h | 11 ++ drivers/net/nfp/nfp_net_flow.c | 162 +++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_flow.h | 28 +++++ 6 files changed, 222 insertions(+), 7 deletions(-) create mode 100644 drivers/net/nfp/nfp_net_flow.c create mode 100644 drivers/net/nfp/nfp_net_flow.h diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h index d09fd2b892..cbde987736 100644 --- a/drivers/common/nfp/nfp_common_ctrl.h +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -223,6 +223,7 @@ struct nfp_net_fw_ver { #define NFP_NET_CFG_CTRL_IPSEC_SM_LOOKUP (0x1 << 3) /**< SA short match lookup */ #define NFP_NET_CFG_CTRL_IPSEC_LM_LOOKUP (0x1 << 4) /**< SA long match lookup */ #define NFP_NET_CFG_CTRL_MULTI_PF (0x1 << 5) +#define NFP_NET_CFG_CTRL_FLOW_STEER (0x1 << 8) /**< Flow Steering */ #define NFP_NET_CFG_CTRL_IN_ORDER (0x1 << 11) /**< Virtio in-order flag */ #define NFP_NET_CFG_CAP_WORD1 0x00a4 diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 8407073af8..0d0a0bd8f4 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -36,6 +36,7 @@ sources = files( 'nfp_mtr.c', 'nfp_net_common.c', 'nfp_net_ctrl.c', + 'nfp_net_flow.c', 'nfp_rxtx.c', ) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index f02caf8056..af5e5d333a 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -23,6 +23,7 @@ #include "nfp_cpp_bridge.h" #include "nfp_ipsec.h" #include "nfp_logs.h" +#include "nfp_net_flow.h" #define NFP_PF_DRIVER_NAME net_nfp_pf @@ -150,6 +151,10 @@ nfp_net_start(struct rte_eth_dev *dev) ctrl_extend |= NFP_NET_CFG_CTRL_IPSEC_SM_LOOKUP | NFP_NET_CFG_CTRL_IPSEC_LM_LOOKUP; + /* Enable flow steer by extend ctrl word1. */ + if ((cap_extend & NFP_NET_CFG_CTRL_FLOW_STEER) != 0) + ctrl_extend |= NFP_NET_CFG_CTRL_FLOW_STEER; + update = NFP_NET_CFG_UPDATE_GEN; if (nfp_ext_reconfig(hw, ctrl_extend, update) != 0) return -EIO; @@ -692,6 +697,14 @@ nfp_net_init(struct rte_eth_dev *eth_dev) /* Recording current stats counters values */ nfp_net_stats_reset(eth_dev); + if ((hw->cap_ext & NFP_NET_CFG_CTRL_FLOW_STEER) != 0) { + err = nfp_net_flow_priv_init(pf_dev, port); + if (err != 0) { + PMD_INIT_LOG(ERR, "Init net flow priv failed"); + return err; + } + } + return 0; } @@ -1115,14 +1128,13 @@ nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev, port_cleanup: for (i = 0; i < app_fw_nic->total_phyports; i++) { id = nfp_function_id_get(pf_dev, i); + hw = app_fw_nic->ports[id]; - if (app_fw_nic->ports[id] != NULL && - app_fw_nic->ports[id]->eth_dev != NULL) { - struct rte_eth_dev *tmp_dev; - tmp_dev = app_fw_nic->ports[id]->eth_dev; - nfp_ipsec_uninit(tmp_dev); - rte_eth_dev_release_port(tmp_dev); - app_fw_nic->ports[id] = NULL; + if (hw != NULL && hw->eth_dev != NULL) { + nfp_ipsec_uninit(hw->eth_dev); + if ((hw->super.cap_ext & NFP_NET_CFG_CTRL_FLOW_STEER) != 0) + nfp_net_flow_priv_uninit(pf_dev, id); + rte_eth_dev_release_port(hw->eth_dev); } } nfp_cpp_area_free(pf_dev->ctrl_area); diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 30fea7ae02..48791af93a 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -108,6 +108,14 @@ struct nfp_pf_dev { struct nfp_multi_pf multi_pf; }; +#define NFP_NET_FLOW_LIMIT 1024 + +struct nfp_net_priv { + uint32_t hash_seed; /**< Hash seed for hash tables in this structure. */ + struct rte_hash *flow_table; /**< Hash table to store flow rules. */ + uint16_t flow_count; /**< Flow count in hash table */ +}; + struct nfp_app_fw_nic { /** Backpointer to the PF device */ struct nfp_pf_dev *pf_dev; @@ -177,6 +185,9 @@ struct nfp_net_hw { struct nfp_net_tlv_caps tlv_caps; struct nfp_net_ipsec_data *ipsec_data; + + /** Used for rte_flow of CoreNIC firmware */ + struct nfp_net_priv *priv; }; static inline uint32_t diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c new file mode 100644 index 0000000000..6c02b0f82e --- /dev/null +++ b/drivers/net/nfp/nfp_net_flow.c @@ -0,0 +1,162 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_net_flow.h" + +#include +#include +#include +#include + +#include "nfp_logs.h" + +__rte_unused static int +nfp_net_flow_table_add(struct nfp_net_priv *priv, + struct rte_flow *nfp_flow) +{ + int ret; + + ret = rte_hash_add_key_data(priv->flow_table, &nfp_flow->hash_key, nfp_flow); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Add to flow table failed."); + return ret; + } + + return 0; +} + +__rte_unused static int +nfp_net_flow_table_delete(struct nfp_net_priv *priv, + struct rte_flow *nfp_flow) +{ + int ret; + + ret = rte_hash_del_key(priv->flow_table, &nfp_flow->hash_key); + if (ret < 0) { + PMD_DRV_LOG(ERR, "Delete from flow table failed."); + return ret; + } + + return 0; +} + +__rte_unused static struct rte_flow * +nfp_net_flow_table_search(struct nfp_net_priv *priv, + struct rte_flow *nfp_flow) +{ + int index; + struct rte_flow *flow_find; + + index = rte_hash_lookup_data(priv->flow_table, &nfp_flow->hash_key, + (void **)&flow_find); + if (index < 0) { + PMD_DRV_LOG(DEBUG, "Data NOT found in the flow table."); + return NULL; + } + + return flow_find; +} + +__rte_unused static struct rte_flow * +nfp_net_flow_alloc(uint32_t match_len, + uint32_t action_len, + uint32_t port_id) +{ + char *data; + struct rte_flow *nfp_flow; + struct nfp_net_flow_payload *payload; + + nfp_flow = rte_zmalloc("nfp_flow", sizeof(struct rte_flow), 0); + if (nfp_flow == NULL) + return NULL; + + data = rte_zmalloc("nfp_flow_payload", match_len + action_len, 0); + if (data == NULL) + goto free_flow; + + nfp_flow->port_id = port_id; + payload = &nfp_flow->payload; + payload->match_len = match_len; + payload->action_len = action_len; + payload->match_data = data; + payload->action_data = data + match_len; + + return nfp_flow; + +free_flow: + rte_free(nfp_flow); + + return NULL; +} + +__rte_unused static void +nfp_net_flow_free(struct rte_flow *nfp_flow) +{ + rte_free(nfp_flow->payload.match_data); + rte_free(nfp_flow); +} + +int +nfp_net_flow_priv_init(struct nfp_pf_dev *pf_dev, + uint16_t port) +{ + int ret = 0; + struct nfp_net_priv *priv; + char flow_name[RTE_HASH_NAMESIZE]; + struct nfp_app_fw_nic *app_fw_nic; + const char *pci_name = strchr(pf_dev->pci_dev->name, ':') + 1; + + snprintf(flow_name, sizeof(flow_name), "%s_fl_%u", pci_name, port); + + struct rte_hash_parameters flow_hash_params = { + .name = flow_name, + .entries = NFP_NET_FLOW_LIMIT, + .hash_func = rte_jhash, + .socket_id = rte_socket_id(), + .key_len = sizeof(uint32_t), + .extra_flag = RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY, + }; + + priv = rte_zmalloc("nfp_app_nic_priv", sizeof(struct nfp_net_priv), 0); + if (priv == NULL) { + PMD_INIT_LOG(ERR, "NFP app nic priv creation failed"); + ret = -ENOMEM; + goto exit; + } + + app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv); + app_fw_nic->ports[port]->priv = priv; + priv->hash_seed = (uint32_t)rte_rand(); + + /* Flow table */ + flow_hash_params.hash_func_init_val = priv->hash_seed; + priv->flow_table = rte_hash_create(&flow_hash_params); + if (priv->flow_table == NULL) { + PMD_INIT_LOG(ERR, "flow hash table creation failed"); + ret = -ENOMEM; + goto free_priv; + } + + return 0; + +free_priv: + rte_free(priv); +exit: + return ret; +} + +void +nfp_net_flow_priv_uninit(struct nfp_pf_dev *pf_dev, + uint16_t port) +{ + struct nfp_net_priv *priv; + struct nfp_app_fw_nic *app_fw_nic; + + app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv); + priv = app_fw_nic->ports[port]->priv; + + rte_hash_free(priv->flow_table); + rte_free(priv); +} diff --git a/drivers/net/nfp/nfp_net_flow.h b/drivers/net/nfp/nfp_net_flow.h new file mode 100644 index 0000000000..5ec80ba3b6 --- /dev/null +++ b/drivers/net/nfp/nfp_net_flow.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_NET_FLOW_H__ +#define __NFP_NET_FLOW_H__ + +#include "nfp_net_common.h" + +struct nfp_net_flow_payload { + uint16_t cmsg_type; + uint8_t match_len; + uint8_t action_len; + char *match_data; + char *action_data; +}; + +struct rte_flow { + struct nfp_net_flow_payload payload; + uint32_t hash_key; + uint32_t port_id; +}; + +int nfp_net_flow_priv_init(struct nfp_pf_dev *pf_dev, uint16_t port); +void nfp_net_flow_priv_uninit(struct nfp_pf_dev *pf_dev, uint16_t port); + +#endif /* __NFP_NET_FLOW_H__ */ From patchwork Fri Nov 3 06:25:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133808 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7D69543275; Fri, 3 Nov 2023 07:26:44 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 52C0F427E0; Fri, 3 Nov 2023 07:26:38 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2111.outbound.protection.outlook.com [40.107.93.111]) by mails.dpdk.org (Postfix) with ESMTP id CD824402E9 for ; Fri, 3 Nov 2023 07:26:36 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C6SeGr6VmnxDeGwP2pNiXnEiNnj5T4C2QTbpPCMcNapa7dQWa7K09LWWssa0zx5xd7gJmqqp5vDnXeNozdXgcKG4THsvNBD9w4LzvBTRVQWT10laW6VIX8fhavt7Z3fKaj3HelKnQjrwB/QwHHnqxNSHEw0ykKaFSErD+R/14xulHMvJ9JcDJecL2E7Sl9FfUQ0HrkkBPjX0FDwPN/jGlK0zSlFSUCEgmHr19/jAH9RzDwN0R4lqALYq/yW5snwsuzClhJw9010l34xakX/uuFgdArPFnw/kw1uAFZvYXSB5sb+texFotpQz4/0FIS3nZhWxODOk/+XSH8r51bN+hQ== 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=UsBITjl5kM3ImPCXok1Pl6AQjbFZ/JssMvw2CU756V0=; b=IpiJaJeUZ0zGCMjEjpNSxI0nkFfjNDE8sG4jDrQDGqP3L+pGC/v6+9Ldo1tX2SnNLaG8nomfEbC3mj0WSAt+JF1LY0w0hjV5I2YM59dfpxXacBYJk2VcRjwwQsLRmc6zLfcoJT+yNoHEhCAvsjl4laXMOPH9+FTdN3ZCDzFf8m1PPv99swaRoL+O8I/6c8C9BVg0TPH87sOgDk7mC1wQg1nv1VqjYn5hh87alkFcbxAb2OakNCtFkSgsJ7ukuFkKXyhMmXuwXnEduvw88s2MGGY0Ecabt6et/d6hhIiTY+9HzNuxRlZbcUYs1zaX2l21va8oy8Xcc6tmOmBI5wJyPQ== 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=UsBITjl5kM3ImPCXok1Pl6AQjbFZ/JssMvw2CU756V0=; b=V772ea/Qi1v3id0YqSxipSlQGjjaOZUeBHytqM+JB2Hmh1FpSAxJvAexDIm/CzB/Et1DxDSkzWX9IKfMX7EuOk59C1jlTrqhgcNYMEvSOkweKW/35I1c8zc4/J7AEeWBcJSMYFD6euKYnE8McEzIuJ35bRuDMYqMJ7lXSABztL4= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:34 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:34 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 03/11] net/nfp: add the control message channel Date: Fri, 3 Nov 2023 14:25:58 +0800 Message-Id: <20231103062606.2632012-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: 37cf59c3-e977-4b3a-f84a-08dbdc35d385 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GDdwDarwUx3Cj8aYQ7P8tZ4bQYQCNW7KnK0gp0RcY3nkal8Ml3NYeuK+9FxMB5TQErRZL9EfpomNd+vKs/2YuSuTzlxDkwPXiJbS9FbtG1AvUOVCSsns2LdcOSV3WUKSFtQCLMIDwsLn5zun6hBg28b5poBnP+T0nLxf16GUqj7DpeZRQTltzYepmkBhcOv3zZQSvdsCY0CBy6N/sFtCCqSr6X5Ox3SN/Yq3SkSBH8R+vyjieQzYnnwFQmsFu5ZDt0JbjFW20Fnq7qDYF9venc6wmAgwW/MqQLzSYqJZ6OEqpt/c+sdcDfLK/nN++/pgvHArmihCJu33DSDf5IkQfS64X99Ka0XbfjCqyTiXU0LO9+E97Dp5EOnlJbVyy5Uhrp6xmS+us0gi6gejwt9ElhTAIB0QdBczQC0AGXqdgjsKWBeAwgei5rnVeoc2CF6QxtYSiuS2l/wNIivOMQdCK9n0IvWDcU8bYRX6EXtxwqXTBjHT9otN4fL16pkM54om0zgIzuqnhImlnFLC8aujGdlGuHC02a05goRRZnRZ2LumM6LejlLMTjlrSyNzzQJgkP8z7XWRPgcFbEplgO7B5PbzNVWfCj5Na8i8uMaqzHZehd617+ZLhDAGjQkGV1ib8iuBMQtVvmBTsfQukoC/29cOxOUMt1XDBTUKYF+ZwDQ= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(15650500001)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(83380400001)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PdMPoARRFUMLrDVscBiLk8/0MgPLjs6+2ePLv9KGM4lQPsp3UvKeodIHU2rNf2USQQtapmXmtqo8acNYmwzHwSDdOWFs2U/EhnJiybpwKQu9VVT5NU5jwSE7nSr7Kd7+SFOB5yp5ajEU/ziiMcnOoHQjDb3SjWzjWgPk4LR/G07PJFRgcF6gPZu8OgwjOMzYBFcQp5QDGNG+CW2u8lqC7QZcrc695/nJWZfLrL4CBKbJtykqMgLUu+QSMlDeqavkWklwhChyUBC5OB4tdBGKqJaReeQCCCRXrPj+4gB77cNmSKatC0BvbB9NEnxWjX6NQ4msmGKimmnT5jbiArbCH/NJ5XTGz2Jka5E5CZNgO9jnAFyQ9EXnbtR8afETji1sKQ/4NDiM/NehqqmFoqYyH8/Cz+izCLxvzQQBkUi1JwSdg8ltfaxT2Ot4cqvkdNgvEOZ6oBvJpubYAx/HKcax0OaGRCt1LxJnB328dPPEtcnrHUClvQDVxXkFZt4xjft2lf80tJIhYb5XUp0KwYKwPrRZcnGiGia/Wv8TEKN2IuPKvpPjdltPh7hybvD9j9AVzQrqEEFm6DFb0KvEDH6qQfBhmcorYc7CyrdZzioLzIsj5yAXqGmfM1FncLftopfLnQY2EbuwZWfuy3L2+laQB9ckr6beXOQI/6/HHkLVkyk3ZG4VVJyoPlociJqShx3yRCLX82iXsE+FdnwbZnCK9KyRxfzQjQEycpG5vPKXGuFhn6YwyCe2ZtrdvjihmtJiOgF/WdUfHEzrFjetMEllxGMewjBKKfBUW69tXVXwWUFSp94MinYTwfFZNcRL2/AiZhpoTguHe3tH4TOih8mk7w2LAhjYLEVE5nMKnTm7dLtM5JjU2F7suf+/as5Ea9/G1ZaloKZ0ji+RfGnVTZUzbck8ku+h/gvPTxIgzb/VGXHLAJYSA9f5jL1cCBP/TvlLzaedMH/ec0RJDEUbkSPoK9vMh212025OXKk6JpeH9KMKjF/VgMO5HE5JSZrkLZ7ri6r/mJIPSaJQ887FbWj4X0IBosPBoNOj8u6Qzcto62fFyinGolp/MnW6xjaugNrfsijZqkzv/EVJOL8c7tbinSHUKpS7GpHhBVUXFaqzZGdVz0sL9Zqv9yWbbOl4v9Nsr0ILUh0WdMPArX76BMcXEiq5GmxvuCOpsDBuTWpv5jrUnwwB++/JhV44p34toqk9jX0AAIBmZpy4pFQafirP19Mkh6aeWR15N7uPaM2Iq1fWhEnhyq4Ay8hbtDcoTJb66D7FC6Q1jxH0VA1r+LnoUgb2zsTg6my/18v79zd6XGxwtevFigzvZZzZSgRCORFGUQL1KbW/gFHkBntRi90/ZreK5BtqiA0BFxo6SowKQB1Bh1OmsdzE/TeBxSClFgycF7aFBaJFidDRYwckuFcRtubHa83YwUd841SA5jqywxU630beMxiUGS+lTldqwdoUejImBThUOpbwBYLoLxrY0uf9Wn2rKh7OgYaTXZrrW9oHBKq8LU8GiuE9RNkHBWwnU0eFdz4TbNowqH3vTy3CvbiM/UUUPXtjqWwy5FeA03FZoW2qnRf7VYIHQyLb5FTGpXg7HnGWh19ZZYcjmJJgIA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37cf59c3-e977-4b3a-f84a-08dbdc35d385 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:34.6291 (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: xXmvNs/kqpgpJzeQy3hFkJclidgrXEmnG7a6J/oChqODje68DzHNnsRa598WllRWpZdzP/6XTIuED59VfFxyO8WUisKzuDUzA/WkLKYy28g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Using the mailbox, which serves as the control message channel between driver and CoreNIC firmware. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/meson.build | 1 + drivers/net/nfp/nfp_net_cmsg.c | 66 ++++++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_cmsg.h | 37 +++++++++++++++++++ drivers/net/nfp/nfp_net_ctrl.h | 1 + 4 files changed, 105 insertions(+) create mode 100644 drivers/net/nfp/nfp_net_cmsg.c create mode 100644 drivers/net/nfp/nfp_net_cmsg.h diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 0d0a0bd8f4..46be6f60cd 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -34,6 +34,7 @@ sources = files( 'nfp_ipsec.c', 'nfp_logs.c', 'nfp_mtr.c', + 'nfp_net_cmsg.c', 'nfp_net_common.c', 'nfp_net_ctrl.c', 'nfp_net_flow.c', diff --git a/drivers/net/nfp/nfp_net_cmsg.c b/drivers/net/nfp/nfp_net_cmsg.c new file mode 100644 index 0000000000..f2f694be0b --- /dev/null +++ b/drivers/net/nfp/nfp_net_cmsg.c @@ -0,0 +1,66 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_net_cmsg.h" + +#include + +#include "nfp_logs.h" + +struct nfp_net_cmsg * +nfp_net_cmsg_alloc(uint32_t msg_size) +{ + struct nfp_net_cmsg *cmsg; + + cmsg = rte_zmalloc(NULL, msg_size, 0); + if (cmsg == NULL) { + PMD_DRV_LOG(ERR, "Failed malloc memory."); + return NULL; + } + + return cmsg; +} + +void +nfp_net_cmsg_free(struct nfp_net_cmsg *cmsg) +{ + rte_free(cmsg); +} + +int +nfp_net_cmsg_xmit(struct nfp_net_hw *hw, + struct nfp_net_cmsg *cmsg, + uint32_t msg_size) +{ + int ret; + uint32_t i; + + for (i = 0; i < msg_size; i++) + nn_cfg_writel(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i, *((uint32_t *)cmsg + i)); + + ret = nfp_net_mbox_reconfig(hw, NFP_NET_CFG_MBOX_CMD_FLOW_STEER); + switch (ret) { + case NFP_NET_CFG_MBOX_RET_FS_OK: + break; + case NFP_NET_CFG_MBOX_RET_FS_ERR_NO_SPACE: + PMD_DRV_LOG(ERR, "Not enough space for cmd %u", cmsg->cmd); + ret = -ENOSPC; + break; + case NFP_NET_CFG_MBOX_RET_FS_ERR_MASK_FULL: + PMD_DRV_LOG(ERR, "The mask table is full for cmd %u", cmsg->cmd); + ret = -EXFULL; + break; + case NFP_NET_CFG_MBOX_RET_FS_ERR_CMD_INVALID: + PMD_DRV_LOG(ERR, "The mbox cmd %u invalid", cmsg->cmd); + ret = -EINVAL; + break; + default: + PMD_DRV_LOG(ERR, "Unrecognized mbox cmd %u", cmsg->cmd); + ret = -EINVAL; + break; + } + + return ret; +} diff --git a/drivers/net/nfp/nfp_net_cmsg.h b/drivers/net/nfp/nfp_net_cmsg.h new file mode 100644 index 0000000000..15e0bb60d8 --- /dev/null +++ b/drivers/net/nfp/nfp_net_cmsg.h @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_NET_CMSG_H__ +#define __NFP_NET_CMSG_H__ + +#include "nfp_net_common.h" + +enum nfp_net_cfg_mbox_cmd { + NFP_NET_CFG_MBOX_CMD_FS_ADD_V4, /* Add Flow Steer rule for V4 table */ + NFP_NET_CFG_MBOX_CMD_FS_DEL_V4, /* Delete Flow Steer rule for V4 table */ + NFP_NET_CFG_MBOX_CMD_FS_ADD_V6, /* Add Flow Steer rule for V4 table */ + NFP_NET_CFG_MBOX_CMD_FS_DEL_V6, /* Delete Flow Steer rule for V4 table */ + NFP_NET_CFG_MBOX_CMD_FS_ADD_ETHTYPE, /* Add Flow Steer rule for Ethtype table */ + NFP_NET_CFG_MBOX_CMD_FS_DEL_ETHTYPE, /* Delete Flow Steer rule for Ethtype table */ +}; + +enum nfp_net_cfg_mbox_ret { + NFP_NET_CFG_MBOX_RET_FS_OK, /* No error happen */ + NFP_NET_CFG_MBOX_RET_FS_ERR_NO_SPACE, /* Return error code no space */ + NFP_NET_CFG_MBOX_RET_FS_ERR_MASK_FULL, /* Return error code mask table full */ + NFP_NET_CFG_MBOX_RET_FS_ERR_CMD_INVALID, /* Return error code invalid cmd */ +}; + +/* 4B cmd, and up to 500B data. */ +struct nfp_net_cmsg { + uint32_t cmd; /**< One of nfp_net_cfg_mbox_cmd */ + uint32_t data[0]; +}; + +struct nfp_net_cmsg *nfp_net_cmsg_alloc(uint32_t msg_size); +void nfp_net_cmsg_free(struct nfp_net_cmsg *cmsg); +int nfp_net_cmsg_xmit(struct nfp_net_hw *hw, struct nfp_net_cmsg *cmsg, uint32_t msg_size); + +#endif /* __NFP_NET_CMSG_H__ */ diff --git a/drivers/net/nfp/nfp_net_ctrl.h b/drivers/net/nfp/nfp_net_ctrl.h index ee1b784bb1..7ac0f89571 100644 --- a/drivers/net/nfp/nfp_net_ctrl.h +++ b/drivers/net/nfp/nfp_net_ctrl.h @@ -92,6 +92,7 @@ #define NFP_NET_CFG_MBOX_SIMPLE_VAL 0x8 #define NFP_NET_CFG_MBOX_CMD_IPSEC 3 +#define NFP_NET_CFG_MBOX_CMD_FLOW_STEER 10 /* * TLV capabilities From patchwork Fri Nov 3 06:25:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133810 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6056E43275; Fri, 3 Nov 2023 07:27:03 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C9EBF42DCD; Fri, 3 Nov 2023 07:26:40 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2112.outbound.protection.outlook.com [40.107.93.112]) by mails.dpdk.org (Postfix) with ESMTP id 7918F42D35 for ; Fri, 3 Nov 2023 07:26:38 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FBHemgOHQSgsJ7rqCTpxjhnG2Ea7CBCr+jt2qkoPros6VzOdZHWsVVTnFhVpNIWGAxjIroa8z981mITfhAk5qVjdrc6n2Cb/djCF/cxNz64rVpm0Oyy0K8ik11YRs3f/oZDXYwauyMaC4iJi1J7A98B9cpbUx8qMJG8lLEp25IhtrQcsWkEtdRfBo3Nd+fQNx/auvQX15XT9n8zkZMpfatsFWaEc7ssZC0js2hb1TBiBhnvm9S4PCQs/rHOGXzRWT4Dcw4YEYV+WK3O4Sf81yXf7yvDIkj27JzrJJisQCbOo7UEs1zm/PkhgkZWG0HVBRg2U38mKgtkzby7qG/0SaA== 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=ceMV+MrpGUpYXxDZbJQFvXi/mL4FVWpG6B9pSrH9EUg=; b=hn7B88WHcpb3emQx3X0GWeLdePTadZikH4yH3FIevVuiJnZDYG7k+j1vz+LRWwWA/YiUAbebEoS7N+Kau24mMewuF+GVKxnN4H0y4zkgYSjCN4dkRRMpcwU4U9xhG6prDcXXei7EEqNKu5NZf+R4QxO1mb9eSMi4QXqK9fZedzUxjSoxAbTb0UQQ1DQMXLWzDyIh5QnKApP0BsbXdsw17plY8y8hCj5P7F8R8TKWlIBvRXTDTK9gqZLYsZUDWHdvIWStTH32tYILbS8X1Q/EBoX9uUKpfalBR/X3jzgJD5gBxHo/11UU7ham12CKjpEbQuYEJ2raaUvLbhpOvBm7FQ== 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=ceMV+MrpGUpYXxDZbJQFvXi/mL4FVWpG6B9pSrH9EUg=; b=j5KaRX1ytqDSVEpUCj/7UtDohTdHQ3nsjzsHRosmcjuPEwRpkdYDTNdtF1vNoHYTAWGHBXQ7Geolqw0bHQWYSW7Kpq9dCMoQPuAm/entUr2RCMHKsoaCErvpio/Iq4a4eCpROC8eiRhqi6TVP83GsF5QUnfjIAQdgGYg1nX1sD0= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:36 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:36 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 04/11] net/nfp: support flow API for CoreNIC firmware Date: Fri, 3 Nov 2023 14:25:59 +0800 Message-Id: <20231103062606.2632012-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: d65fb47b-3353-4557-d794-08dbdc35d4a8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dAgJtL4JrKk0w4bOf1fe4iaq+gJx6FhDr3yppRhaK58KHERJ28Vd1lsd1f0r+XJgbC49Di7gctzdeXN+dRVVgQIXddq+9/OM2asIoWI8cE7xWSdANcxcDwlDGoEGAiSR316sYP9jY8vlqs376L01U99DDpXgB6rtZon1HAaNKz7ZLRXSN49mZ8hQ4RLfUWrYq/kOb+j8qLdzGDpo0B6X3YNMS3bKs6MODk+ZOiWw/LZxH0eoqnNBmnzu50pgnO7u4Lnd8f9Xaf2zFfflFCUKy1YUP+JXuvDVDsGliIH4l/ouGSxnwa0YHntZW9enPwiWUy0wvnkw2cqdxPUhyZZGxu41tKPOZCN025y4j78/JX8osODU1DP323HMzrHOHoGKT1O+/jWgpBfExxsJc2I5JFfC7C7XTyAB7flSUE5qYmQ7td7za1Kks9AOBu7QCdtJp+A5SvPBJLe/kC7fNPtVzcgxYS5LPDu/T0nGm4nY8aN/B61Amk8vcfCQQijYpiHX9xCZNgnUEYlPG9tpGMOP1NHlKHVyAaM2pa3+sBP2SAYU6sMV7R2DxfHD6WueA1PdXoZLMaNP0zLIHhMTcDm1wIhm42TWAjQ78VHvt8tIPzUKQ9jZkw5MXfN64Mj3jrUB1Ryv24tTp9nQ0XXBc/ehVcVputfPMvSavtoHMeaQ0kA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(30864003)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(83380400001)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?y16Jj7aglouzPWL2auwecEBeJ2qf?= =?utf-8?q?U3fUCakD4zsKPZL9B6fZ/lb7lI3JU7z++Z0QzEDloWbmMVyKmbV8nt/GhSmyPobJw?= =?utf-8?q?qMaeasSdWdP9GXgbrb+P1gVh4niHX1aY3Iwnd+5rvnk2NgOrQIF2oYOb889S1IsPX?= =?utf-8?q?DO/SJf+MJ4j6xU/1mMlYUnQTF1qmN3hfa3nwDU8LbGziGkv8xHZVA/tHFHyMNXH/i?= =?utf-8?q?pdqkvmg6LJo/Ej0DRIALU2Zi5RRpJNw0arjagMELIMlrP881aA5MXl6hYvLJ99G2t?= =?utf-8?q?8yqru2WMK4keX3f12o8MrPEsHqAUyL/9y4kV84dE3mV68C1VT/Fi19bXdVdAOm4xh?= =?utf-8?q?pggvb5OCmS4g+nIXErgVoRAGRKOwK+f697fk83TK6wkavvzS6pEwQke7MU3br26dk?= =?utf-8?q?P3SuzWVipVBD/bPD1a0V9x5+wvjWqyUehXs81Ez2dEhp/F4x3KHLHIkXaf3anQEj3?= =?utf-8?q?cxYQKGh6hnyeQKuZ0ml5UlRqzNOJ3dzeXRm5fRKaePryK2gm2G4eWK1ZK03NPIiEV?= =?utf-8?q?aQmUHSZhUzJ+uiT3Hq5a8W4c7koQ+5HS8dBVVEtaxFmaIZgrXe0wELmKTa4qdjd38?= =?utf-8?q?PW3Flr4U71cy/2jW6cVp8eCpg3P+Iu8qxs+s7BeFYaaIPNX4VCdIdb8Ctme9ioDSu?= =?utf-8?q?TJSjVL9LVahpABoqn1gzF8Pqv9l73Gs/UEIknoG2S+LNc+O9fbJg+HPY5qYmsuy27?= =?utf-8?q?ERJRnfpDqtET+BgAyK65DB6x0OVKRdaO7fJgxOS0X4YWzbfcrfAvL6omfrQlFM/jw?= =?utf-8?q?s2I7TTmjDyvmFjgNkbre6uVHW4H39D28CAmeKixaopLVclNi5M6JT1MrZL/LsJf2S?= =?utf-8?q?wm7+8IjfDZRt73ZooOiS1QBsq3oXpt10rztZJetbPMEqul1BbK+FM1Fpg2L+eKqxy?= =?utf-8?q?9B9zz7ZmkeU/W53YeGDp+7f0Ekrrw6bP8uKgNzCUqSB+XntLBuEKJCSvrNC7ZPhpY?= =?utf-8?q?iZgULElQKjWpquGlWSn/c1LSLQqrG6e4oLOAAho1VQa3kf0SWxPP9u5VCOFv4TKqG?= =?utf-8?q?coUuNj/JcHIxTs6sxIYDws/lsQS4m747u6cOhhF+ZP/f9JH8RKqAkPrsFE3FkaV2T?= =?utf-8?q?v8hv7ZQM5+zv35WqiMWVU3mwka/RHqngX5focPm6Oa5YSU/n7ZIEmc8uumVdSl7r9?= =?utf-8?q?B0vEQGyj3PvohWTA+rOZRcZ1Xw7uSCMcVhf0Wlx91w8+5iYYbkvsYJ/pwYC7wMUdz?= =?utf-8?q?m39636Tz9UKkxLmleC6/c3XfNFyPxoXnK7n+esZ4R0ZEXAJj5ToQvP7MU+vHJtvO+?= =?utf-8?q?Alyk9wmyaQqv24X1qgiHLszn65ulRGPmunC50pgxxAUgLvnU/E3c0Q77W4YokpB+X?= =?utf-8?q?jwx0fx+iskUi/mmCbo2sabyzF3mfz8uZmO6v2Cexgxu2a+Gaql4+/k/Z5oyyxUqAm?= =?utf-8?q?pKrCSiT1hqz+30+Smcu+G+ZhzJ1ftxvsCJ9NH4+uL77POdHG90XYhF+Td1W15BmcW?= =?utf-8?q?Zuxuec+hkZnYXtWvETjBSAuNY71XZi9N1Tt2Pd2bTIfvJFbwF+Vfb723ejVz4ACRy?= =?utf-8?q?OBP+6iJO9GOaGkrgg85aKARwhySkevO0Jw=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: d65fb47b-3353-4557-d794-08dbdc35d4a8 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:36.4920 (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: NRQcOAQUhQ70SOH0uPnb2MNvDWqgjNKo7e2aaPyaNdAOcCWaFoPuVH548biF30LsGlxLtX8fplk4ZYbAKrSo4rVjZuV38CX8FEOmwwr2SXM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the flow validate/create/destroy/flush API of nfp PMD with CoreNIC firmware. The flow create API construct a control cmsg and send it to firmware, then add this flow to the hash table. The flow destroy API construct a control cmsg and send it to firmware, then delete this flow from the hash table. The flow flush API just iterate the flows in hash table and call the flow destroy API. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_ethdev.c | 1 + drivers/net/nfp/nfp_net_cmsg.h | 28 +++ drivers/net/nfp/nfp_net_common.h | 1 + drivers/net/nfp/nfp_net_flow.c | 409 ++++++++++++++++++++++++++++++- drivers/net/nfp/nfp_net_flow.h | 2 + 5 files changed, 434 insertions(+), 7 deletions(-) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index af5e5d333a..37dae8a82a 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -530,6 +530,7 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = { .fw_version_get = nfp_net_firmware_version_get, .flow_ctrl_get = nfp_net_flow_ctrl_get, .flow_ctrl_set = nfp_net_flow_ctrl_set, + .flow_ops_get = nfp_net_flow_ops_get, }; static inline void diff --git a/drivers/net/nfp/nfp_net_cmsg.h b/drivers/net/nfp/nfp_net_cmsg.h index 15e0bb60d8..b526feaff2 100644 --- a/drivers/net/nfp/nfp_net_cmsg.h +++ b/drivers/net/nfp/nfp_net_cmsg.h @@ -8,6 +8,34 @@ #include "nfp_net_common.h" +#define NFP_NET_CMSG_ACTION_DROP (0x1 << 0) /* Drop action */ +#define NFP_NET_CMSG_ACTION_QUEUE (0x1 << 1) /* Queue action */ +#define NFP_NET_CMSG_ACTION_MARK (0x1 << 2) /* Mark action */ + +/** + * Action data + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * Word +-------------------------------+-------------------------------+ + * 0 | | Queue | Actions | + * +-----------------+-------------+-------------------------------+ + * 1 | Mark ID | + * +---------------------------------------------------------------+ + * + * Queue – Queue ID, 7 bits. + * Actions – An action bitmap, each bit represents an action type: + * - Bit 0: Drop action. Drop the packet. + * - Bit 1: Queue action. Use the queue specified by “Queue” field. + * If not set, the queue is usually specified by RSS. + * - Bit 2: Mark action. Mark packet with Mark ID. + */ +struct nfp_net_cmsg_action { + uint16_t action; + uint8_t queue; + uint8_t spare; + uint16_t mark_id; +}; + enum nfp_net_cfg_mbox_cmd { NFP_NET_CFG_MBOX_CMD_FS_ADD_V4, /* Add Flow Steer rule for V4 table */ NFP_NET_CFG_MBOX_CMD_FS_DEL_V4, /* Delete Flow Steer rule for V4 table */ diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 48791af93a..464a191a9c 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -114,6 +114,7 @@ struct nfp_net_priv { uint32_t hash_seed; /**< Hash seed for hash tables in this structure. */ struct rte_hash *flow_table; /**< Hash table to store flow rules. */ uint16_t flow_count; /**< Flow count in hash table */ + bool flow_position[NFP_NET_FLOW_LIMIT]; /**< Flow position array */ }; struct nfp_app_fw_nic { diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index 6c02b0f82e..88386a31f0 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -11,8 +11,9 @@ #include #include "nfp_logs.h" +#include "nfp_net_cmsg.h" -__rte_unused static int +static int nfp_net_flow_table_add(struct nfp_net_priv *priv, struct rte_flow *nfp_flow) { @@ -27,7 +28,7 @@ nfp_net_flow_table_add(struct nfp_net_priv *priv, return 0; } -__rte_unused static int +static int nfp_net_flow_table_delete(struct nfp_net_priv *priv, struct rte_flow *nfp_flow) { @@ -42,7 +43,7 @@ nfp_net_flow_table_delete(struct nfp_net_priv *priv, return 0; } -__rte_unused static struct rte_flow * +static struct rte_flow * nfp_net_flow_table_search(struct nfp_net_priv *priv, struct rte_flow *nfp_flow) { @@ -59,11 +60,58 @@ nfp_net_flow_table_search(struct nfp_net_priv *priv, return flow_find; } -__rte_unused static struct rte_flow * -nfp_net_flow_alloc(uint32_t match_len, +static int +nfp_net_flow_position_acquire(struct nfp_net_priv *priv, + uint32_t priority, + struct rte_flow *nfp_flow) +{ + uint32_t i; + + if (priority != 0) { + i = NFP_NET_FLOW_LIMIT - priority - 1; + + if (priv->flow_position[i]) { + PMD_DRV_LOG(ERR, "There is already a flow rule in this place."); + return -EAGAIN; + } + + priv->flow_position[i] = true; + nfp_flow->position = priority; + return 0; + } + + for (i = 0; i < NFP_NET_FLOW_LIMIT; i++) { + if (!priv->flow_position[i]) { + priv->flow_position[i] = true; + break; + } + } + + if (i == NFP_NET_FLOW_LIMIT) { + PMD_DRV_LOG(ERR, "The limited flow number is reach."); + return -ERANGE; + } + + nfp_flow->position = NFP_NET_FLOW_LIMIT - i - 1; + + return 0; +} + +static void +nfp_net_flow_position_free(struct nfp_net_priv *priv, + struct rte_flow *nfp_flow) +{ + priv->flow_position[nfp_flow->position] = false; +} + +static struct rte_flow * +nfp_net_flow_alloc(struct nfp_net_priv *priv, + uint32_t priority, + uint32_t match_len, uint32_t action_len, uint32_t port_id) { + int ret; char *data; struct rte_flow *nfp_flow; struct nfp_net_flow_payload *payload; @@ -76,6 +124,10 @@ nfp_net_flow_alloc(uint32_t match_len, if (data == NULL) goto free_flow; + ret = nfp_net_flow_position_acquire(priv, priority, nfp_flow); + if (ret != 0) + goto free_payload; + nfp_flow->port_id = port_id; payload = &nfp_flow->payload; payload->match_len = match_len; @@ -85,19 +137,362 @@ nfp_net_flow_alloc(uint32_t match_len, return nfp_flow; +free_payload: + rte_free(data); free_flow: rte_free(nfp_flow); return NULL; } -__rte_unused static void -nfp_net_flow_free(struct rte_flow *nfp_flow) +static void +nfp_net_flow_free(struct nfp_net_priv *priv, + struct rte_flow *nfp_flow) { + nfp_net_flow_position_free(priv, nfp_flow); rte_free(nfp_flow->payload.match_data); rte_free(nfp_flow); } +static int +nfp_net_flow_calculate_items(const struct rte_flow_item items[], + uint32_t *match_len) +{ + const struct rte_flow_item *item; + + for (item = items; item->type != RTE_FLOW_ITEM_TYPE_END; ++item) { + switch (item->type) { + default: + PMD_DRV_LOG(ERR, "Can't calculate match length"); + *match_len = 0; + return -ENOTSUP; + } + } + + return -EINVAL; +} + +static void +nfp_net_flow_process_priority(__rte_unused struct rte_flow *nfp_flow, + uint32_t match_len) +{ + switch (match_len) { + default: + break; + } +} + +static struct rte_flow * +nfp_net_flow_setup(struct rte_eth_dev *dev, + const struct rte_flow_attr *attr, + const struct rte_flow_item items[], + __rte_unused const struct rte_flow_action actions[]) +{ + int ret; + char *hash_data; + uint32_t port_id; + uint32_t action_len; + struct nfp_net_hw *hw; + uint32_t match_len = 0; + struct nfp_net_priv *priv; + struct rte_flow *nfp_flow; + struct rte_flow *flow_find; + struct nfp_app_fw_nic *app_fw_nic; + + hw = dev->data->dev_private; + app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(hw->pf_dev->app_fw_priv); + priv = app_fw_nic->ports[hw->idx]->priv; + + ret = nfp_net_flow_calculate_items(items, &match_len); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Key layers calculate failed."); + return NULL; + } + + action_len = sizeof(struct nfp_net_cmsg_action); + port_id = ((struct nfp_net_hw *)dev->data->dev_private)->nfp_idx; + + nfp_flow = nfp_net_flow_alloc(priv, attr->priority, match_len, action_len, port_id); + if (nfp_flow == NULL) { + PMD_DRV_LOG(ERR, "Alloc nfp flow failed."); + return NULL; + } + + /* Calculate and store the hash_key for later use */ + hash_data = nfp_flow->payload.match_data; + nfp_flow->hash_key = rte_jhash(hash_data, match_len + action_len, + priv->hash_seed); + + /* Find the flow in hash table */ + flow_find = nfp_net_flow_table_search(priv, nfp_flow); + if (flow_find != NULL) { + PMD_DRV_LOG(ERR, "This flow is already exist."); + goto free_flow; + } + + priv->flow_count++; + + nfp_net_flow_process_priority(nfp_flow, match_len); + + return nfp_flow; + +free_flow: + nfp_net_flow_free(priv, nfp_flow); + + return NULL; +} + +static int +nfp_net_flow_teardown(struct nfp_net_priv *priv, + __rte_unused struct rte_flow *nfp_flow) +{ + priv->flow_count--; + + return 0; +} + +static int +nfp_net_flow_offload(struct nfp_net_hw *hw, + struct rte_flow *flow, + bool delete_flag) +{ + int ret; + char *tmp; + uint32_t msg_size; + struct nfp_net_cmsg *cmsg; + + msg_size = sizeof(uint32_t) + flow->payload.match_len + + flow->payload.action_len; + cmsg = nfp_net_cmsg_alloc(msg_size); + if (cmsg == NULL) { + PMD_DRV_LOG(ERR, "Alloc cmsg failed."); + return -ENOMEM; + } + + cmsg->cmd = flow->payload.cmsg_type; + if (delete_flag) + cmsg->cmd++; + + tmp = (char *)cmsg->data; + rte_memcpy(tmp, flow->payload.match_data, flow->payload.match_len); + tmp += flow->payload.match_len; + rte_memcpy(tmp, flow->payload.action_data, flow->payload.action_len); + + ret = nfp_net_cmsg_xmit(hw, cmsg, msg_size); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Send cmsg failed."); + ret = -EINVAL; + goto free_cmsg; + } + +free_cmsg: + nfp_net_cmsg_free(cmsg); + + return ret; +} + +static int +nfp_net_flow_validate(struct rte_eth_dev *dev, + const struct rte_flow_attr *attr, + const struct rte_flow_item items[], + const struct rte_flow_action actions[], + struct rte_flow_error *error) +{ + int ret; + struct nfp_net_hw *hw; + struct rte_flow *nfp_flow; + struct nfp_net_priv *priv; + struct nfp_app_fw_nic *app_fw_nic; + + hw = dev->data->dev_private; + app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(hw->pf_dev->app_fw_priv); + priv = app_fw_nic->ports[hw->idx]->priv; + + nfp_flow = nfp_net_flow_setup(dev, attr, items, actions); + if (nfp_flow == NULL) { + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "This flow can not be offloaded."); + } + + ret = nfp_net_flow_teardown(priv, nfp_flow); + if (ret != 0) { + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "Flow resource free failed."); + } + + nfp_net_flow_free(priv, nfp_flow); + + return 0; +} + +static struct rte_flow * +nfp_net_flow_create(struct rte_eth_dev *dev, + const struct rte_flow_attr *attr, + const struct rte_flow_item items[], + const struct rte_flow_action actions[], + struct rte_flow_error *error) +{ + int ret; + struct nfp_net_hw *hw; + struct rte_flow *nfp_flow; + struct nfp_net_priv *priv; + struct nfp_app_fw_nic *app_fw_nic; + + hw = dev->data->dev_private; + app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(hw->pf_dev->app_fw_priv); + priv = app_fw_nic->ports[hw->idx]->priv; + + nfp_flow = nfp_net_flow_setup(dev, attr, items, actions); + if (nfp_flow == NULL) { + rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "This flow can not be offloaded."); + return NULL; + } + + /* Add the flow to flow hash table */ + ret = nfp_net_flow_table_add(priv, nfp_flow); + if (ret != 0) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "Add flow to the flow table failed."); + goto flow_teardown; + } + + /* Add the flow to hardware */ + ret = nfp_net_flow_offload(hw, nfp_flow, false); + if (ret != 0) { + rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "Add flow to firmware failed."); + goto table_delete; + } + + return nfp_flow; + +table_delete: + nfp_net_flow_table_delete(priv, nfp_flow); +flow_teardown: + nfp_net_flow_teardown(priv, nfp_flow); + nfp_net_flow_free(priv, nfp_flow); + + return NULL; +} + +static int +nfp_net_flow_destroy(struct rte_eth_dev *dev, + struct rte_flow *nfp_flow, + struct rte_flow_error *error) +{ + int ret; + struct nfp_net_hw *hw; + struct nfp_net_priv *priv; + struct rte_flow *flow_find; + struct nfp_app_fw_nic *app_fw_nic; + + hw = dev->data->dev_private; + app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(hw->pf_dev->app_fw_priv); + priv = app_fw_nic->ports[hw->idx]->priv; + + /* Find the flow in flow hash table */ + flow_find = nfp_net_flow_table_search(priv, nfp_flow); + if (flow_find == NULL) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "Flow does not exist."); + ret = -EINVAL; + goto exit; + } + + /* Delete the flow from hardware */ + ret = nfp_net_flow_offload(hw, nfp_flow, true); + if (ret != 0) { + rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "Delete flow from firmware failed."); + ret = -EINVAL; + goto exit; + } + + /* Delete the flow from flow hash table */ + ret = nfp_net_flow_table_delete(priv, nfp_flow); + if (ret != 0) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "Delete flow from the flow table failed."); + ret = -EINVAL; + goto exit; + } + + ret = nfp_net_flow_teardown(priv, nfp_flow); + if (ret != 0) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "Flow teardown failed."); + ret = -EINVAL; + goto exit; + } + +exit: + nfp_net_flow_free(priv, nfp_flow); + + return ret; +} + +static int +nfp_net_flow_flush(struct rte_eth_dev *dev, + struct rte_flow_error *error) +{ + int ret = 0; + void *next_data; + uint32_t iter = 0; + const void *next_key; + struct nfp_net_hw *hw; + struct rte_flow *nfp_flow; + struct rte_hash *flow_table; + struct nfp_app_fw_nic *app_fw_nic; + + hw = dev->data->dev_private; + app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(hw->pf_dev->app_fw_priv); + flow_table = app_fw_nic->ports[hw->idx]->priv->flow_table; + + while (rte_hash_iterate(flow_table, &next_key, &next_data, &iter) >= 0) { + nfp_flow = next_data; + ret = nfp_net_flow_destroy(dev, nfp_flow, error); + if (ret != 0) + break; + } + + return ret; +} + +static const struct rte_flow_ops nfp_net_flow_ops = { + .validate = nfp_net_flow_validate, + .create = nfp_net_flow_create, + .destroy = nfp_net_flow_destroy, + .flush = nfp_net_flow_flush, +}; + +int +nfp_net_flow_ops_get(struct rte_eth_dev *dev, + const struct rte_flow_ops **ops) +{ + struct nfp_net_hw *hw; + + if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) { + *ops = NULL; + PMD_DRV_LOG(ERR, "Port is a representor."); + return -EINVAL; + } + + hw = dev->data->dev_private; + if ((hw->super.cap_ext & NFP_NET_CFG_CTRL_FLOW_STEER) == 0) { + *ops = NULL; + return 0; + } + + *ops = &nfp_net_flow_ops; + + return 0; +} + int nfp_net_flow_priv_init(struct nfp_pf_dev *pf_dev, uint16_t port) diff --git a/drivers/net/nfp/nfp_net_flow.h b/drivers/net/nfp/nfp_net_flow.h index 5ec80ba3b6..558cd0e2bb 100644 --- a/drivers/net/nfp/nfp_net_flow.h +++ b/drivers/net/nfp/nfp_net_flow.h @@ -20,9 +20,11 @@ struct rte_flow { struct nfp_net_flow_payload payload; uint32_t hash_key; uint32_t port_id; + uint32_t position; /**< Use as priority */ }; int nfp_net_flow_priv_init(struct nfp_pf_dev *pf_dev, uint16_t port); void nfp_net_flow_priv_uninit(struct nfp_pf_dev *pf_dev, uint16_t port); +int nfp_net_flow_ops_get(struct rte_eth_dev *dev, const struct rte_flow_ops **ops); #endif /* __NFP_NET_FLOW_H__ */ From patchwork Fri Nov 3 06:26:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133811 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C92DC43275; Fri, 3 Nov 2023 07:27:13 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 57A7E42DE0; Fri, 3 Nov 2023 07:26:42 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2132.outbound.protection.outlook.com [40.107.93.132]) by mails.dpdk.org (Postfix) with ESMTP id 4AD0D402E9 for ; Fri, 3 Nov 2023 07:26:40 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ju/ZiaYkI38QIyQUUWL3CCG8NHPYf+Lz2z6DlOy1QoBpVSwAXNQ0xcsiAJtDdr+qNN3jkOF5Y+MXagJivKV0QwccQX1EZijpfic4cg5ygNw1khKHnEPjo5OZWu0cpLLQcLBv6X3TGTOfpWNtCp1+QDT3tCdGNrb414C43BkjGCf5IB/EDlwY1gzCoOi3Yom54eOkz28+C3rhh3gllKAuls2QWGYD19r2z3+lKBurJJpD0SOr7ubbLgjxAh3iqmuXyUtVLo8pWqQRI2p+4mG8LdpYHoHVs5MtGjCVIKAPEbT3/hKmYf6n9DxcDw1dHtLazn1gtwVcVj+m1o2w5T3Sug== 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=Oo8EH65+7oBYBjTBhR9VJl2tF+sLqc07bEhhgfrrYd4=; b=VPy9E08buJ2RkQhOz1FYsG5nRiNV+RxAuqhhjnpkypKVrj5iWfIWEcHChk5i9QPWzclD5g98NRjLAJfhC3gdxkKNTpFFNBEdnZnAvqUbtcgwj16iZeJg6qann5EJcscPOwLpdBBDuWlpERfVSYEQvUfgB825pXJUV4aVq+iNsNoDK4UTsLQpS+E2O65Al+ieh7HFHoka1Ji68EAmApKM6zyk/WHlrpoLkiJSy4WHH8w+wlGCtiFuJdBsKMICcakyvC3SDvZPlyyO/8ByOk+jpO8MGmF9C2Owc7/LpbGgrkPG7YM8exU//XJUQz0+3yzK++VXAljIyvRRkoeZr0oPJw== 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=Oo8EH65+7oBYBjTBhR9VJl2tF+sLqc07bEhhgfrrYd4=; b=wY1EM3fmaw5wWGqebfCSI5+3XSkht8xmOr+VgfU9R3qAfC03hP9yON673QWIb0gp/VKZkT8QdmCBL/PE8PE+hydrtUbdawDbtp3eMOCFZ/QG8GyUgmQlCziLPHMp+UuS5L8eQWXMh4xXPt/fcO4Z2reamALqmpy204MA0oR5hL0= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:38 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:38 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 05/11] net/nfp: support Ethernet flow item Date: Fri, 3 Nov 2023 14:26:00 +0800 Message-Id: <20231103062606.2632012-6-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: 22607007-6e70-4839-8fbb-08dbdc35d5c4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Fux63JrNy1dqAIUXK4Lu1jXeWbFsSC1IS6wr8iEhV3Cjr0BtVOQetBYKQC6mw0lrBSkGek8ddukJfq4UmEpwlAv4sAsap2pRrgnyxSA1EqTr+zBBut5yrdlCCymqptIoOYX8AZZtkPmfnL3Gc0Db53FwEqoDZt3PCuVUVUPh8k1feXha5l2CWm7KZ33xdEdSKlrFibaF2g6DD+0Rwa6Jz177fYAvxcYYMoKh8n1jPClyIUObHMWOqVmeYR/Oiu05sHCtfh3qe0s5cbYn9heaWbfsq8WetTpe+PpOZ94LDFE2kQcxqWhdX9WaO++l+7rrnrrBIkLSPRrzErK74pujXK7NcOsdujCqOAG3uxaRiMrGshjohchkHGiiaXY2k5z3/VRW+NT+T3pBOYacScIpxRJp59XtvDTwdycN1cZ/aeiyTeXMJohyKyNhovQsOko8k5g/tOhr61qoZIVeJ7QENOVet2PSVCNj05yy9tW3ydE/+CQ0uVrwgGeKZF43901xPQdJ+Bpd9ZZNV+b3lDTPQp9o350VZZ9sLC8J2JG9/gWCri+gW0Qwq7A9MrTG2XIHCjKPAbpjgymP8e32Z6FMZO6/xGJ2oK1/yXGmpcilZhntofIvNeP974mchjYphffzN3O1MoRTarb3ixFUldNtqRBJGNa+MyplRoFk3JQHI9Y= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(83380400001)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ePpI+yi/DgsAF7rowtMSY/iFrdJ8RrluvoISVNTg2eEfgbnbBuKujPDVl8qEHdnW8sghZHwQDWJapLIFHzfuiv1kXNAIM9/g+8WNFgpUCaYVnd2oUbUDsfFlbSq4/2MR30eelc5B8IKSyxFQIxDjfUsLL2iar+XType37BxXxhOS4peiEE0ClG2G5oN2nJTHnGfEd86yrMazaSDCKEmRZUC7041sekOdoEkHeWI2AZSlxmm0/ot5125BYTK3ZrVZodHm/TxpmGffjvi0FU9XT5BYGLYBrrMiATePfOM61cuLdAMZ/NMZ6JT8Nu/QF33D9/IJT0NuBTEY9m0/IYXiylzSLxQQ4QV9UGMCzMsD6w8chaG5azWgcNFe5B55cGy5GUJ5/xSr8jO8rswjYK72j+89fGoxd6vYg1a30wRaZnVVLaOo//XYTt6YrJ+UXbQ0JIqJXYZS4vZXqLa3wqdcZZt7wDQojl1jVGbGA22EHQYPCJAW3BNjf+gMkFrPtLxr1Qvu0PF3OUzOFdgDd4oAQfo81Hrc4pQdXbNp4svLXbWSsl3elrc392U7/j3WoC15BfhNkPcTO32e6vo4s/mQCmS52qYuyuPXzHOfhYV1dvo5+Xo4SJ3vD8ZXAPM3smfFwHzMrgsheihjkTgRAH2nkC+Ej2N0w9HhIHezNBXBANA7cYqGOJvdDmf+/DUvV8L78eDk+yWAofzgol4x+tJH2LEqOCtcvPDA9BVEaZdoHWd9mVpYoMi56XqXNIfPgJX7Yn+DQUXh4u/cuiQe8YqafBKsugbCH6oVRgU8Q6oYW6bVywzm1AmzkvDAnbSFZRd6pszTlRGU6H9jLyn3wPDjl5pzkKhvoeKE1ou++xA944WdyAXtw7bsPooZKopWyKcegAgitMSY5OfDV9+Y6OswJ5Tyah3qFDL4RY1HsXikB6ko2htslGFsBqrL4KZjn34D74Gan08VhMFLl7Qk13FgMMFiFwNbAdZSK4+iy2N1/aWe//j4QWFU7kpjpnDeSVOXieDjK6tIkzO4bX+27cUec4p43l40RpgU/k8Wi6oHjsq8fOFtPTJNne3MkH76zX3lk33s/9aroaIZBwtEbGsuDMaJL6CN1YuFgpxEp8IOM2KxwHF04uXEBgKnPUWP4FXp7/NIHPdhumnnP0yhYx/pK/CX0P+T3SstDTSBm13rhI3zqxvXC8T3CgiA8Vi2SvkAAkAGup1My9Z1YfcZVpFbTK5Av+6vx0rmIo9h6gwD24DECNWTHQPSYXihRpo1td4+MsY4R1eyqD6AHd3IPKzRpOQTshIftAy7J2r7q27Xsf2RaUMwDq9kjB4Ho2pC/OQoEy00iSyM38ieBca/UULZgkPVVbS6+M9iIB1EXeKbaTs8iF9DrSPYr5jeZeCHlbICDuTf/Mbk6s783/S9Y4STZobx6dBGBnKr6zVdvBMQXKszAf+uWCaxysV3oF0nR0KB0Kq4cN1A8Mh6U3AUwvCZhMIhEm2bJN4NVKIdSB0xkaL+qnDTRwyiK3fLncgIWRUSUN1dz2VkP6uWsebTbuOlOeihU67/NwQ/QTxZlOWAVrIbCqBGCIpkG96vLMUDpFEvhzPM2DFD06Oey1cQRpOMZg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 22607007-6e70-4839-8fbb-08dbdc35d5c4 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:38.3707 (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: w24xMYLvfytkWV3GYaiD0FzaJteBfHYIiX13epwYWv+5pM5q+C/t0BbYgOb9JcSSF+MpO4gHhGhehi/Qvcx2dxiR56ilScSWF8KQWsCgAlE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the corresponding data structure and logics, to support the offload of ethernet item. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_net_cmsg.h | 13 +++ drivers/net/nfp/nfp_net_flow.c | 169 +++++++++++++++++++++++++++++++++ 2 files changed, 182 insertions(+) diff --git a/drivers/net/nfp/nfp_net_cmsg.h b/drivers/net/nfp/nfp_net_cmsg.h index b526feaff2..a95f4ef831 100644 --- a/drivers/net/nfp/nfp_net_cmsg.h +++ b/drivers/net/nfp/nfp_net_cmsg.h @@ -8,6 +8,19 @@ #include "nfp_net_common.h" +/** + * Match EtherType data + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * Word +-------------------------------+-------------------------------+ + * 0 | | Ethtype | + * +-----------------+-------------+-------------------------------+ + */ +struct nfp_net_cmsg_match_eth { + uint16_t ether_type; + uint16_t spare; +}; + #define NFP_NET_CMSG_ACTION_DROP (0x1 << 0) /* Drop action */ #define NFP_NET_CMSG_ACTION_QUEUE (0x1 << 1) /* Queue action */ #define NFP_NET_CMSG_ACTION_MARK (0x1 << 2) /* Mark action */ diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index 88386a31f0..4ef4aafb16 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -13,6 +13,28 @@ #include "nfp_logs.h" #include "nfp_net_cmsg.h" +/* Static initializer for a list of subsequent item types */ +#define NEXT_ITEM(...) \ + ((const enum rte_flow_item_type []){ \ + __VA_ARGS__, RTE_FLOW_ITEM_TYPE_END, \ + }) + +/* Process structure associated with a flow item */ +struct nfp_net_flow_item_proc { + /* Bit-mask for fields supported by this PMD. */ + const void *mask_support; + /* Bit-mask to use when @p item->mask is not provided. */ + const void *mask_default; + /* Size in bytes for @p mask_support and @p mask_default. */ + const uint32_t mask_sz; + /* Merge a pattern item into a flow rule handle. */ + int (*merge)(struct rte_flow *nfp_flow, + const struct rte_flow_item *item, + const struct nfp_net_flow_item_proc *proc); + /* List of possible subsequent items. */ + const enum rte_flow_item_type *const next_item; +}; + static int nfp_net_flow_table_add(struct nfp_net_priv *priv, struct rte_flow *nfp_flow) @@ -162,6 +184,10 @@ nfp_net_flow_calculate_items(const struct rte_flow_item items[], for (item = items; item->type != RTE_FLOW_ITEM_TYPE_END; ++item) { switch (item->type) { + case RTE_FLOW_ITEM_TYPE_ETH: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ITEM_TYPE_ETH detected"); + *match_len = sizeof(struct nfp_net_cmsg_match_eth); + return 0; default: PMD_DRV_LOG(ERR, "Can't calculate match length"); *match_len = 0; @@ -172,6 +198,143 @@ nfp_net_flow_calculate_items(const struct rte_flow_item items[], return -EINVAL; } +static int +nfp_net_flow_merge_eth(__rte_unused struct rte_flow *nfp_flow, + const struct rte_flow_item *item, + __rte_unused const struct nfp_net_flow_item_proc *proc) +{ + struct nfp_net_cmsg_match_eth *eth; + const struct rte_flow_item_eth *spec; + + spec = item->spec; + if (spec == NULL) { + PMD_DRV_LOG(ERR, "NFP flow merge eth: no item->spec!"); + return -EINVAL; + } + + nfp_flow->payload.cmsg_type = NFP_NET_CFG_MBOX_CMD_FS_ADD_ETHTYPE; + + eth = (struct nfp_net_cmsg_match_eth *)nfp_flow->payload.match_data; + eth->ether_type = rte_be_to_cpu_16(spec->type); + + return 0; +} + +/* Graph of supported items and associated process function */ +static const struct nfp_net_flow_item_proc nfp_net_flow_item_proc_list[] = { + [RTE_FLOW_ITEM_TYPE_END] = { + .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_ETH), + }, + [RTE_FLOW_ITEM_TYPE_ETH] = { + .merge = nfp_net_flow_merge_eth, + }, +}; + +static int +nfp_net_flow_item_check(const struct rte_flow_item *item, + const struct nfp_net_flow_item_proc *proc) +{ + uint32_t i; + int ret = 0; + const uint8_t *mask; + + /* item->last and item->mask cannot exist without item->spec. */ + if (item->spec == NULL) { + if (item->mask || item->last) { + PMD_DRV_LOG(ERR, "'mask' or 'last' field provided" + " without a corresponding 'spec'."); + return -EINVAL; + } + + /* No spec, no mask, no problem. */ + return 0; + } + + mask = (item->mask != NULL) ? item->mask : proc->mask_default; + + /* + * Single-pass check to make sure that: + * - Mask is supported, no bits are set outside proc->mask_support. + * - Both item->spec and item->last are included in mask. + */ + for (i = 0; i != proc->mask_sz; ++i) { + if (mask[i] == 0) + continue; + + if ((mask[i] | ((const uint8_t *)proc->mask_support)[i]) != + ((const uint8_t *)proc->mask_support)[i]) { + PMD_DRV_LOG(ERR, "Unsupported field found in 'mask'."); + ret = -EINVAL; + break; + } + + if (item->last != NULL && + (((const uint8_t *)item->spec)[i] & mask[i]) != + (((const uint8_t *)item->last)[i] & mask[i])) { + PMD_DRV_LOG(ERR, "Range between 'spec' and 'last'" + " is larger than 'mask'."); + ret = -ERANGE; + break; + } + } + + return ret; +} + +static int +nfp_net_flow_compile_items(const struct rte_flow_item items[], + struct rte_flow *nfp_flow) +{ + uint32_t i; + int ret = 0; + const struct rte_flow_item *item; + const struct nfp_net_flow_item_proc *proc_list; + + proc_list = nfp_net_flow_item_proc_list; + + for (item = items; item->type != RTE_FLOW_ITEM_TYPE_END; ++item) { + const struct nfp_net_flow_item_proc *proc = NULL; + + for (i = 0; (proc_list->next_item != NULL) && + (proc_list->next_item[i] != RTE_FLOW_ITEM_TYPE_END); ++i) { + if (proc_list->next_item[i] == item->type) { + proc = &nfp_net_flow_item_proc_list[item->type]; + break; + } + } + + if (proc == NULL) { + PMD_DRV_LOG(ERR, "No next item provided for %d", item->type); + ret = -ENOTSUP; + break; + } + + /* Perform basic sanity checks */ + ret = nfp_net_flow_item_check(item, proc); + if (ret != 0) { + PMD_DRV_LOG(ERR, "NFP flow item %d check failed", item->type); + ret = -EINVAL; + break; + } + + if (proc->merge == NULL) { + PMD_DRV_LOG(ERR, "NFP flow item %d no proc function", item->type); + ret = -ENOTSUP; + break; + } + + ret = proc->merge(nfp_flow, item, proc); + if (ret != 0) { + PMD_DRV_LOG(ERR, "NFP flow item %d exact merge failed", item->type); + break; + } + + proc_list = proc; + } + + return ret; +} + static void nfp_net_flow_process_priority(__rte_unused struct rte_flow *nfp_flow, uint32_t match_len) @@ -218,6 +381,12 @@ nfp_net_flow_setup(struct rte_eth_dev *dev, return NULL; } + ret = nfp_net_flow_compile_items(items, nfp_flow); + if (ret != 0) { + PMD_DRV_LOG(ERR, "NFP flow item process failed."); + goto free_flow; + } + /* Calculate and store the hash_key for later use */ hash_data = nfp_flow->payload.match_data; nfp_flow->hash_key = rte_jhash(hash_data, match_len + action_len, From patchwork Fri Nov 3 06:26:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133812 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 38EE243275; Fri, 3 Nov 2023 07:27:21 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6AD4E42DDD; Fri, 3 Nov 2023 07:26:43 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2108.outbound.protection.outlook.com [40.107.93.108]) by mails.dpdk.org (Postfix) with ESMTP id 1214E42DDD for ; Fri, 3 Nov 2023 07:26:42 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JRv3u2rEet9cAk8DFCT8SEHPI1XQlMKs6aRGh0Ij6Y9xcGN6CbG3WFXTyv5xdkp+HhaKMZeG1+8+sqYrdCF1CkRP3XKL21b6fpPPsAN7t1Bw3KbsGa71z0R+ExofyEBZT9h+5TGFVs7K2g+EOQP1LUMCC5j5sgdtBNagwmnBWTNXcq0GkEfSBgNZgO8zHieYUtpxRaXRWx+4pOQOywjFS6dmSMKn40qNuF7YL4a5/6tDYgSqwSBRLxDZXqcGx2NeoHbuRvHJrw2ODhH/FrfCjBDZtGoBo1vsqPFBVxCbAhFO2NNhxmJU3wrCQ99HwGx0V4b8SgVQRXsJ+GYCiQbM6w== 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=oMGSvtkNKDi6oCHbQYH+HNp8p1aS9VfD8ctF/uCHcT8=; b=YuQ5021j8BZEkVnq8cSw8XMIVULw0PwmYgWbs1LBNXx5cUQz2QC6GrUG7Dd5UFW7bAwK0wVaOfx6HaxqU+RxRbHU91J2Z3oDkjp4yPiFjoskw5icyEjpFm5bLJSZAWXVReJilBMKq7g5HxRZp7ybGZOCmOYK21+Gc2ekjySpBewkJrGib6kidFgfQUpoysO0gS8EAJ0tQoWaWImVbPmpMPNXB0Jig2Uqb30bp8tB5v9DGoKjRs8x58wHKl+eQDByrL2LGp7XyYdsjAZLy9PZObgUl+5l0pHGdW9xN3mVkXORSHI60HbAEL5NncItFpd5p1nlMTfDS5zYSeZ9McKVnQ== 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=oMGSvtkNKDi6oCHbQYH+HNp8p1aS9VfD8ctF/uCHcT8=; b=BBdmhgibEK1jstTqIqk9xgRSai+pMxDopupfmtntMp1vu9a9fskOku1gC3M8YfZVj2Vc97dKxAZFa2wLUuTYJ8C5hVZ62Be4TiCGwmt9+JaPuL/PVp3yryqavBiZ7RpQ3yhZJqwmtTDQUBHeXQcvbXADi823h9ZCvzP0/rBXICs= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:40 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:40 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 06/11] net/nfp: support drop flow action Date: Fri, 3 Nov 2023 14:26:01 +0800 Message-Id: <20231103062606.2632012-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: 9010c4b7-0018-457d-9471-08dbdc35d70d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1fpAaQEDM9OlUbSr/XxLMDV+MmJJxCAJIbM8Y5mhtEAh7SUtfEPNZmUpek1NNGg2yB2K9EvMUccqFHjTUDWYCbDa/eXKEQriDMdO6Zhvtw6RvDt+MgMO/l2U6kyg5WKb/WQo0ItT3vG2EUyybFnKvWYx4C9bYyMdQERlnmDT/6h9zOOUlzi2es4cAYG3IdjuP75oKkw0pfCzE+vCY6xH7RttiD7P9DyNX3buvzdOmJgxMb34TNsuBz8/M5muxfENKOMLPHLBHEoVC2g595wSncb4x6kBVyz2DrSEpHERMZ3+I1MYZhpgVKBEsxHkybF4Kh+6VPg3G226+/nblDGPKWgwL4e6curQ1JzdvRAheT41S4b+jee+0aZfEwCgxVwDaokHDKSjqgUxwxk0CVlqv66D98yv+43a89ahCVs8e17ONjZ7PjjDWYrvd9/HQqvG+ZFm2H2GiYCNWhN+b0tifFQmqZo0DLQdi0MFhtCpNyOYVJy798/Q6x7AWtFEWdy4YqQgL/5GCtlHHrEK9nWp+WTI0uljbky/AiwROLEXb7OpK5w79BhVjErhow0Ie/Hsls9R/BR/VCT4WxxPl3FzGz86gE0ccj4KhcgouSJgHDwCE9OHXOVjP6wqojPKEb+BVXugjO2gDf44vsYfDU5oYRdRUU7vjVyEQG4ikDyHWC0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(83380400001)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: o1TwyJhr9pv6doao8k169EvWeRoM5dFxAMce8j9FUWf9qLYy4s7YqAKNbaJgZ+VyBp+hK7GpVNl4qxfjxc7jlY4ZEsSiC8N2HgncnoMBdoL5g2IlFsYeVAAcAmIjq/njJRdgi2aRvf7dQrwNwQ3KvUeXtjZUdR31DYuX4VbKlb/yeU9h3+htwb6E9qn+q54l6YcQAbGCoBN4+ee5WJEbyf67g1H2K8E4R7xs7mkl8dIqiYqwSIJiO3zr4gMx02aONB8Y9SseqsNa3M0yekYF38M3n3hvtvPlQpEmHs6mVrsoXoWdbXcCj0GzPfg+1qwXcvGZfvTdvLHlg8xRjBw1fIxrOvYWDO/HjgrzPEApw10fmoHpBMpyFcSAsunfnN8XxRlPrtZccSJbQSbSOpHVj2nfRP3y0TG6eionb7ON0SQ4Y/iVqx/J4USIxAWGdit4s3jeg2ye40DKx/MrHz7/REBGw6nBYdFVZFt2VDlmvyKV7a8zt3rmkYGlDaZ0iUrx66Ol6Q+3bLzn2W37vZqJQTICEJGO7lSHsCDS4pEDVLEgpNc391jhq7rUXZorA7hiPUCUYGt9BZFfuS66EuTfDmYpsKgtJ98pALH8VlGihueLh9Q7pffrhMzdKg66TVqXdu2I49MIozdULCHuuAzcwUWQkMaKbzP1icMb/Pj95ouHnXy7Csu9WSlvsq7vJpPLxotEmQS2glLwYEgckndwWpzgigyvbEvckGIAcuXJUG5EjX83n8L75h6Meg5xnFs4YtKSstNC8gf3WFRUV6dJpQMgfYvNyMlSO7Lk4kWWF8i/81TA6EvCOuaqrnevswTZs2RWGwrEXJ4+tVoWFmFoLQ7zRhHGgV1RaOmIzjylJSuOI1p3pa4IUh1/T5NlycGx0SnJONDDrImN8uLfYYp10r+gQdcxoPOhK+MXLudP4tHXB/oSaKjM3T4OvQS0A731hmcDLuQyU7GL0TJgyr0kzcARe5JGWoSOqUrScILBtu5MWE9I19KQ0kb9y7+bbhYbeZ/nyOgC2kXmx3XVTKykqARVXJ2ae/h/i9Ty5soXPRlp0VsaZFY+BQ4YGpC7VDZjV1zX0xJTvboKbAijt0nayWrMz7iO70Zrioz2w0tQzDWw6vXmkVaDaRLWw6VtjV7rRNlSZxSv9VGIa2oF3QzW0R5Jvcpfs07qZ3q1ObsOlWi6SCzSBlNzAQpo/APSw6oW6CnI3AdtoTQD7ajkFY4fsyf5Mwcc+vXPMjTzptmkrJ0H3vHnyuBjbn2v4pABdD1VlHs6t0560VDYQvu3cVHA2nsr7tGWPKK96U+G+tXMoyj8ml8BCmFbF8Msl2oek6ZxdhLH/xoaTnSMzgnP9txr2p0zN5GXdTridNC03ssAPUzaEt8fGWM+vIuWfnB2C2fz3/Z16Ldv87DzXlpiln863RjhXCJQ0fb95LyZjRhGYhT1BK5KhaAz2k9CeCMma/Vi50Zd9/3wODFQOLtDXoItvTv8uStshht7lkDGmh6KtDExebBqVjwZe7KUp5j6X5pJtFpQOMmn3y2aOqEzcClJmXNitfq5meHImf2pGIpfsNfc8cwZt4IW8Y2ECwJ6Tzx7rGQBqK5RyUYXBZO/AOBpPA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9010c4b7-0018-457d-9471-08dbdc35d70d X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:40.5150 (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: eVD5hIcY8qGUz5ULXSrKore1fk0PHN1cgBmOEbXdlNJjY/73K5KW2T2IhvXHO42QLRKic9xhgPKShbjwUa3DRSc/lsPUfasHhOBcY0tzgYk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the corresponding logics to support the offload of drop action. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_net_flow.c | 39 +++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index 4ef4aafb16..65c922071e 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -335,6 +335,37 @@ nfp_net_flow_compile_items(const struct rte_flow_item items[], return ret; } +static void +nfp_net_flow_action_drop(struct rte_flow *nfp_flow) +{ + struct nfp_net_cmsg_action *action_data; + + action_data = (struct nfp_net_cmsg_action *)nfp_flow->payload.action_data; + + action_data->action = NFP_NET_CMSG_ACTION_DROP; +} + +static int +nfp_net_flow_compile_actions(const struct rte_flow_action actions[], + struct rte_flow *nfp_flow) +{ + const struct rte_flow_action *action; + + for (action = actions; action->type != RTE_FLOW_ACTION_TYPE_END; ++action) { + switch (action->type) { + case RTE_FLOW_ACTION_TYPE_DROP: + PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_DROP"); + nfp_net_flow_action_drop(nfp_flow); + return 0; + default: + PMD_DRV_LOG(ERR, "Unsupported action type: %d", action->type); + return -ENOTSUP; + } + } + + return 0; +} + static void nfp_net_flow_process_priority(__rte_unused struct rte_flow *nfp_flow, uint32_t match_len) @@ -349,7 +380,7 @@ static struct rte_flow * nfp_net_flow_setup(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, const struct rte_flow_item items[], - __rte_unused const struct rte_flow_action actions[]) + const struct rte_flow_action actions[]) { int ret; char *hash_data; @@ -387,6 +418,12 @@ nfp_net_flow_setup(struct rte_eth_dev *dev, goto free_flow; } + ret = nfp_net_flow_compile_actions(actions, nfp_flow); + if (ret != 0) { + PMD_DRV_LOG(ERR, "NFP flow action process failed."); + goto free_flow; + } + /* Calculate and store the hash_key for later use */ hash_data = nfp_flow->payload.match_data; nfp_flow->hash_key = rte_jhash(hash_data, match_len + action_len, From patchwork Fri Nov 3 06:26:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133813 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0A51843275; Fri, 3 Nov 2023 07:27:28 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 751BC42DC0; Fri, 3 Nov 2023 07:26:46 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2105.outbound.protection.outlook.com [40.107.93.105]) by mails.dpdk.org (Postfix) with ESMTP id 639CA42DC0 for ; Fri, 3 Nov 2023 07:26:44 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RpHIU3Rz5CuLnkzZYuZgC4i1y0QNfW34/PLbmHOdIc0d99PBZj8h67Tvj0iCB7S2KslYxtcNHm/sgBLnUgn3eSjkWeZd0oqS2Cgi4vAdk1232MKLh6salo6IYHSDhYnJDYAtde/QI0nexlNCbkcKUxG2Wg8velLhpAhT+CpsVRSdmuWEY8kccs6nxneyIw3OgYhHV/+MI+xKAsOtAP+qFvvhiZNXJeSwYZQqtt5AyOFFJBmcMbw1671TfYZScihGUwFjTRP/LP/WERnBq/ibqifap5kRUkyA7iJxZOdEFvEm3i7Vw58+fNJkVJaG3HOa7h93ySGPfqJS4Bmb62EItw== 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=Hbgx6WzWeR5qkw6Y+ihjYNZhWBMzOQa6hYepPqC9LBI=; b=OqQmNwx17Lq8SWLQb0+Qkx/B/EO8xtg7Z/kyu28YTCi69WmKlfdy2P4YTr/EkulFAvTfu55gdLz0U0B5izuPXhkpXQzZOtIcWav4UlbkdLrkSiE2Jc7nk9m/TD+33eN1oTG7R0XwJp/6pbjibYau//qHE8Y09/EBI92eDTo7/kBLiSW4NG/sS/bQWJ7m3Z+1Q0O1LZGlxWnr2TNT+/wqASa7IoXO/c+XMXkAHBcCF/AN06foQkkciupZWhTCNgNEyQvhbH3NZmsy+mUNyVAF2ly76YqbRmQRdjdylJaNG1JP2dnYlOAE/NbBtrnTeySB9vibPF3oQqxu8ueV9xOUAA== 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=Hbgx6WzWeR5qkw6Y+ihjYNZhWBMzOQa6hYepPqC9LBI=; b=jeCuItYUoFiA8EqDnOYOug7Qso2niKhH8Ch4LDg59M3QMPYjMRrKFJLJ2bgSchzGggRJi+wrV0KHhv7gkVQSlKK87vGgIJTP9VS6n7DZ05HyePXjmyLrSv0UaHz1yMs/pEVRq5mvZKSyej0NVlUsBbKxXwh4Y5Z8FPfLSA4XGEU= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:42 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:42 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 07/11] net/nfp: support IPv4 flow item Date: Fri, 3 Nov 2023 14:26:02 +0800 Message-Id: <20231103062606.2632012-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: 5a0541af-4c39-4039-9966-08dbdc35d856 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xNDRCMq3mHlhkH+fRGwblr+pLOlptotuQYB7pmZKxzo/zt6mA8BL7X5/BpzMeBd3w1MKrbZ0l8yk4cu2Qw9V2VOLvLmVTPgHdjF4lazIYgziM0xOSLFziMXm2kTiRsNvN1P3DjsneMVDQazhnj6sjHpnXafz4+6xRVblfJ6aJdo1g13gr/ZOnft13uJJYIWcEETI4u1tG7uJrQVt1oaOC0a7ktamjj7cE8aBy1PRqTmXR8+KnRnQRvjrM9reEssV5ue0gFI3prTN5rxYGEmz4kS1YTLZiZ7PM5YUjGXKCZEXS6vb90R9rVaAUpWUWbXs0f4pBsL4vef6Ihiwb+TRHJl2hNxs1pvUDEm+CUynL7BqleoH42t1y07UFfb1EdbXZk20iK9N6u0FbEOAPBIlSndLn2YJBnPotplrxKS7UDuRi7iUECQ6rT38Pp1RTZWBxLRK5/ry6Lo0MTly4g3AJ9qQsslloQB3xzp10vWZ+NYWFRsNj7sX9MjHupg9HjrdS7uFpPtkMAekgUNMydfZVYGJNXcRbj7J8xjN+HGQuWpTGUwEiFL69Tpw+TMyT1Z9m4c4sqM5Ptc86Mmkg2mOLoHVu1GoieF1ec6tN0erza4QTPo5D4TKBUsND/TSWT0j48XRi09nEtPI9m2JsRPzP0Z+o2I2JIYIfXdIbza7wa0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(83380400001)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?v0XTewek2fm16CTngSLObH4JTqEK?= =?utf-8?q?6LoISfAhyjgWoYsCIPwqcy20JtZrHHynKbJnC/riJ0dXDoTAERdpdOlpmKWIGW8kL?= =?utf-8?q?jnvl9uMN7eMiGACUQNqwzhS0h+9akPH8wmYyUD6wGaHw14k6xpWi1FKiMfMW4JZ0P?= =?utf-8?q?+crmpr80uU9bbUzlHt8tfySu0Dh0K7XnaPLzEwd/ATEb+QNQrQnfTz0WGh0VOv6Hj?= =?utf-8?q?/yrY8C177UAwHDrYDCppz9lnwu6ZkuSF1XW5KZvDftkVFDC+vIbs0MdSi5PwGInRi?= =?utf-8?q?LJA6+UVDnYA58iiS3fS9YN6kFo/E/76EljXNwoGr7LAlVXHlTLfM81RI2P3xEhIY8?= =?utf-8?q?tL6SinywaSq/FwR9/Es5lxef3lue+3y6Pv0gUYQTMt7nQwy0nXPeHqeUuPD+fMm/l?= =?utf-8?q?gMZMcuxiO3nuLhwKe7dC5yKzUdxD5bfjtpLf4a1cVncme4/xK3GE0Ihzv34zPmQgI?= =?utf-8?q?ZVfT9/Gr/fP8VCjt38STCKUF6h5E9SFJSt3LgPLt8v7DTiM5ZBVSBwsljlNo9uTov?= =?utf-8?q?VXbdA7qXse6qeU4EQSIgP1Cu5VMgiN6bfSR2Hh6+aPRE/7qqn3q6teWFawp0SkLHI?= =?utf-8?q?zE/bggWW+1iPtojOVSA3Oz/ptFUohqhfgrPawV1/aEqb9k9N1WX+ESDhT34TOYywJ?= =?utf-8?q?DGXQt89EOWvUwb0QDROHVUfHmrxS63jCui4DJNo3cwA2NCWPW2gUIyHwD3xUh05ys?= =?utf-8?q?/5CgbErPTFZZNzXpt3Ylcpu1mHyRQtLipvUWDn2Zw2Qz6fxSRtTZraeg5EZLZ+pRd?= =?utf-8?q?vzG3njx/CjnUgZIgiT/56DaQHEMb6Axn0pOo9bsgVS6jGjkAxtaYALw5XxHxWsB2J?= =?utf-8?q?4aUcEEPOGGluTz3pqu6iPE1Y0oJumUbC+nYahFGhpIQTlV39JEmfvJtMRqO1lV5VU?= =?utf-8?q?4YH5MXOEoZZWQUaCcpkrPb6/kPKYeiLotX4UgK7nlTpzIpbELvlLL+MZbWCvtm666?= =?utf-8?q?P6AeoC/P1y3tsiJBPR4D4GhvmiayPCFn5tMavWFKGBqorjRej/5FHmgfCvHgKp1ob?= =?utf-8?q?BG26gGN4HkwTugBTwdDdS8aTIBLQ0yltljslptUUfu2zdiaoSHZG3pMAunOWlrRh3?= =?utf-8?q?Si1nWkYmxOYni0QkIQscmrk7TIWRE7DecGYC8BzSAZiorxtg6yxgry+D6nJnufx04?= =?utf-8?q?2uSJD9JhjT09waklXn6EPPt4/ZV/xPBSiICdltt4CgYvC98uDTuHBMpAtBDPUQc0Y?= =?utf-8?q?s1yViOrDW4MHT9eCOpEGPr99kD20A6HGtTKwsiNL8+2tavQ7c6XVb/4+hM4oSWH7J?= =?utf-8?q?Prtp4e7Tg6dH8sLuzPcXGtY9H4CthcvzghuoK1mDG6MGQgfPkg2QS1X1mYKhaU2UF?= =?utf-8?q?ke26QTsofEXMjiI3yBbFpTyHlWky7ZPWNcZ6IgMfnnQL1+u6LLSYuBISEa+p8oiO3?= =?utf-8?q?CfUqd4DkBGqIRypdNWqYdlsMlbUG7y71FsxaM1lOpq+bWmlp/YlggWPV/UKNVjqrD?= =?utf-8?q?+tAkNWQ0WvwBg5djUiXRLlPZu6n2S0AR9Ebf7ZaYYJGsJxxmqen+bgahCK5jAJEzf?= =?utf-8?q?strZDjqpR0UlVaf+XpJUfOmAFQEY0yfRBw=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a0541af-4c39-4039-9966-08dbdc35d856 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:42.6774 (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: Uj5GAv8BkfmnH0E02ZeV8WOnO6MmP0tahdJTIoqHtcDrqJZTjd74ml4QiWMXvwGNUDDN7T18J06AARPFCHMx5RJAIgpXtr5Mwhu5T8VfrM4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the corresponding data structure and logics, to support the offload of IPv4 item. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_net_cmsg.h | 37 ++++++++++++++++++++++ drivers/net/nfp/nfp_net_flow.c | 58 ++++++++++++++++++++++++++++++++-- 2 files changed, 93 insertions(+), 2 deletions(-) diff --git a/drivers/net/nfp/nfp_net_cmsg.h b/drivers/net/nfp/nfp_net_cmsg.h index a95f4ef831..9bc064d9d7 100644 --- a/drivers/net/nfp/nfp_net_cmsg.h +++ b/drivers/net/nfp/nfp_net_cmsg.h @@ -21,6 +21,43 @@ struct nfp_net_cmsg_match_eth { uint16_t spare; }; +/** + * Match IPv4 data + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * Word +-----+-------------------------+---------------+---------------+ + * 0 | | Position | L4 Proto | L4 Proto Mask | + * +-----+-------------------------+---------------+---------------+ + * 1 | SIP4 | + * +---------------------------------------------------------------+ + * 2 | SIP4 Mask | + * +---------------------------------------------------------------+ + * 3 | DIP4 | + * +---------------------------------------------------------------+ + * 4 | DIP4 Mask | + * +-------------------------------+-------------------------------+ + * 5 | SPort | SPort Mask | + * +-------------------------------+-------------------------------+ + * 6 | DPort | DPort Mask | + * +-----------------+-------------+-------------------------------+ + * + * Position – Position index of the rule, 13bits. + * As priority, smaller value indicates higher priority. + */ +struct nfp_net_cmsg_match_v4 { + uint8_t l4_protocol_mask; + uint8_t l4_protocol; + uint16_t position; + uint32_t src_ipv4; + uint32_t src_ipv4_mask; + uint32_t dst_ipv4; + uint32_t dst_ipv4_mask; + uint16_t src_port; + uint16_t src_port_mask; + uint16_t dst_port; + uint16_t dst_port_mask; +}; + #define NFP_NET_CMSG_ACTION_DROP (0x1 << 0) /* Drop action */ #define NFP_NET_CMSG_ACTION_QUEUE (0x1 << 1) /* Queue action */ #define NFP_NET_CMSG_ACTION_MARK (0x1 << 2) /* Mark action */ diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index 65c922071e..e918c67135 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -188,6 +188,10 @@ nfp_net_flow_calculate_items(const struct rte_flow_item items[], PMD_DRV_LOG(DEBUG, "RTE_FLOW_ITEM_TYPE_ETH detected"); *match_len = sizeof(struct nfp_net_cmsg_match_eth); return 0; + case RTE_FLOW_ITEM_TYPE_IPV4: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ITEM_TYPE_IPV4 detected"); + *match_len = sizeof(struct nfp_net_cmsg_match_v4); + return 0; default: PMD_DRV_LOG(ERR, "Can't calculate match length"); *match_len = 0; @@ -220,14 +224,58 @@ nfp_net_flow_merge_eth(__rte_unused struct rte_flow *nfp_flow, return 0; } +static int +nfp_net_flow_merge_ipv4(struct rte_flow *nfp_flow, + const struct rte_flow_item *item, + const struct nfp_net_flow_item_proc *proc) +{ + struct nfp_net_cmsg_match_v4 *ipv4; + const struct rte_flow_item_ipv4 *mask; + const struct rte_flow_item_ipv4 *spec; + + spec = item->spec; + if (spec == NULL) { + PMD_DRV_LOG(DEBUG, "NFP flow merge ipv4: no item->spec!"); + return 0; + } + + mask = (item->mask != NULL) ? item->mask : proc->mask_default; + + nfp_flow->payload.cmsg_type = NFP_NET_CFG_MBOX_CMD_FS_ADD_V4; + ipv4 = (struct nfp_net_cmsg_match_v4 *)nfp_flow->payload.match_data; + + ipv4->l4_protocol_mask = mask->hdr.next_proto_id; + ipv4->src_ipv4_mask = rte_be_to_cpu_32(mask->hdr.src_addr); + ipv4->dst_ipv4_mask = rte_be_to_cpu_32(mask->hdr.dst_addr); + + ipv4->l4_protocol = spec->hdr.next_proto_id; + ipv4->src_ipv4 = rte_be_to_cpu_32(spec->hdr.src_addr); + ipv4->dst_ipv4 = rte_be_to_cpu_32(spec->hdr.dst_addr); + + return 0; +} + /* Graph of supported items and associated process function */ static const struct nfp_net_flow_item_proc nfp_net_flow_item_proc_list[] = { [RTE_FLOW_ITEM_TYPE_END] = { - .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_ETH), + .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4), }, [RTE_FLOW_ITEM_TYPE_ETH] = { .merge = nfp_net_flow_merge_eth, }, + [RTE_FLOW_ITEM_TYPE_IPV4] = { + .mask_support = &(const struct rte_flow_item_ipv4){ + .hdr = { + .next_proto_id = 0xff, + .src_addr = RTE_BE32(0xffffffff), + .dst_addr = RTE_BE32(0xffffffff), + }, + }, + .mask_default = &rte_flow_item_ipv4_mask, + .mask_sz = sizeof(struct rte_flow_item_ipv4), + .merge = nfp_net_flow_merge_ipv4, + }, }; static int @@ -367,10 +415,16 @@ nfp_net_flow_compile_actions(const struct rte_flow_action actions[], } static void -nfp_net_flow_process_priority(__rte_unused struct rte_flow *nfp_flow, +nfp_net_flow_process_priority(struct rte_flow *nfp_flow, uint32_t match_len) { + struct nfp_net_cmsg_match_v4 *ipv4; + switch (match_len) { + case sizeof(struct nfp_net_cmsg_match_v4): + ipv4 = (struct nfp_net_cmsg_match_v4 *)nfp_flow->payload.match_data; + ipv4->position = nfp_flow->position; + break; default: break; } From patchwork Fri Nov 3 06:26:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133814 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A25AA43275; Fri, 3 Nov 2023 07:27:35 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 14D4742DF8; Fri, 3 Nov 2023 07:26:48 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2131.outbound.protection.outlook.com [40.107.93.131]) by mails.dpdk.org (Postfix) with ESMTP id 943A3427DD for ; Fri, 3 Nov 2023 07:26:46 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EzTikv7rewOCs9a4fGxFq1P7m5UKzSIp/QkydFeuWfxZluZIPqshpgyagd2fWPRnZ3ywNuOuphb24LTi1iNpa315FLF0Sd07Bxf3YwV3/2c8nmmfGfJ5teo1ZMdCO4W3f623vk5M2oySfLo8daj6Hcyufxsps5XaDoGa2nPZ9PjlRzNoin3hRMvEmZVu2P0+dhXeIIokOqOXuoNmJp5tUJ5QSW2gWRkZnf8t/vqMI+tG6mvaC1e2B846VjS+QbddKdNPChS0lnkkM0BNKDoOSaN3+noyG6XyIhR7kAKvuP6KTdTYOb/RcydCvYD1MvdCd0CUvs9Z+hUyWaLfd24YGQ== 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=Xr65sXI3BWjqgBcU6hyrjqR0RCdkqfMmN8p6B5L7cCw=; b=W0qxfU7dneS0YiF48P8F1jTH03vr3XnHoIscjuEyiWsq/ZjlbML6KvHgP/Ikdd9tMedlVeYankooVAxZnRE58yY7gbotzpprHptK8QEV31VUPx097QS8dHEp3DArLTOMMOXs/J7rD5EEZJHWAK1ezpAa6zTPKrg6TwWh5uSeE5/4v7ASW6fm8G2g5Mzhqol/A9OHsFziZhkJle7uCG8op1BrXJ8J+b3Lh/LsHYk1h2CEGvT/lNvX9hiDHOu4x04F8W4KpnqtOsY12dSwRld4/mtM+2TBRM2jYJSS69Jl/ioOiMbwCrteom7muLtQhlTEaOEOGcSotuJUqGW14z4P2g== 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=Xr65sXI3BWjqgBcU6hyrjqR0RCdkqfMmN8p6B5L7cCw=; b=CA/SiCOirf+5xTJ7wnHWkHG789BBT49+7JtNh3BUMmw0emf0h9/j8p8ljljK/zVX4TYWAcMyE4iYXVpXtG2WHM92/U0RRdslFBT+IJN/399Sk54p3Bqt9RAuSBuD624nZZFKkXLfpxzXnxCdwsIDZd6vq4ZUHzKbyxHeSp9LfFI= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:45 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:44 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 08/11] net/nfp: support IPv6 flow item Date: Fri, 3 Nov 2023 14:26:03 +0800 Message-Id: <20231103062606.2632012-9-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: 3572b221-0864-4c38-04b7-08dbdc35d9a2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W7VTstLyTxJCcyuo1nDbKeoQKgGu/AgafT1tRqAhrJtONRRXIn+ylgeEUliplo/qSZAM0ICU0GmouEKzuRt1XUhZc3uIaGcAt8j9Hytqi4+WJLMkh+/wi6pcQKxcuGUhxzRSbe9ek9NHbPfTgO7d/ZIfZEyQpn6ri0Fw86kVWjN5vwGjM2VmLrblYWoqI6/3eVFkXJUhBSUZW4Ycg8zGG+fy3Jg0S2mK63ACvYYsKz5TUERJ2L8bRxFMQUWYtSG+fyb5pqXUOJQBqtfFq6pMwXUrHLfMLzLz73sbJvOF0hn9ITfV7ht3bpmKsjs91eIdHIx57JzGOuPIGRP852YxU+mnbmmlcRExik3vJ1wsYgRwTFWW0hAxSJJvKj4izaWkDiae8by9KVG7rYZOvtjGV5dv/5HnlNp4+OY43FSpq75qSpm6ruHyoGkFmk/jLUE0wnttzoEOxfuIDdZAXl2w6T3lKJ4LbUEIwkVeRIt49pbUS+F1Pa0MFHbff1B8pSjmVjKdvxqkjERx+8QEPc+aOb4CJ4LnVXa1C1tvB0X2iV9hWILxNTg7RfCsasnUsg966RNI8pb3MBvo62a7e1rP95KXtn19IgHfMNAmX2dD9ap2/gJ/XYivxB+RG8BSDdWuuCiFgRdr2qnQrdXv9zi6LSi+2LXnQWoBjT8wylyIlO4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(83380400001)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?g1t1SNpMIFDQl4JSnbTss+gcpOAj?= =?utf-8?q?7EZekWAafTClS2dqSFdSdESQYk7e/T9eGb68XFzyUuboHXO3Pgvmu4x12nRA92ROb?= =?utf-8?q?9MWTENlVW6blijkt/JmyjfCgKe681n7W3jAQRoFQD9MtsIjb02oqVNViZOVQxb1ja?= =?utf-8?q?mqLgPEEdR2HF07g3AX9rcojc9zWD+xiJ9tG33Lk7hy/iHkfXmWWtBcK0LguW/6D+O?= =?utf-8?q?Bzo3vKM0mfRZw8DgKLF+grnNi9atGGp6NPZLATkhqUCnyYaJU+OBLE1FPPMUeTI1h?= =?utf-8?q?pWg3sErIU4vYAqG3Pdv6gn77TEDRzPd4e75TzWVG+n6H8Sd8BcKD9fHXAtRA1RnX9?= =?utf-8?q?Z2r/am3o6jTE9GIvXw7lrUL9XvDSgz5s8lHraoY1gqUR8uRu2F8l+bAG7z9EqVg0o?= =?utf-8?q?oW8wAavA7rwrY01keRy7LMWaQZMZS8FB39ET57FkKahgN1HRqJk7W0P13QY0lrmTS?= =?utf-8?q?Lvzf3g1Vf+y5nszIRfIXlFEKGPQ30ROtRZuRfL3cEx0GuALRSzPd5lSeRP7BmCiNj?= =?utf-8?q?u7v0qDm1jr+1zEAwxS3zae8ki4HIbFCIWVf34BMYIf+SabiMztcE+CMAonJKWqhTF?= =?utf-8?q?hrYvmukRz2wGdmKnN2adQw5RWsBYWjp5bweSqJ6kouJNa1+3KCD1QLfCK4nryMhUJ?= =?utf-8?q?xkUKqbbnhhexZe/c4/lNm8XK1BdCVliU15Aps10/IbrFZiSnAcGEo2mhhBooQeZzC?= =?utf-8?q?C/kgrFO07ifsHzkY8DndbMGT+OkuAqjJbDi0MuPmmPizAv+VS0p3lEJ9SgDikNFP7?= =?utf-8?q?1J4sqarrylYoxxjdNKgaayqoPNU/voivNsxhVPtoWPWXpwfqGMfQFpQphugWVqMUA?= =?utf-8?q?fvCs+OFvzGMDWvge2o8bqkaHNNKjvGVInzNUNxovloJMDw1KFt7d3bkoyjSA7/HaG?= =?utf-8?q?ygcyTt8ZrPpeUBA/lCsTOCELKRvd/W80zuC2hh+3pFodEzDtgxEfMexjlqmWNVjh3?= =?utf-8?q?aKEEyjq6bsTiloOkJcsVFcv8JbuWC9eC3PP9Fg5qeJSz1cRbK7dtP/yxIWNddxeEm?= =?utf-8?q?P4DDVzBy7p8A2yPucqZEyfO19l5OcFzZfYNzSraq6Y9EB0nkWqDEUbT1M1GvqOpxC?= =?utf-8?q?L1y8C/H7NFMuskwq+FcqS9Wu9kxey2K2xpaN0h8RuYgPldhNwetIVYPxOOI8gqHXF?= =?utf-8?q?UsTfZhsFffVIzVPEGCHQI9qPutz0zDuA/Jn7ZRamtfFGsc4qD8STCt9fiDHpz52UQ?= =?utf-8?q?bhvhQBVkz//OkB+yGN1stgUeNVxKxGkA7tEP/pZDSTVGhwNtsZQ7gnJot+HVkppky?= =?utf-8?q?Jy7UIqEnRfV/InKA+8O4cWDpAIINkqopqdxrSlpcnU4aeiqUbnjnfe81oVA2ckZNH?= =?utf-8?q?tRNZBsBK7F0DvaLubkVYvCI59E8M7coZaix4dxzjzPYlFX5BTLucX7/Q4c+gzAmO3?= =?utf-8?q?5uIH2ho5TvjlpMjYf/waMhOTyn8wUR3G109BF28wZsArwsnE/0LWl6SUrtjIegarP?= =?utf-8?q?5Lry0LToi0jr/0oDjXGhXXxCEEyPPL0s6YOuF6vsrPKVB7a1xKxdm4kPUmW0wbZMa?= =?utf-8?q?d7P08i1GT9syJJgu2JJwmtAoTyfwchiXGg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3572b221-0864-4c38-04b7-08dbdc35d9a2 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:44.8423 (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: QJv0bG57RcfHMemqhvTp5Q59tRyp76+vA70vIRZE6TitkJImxUwPX+yKcPhDPj7Qs/bMq3s0W0psO1xAhinqHJY6jzfAINkjKVlMsrLDYiY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the corresponding data structure and logics, to support the offload of IPv6 item. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_net_cmsg.h | 61 +++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_flow.c | 66 +++++++++++++++++++++++++++++++++- 2 files changed, 126 insertions(+), 1 deletion(-) diff --git a/drivers/net/nfp/nfp_net_cmsg.h b/drivers/net/nfp/nfp_net_cmsg.h index 9bc064d9d7..e177ac7cd6 100644 --- a/drivers/net/nfp/nfp_net_cmsg.h +++ b/drivers/net/nfp/nfp_net_cmsg.h @@ -58,6 +58,67 @@ struct nfp_net_cmsg_match_v4 { uint16_t dst_port_mask; }; +/** + * Match IPv6 data + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * Word +-----+-------------------------+---------------+---------------+ + * 0 | | Position | L4 Proto | L4 Proto Mask | + * +-----+-------------------------+---------------+---------------+ + * 1 | SIP6 (0-3B) | + * +---------------------------------------------------------------+ + * 2 | SIP6 (4-7B) | + * +---------------------------------------------------------------+ + * 3 | SIP6 (8-11B) | + * +---------------------------------------------------------------+ + * 4 | SIP6 (12-15B) | + * +---------------------------------------------------------------+ + * 5 | SIP6 Mask (0-3B) | + * +---------------------------------------------------------------+ + * 6 | SIP6 Mask (4-7B) | + * +---------------------------------------------------------------+ + * 7 | SIP6 Mask (8-11B) | + * +---------------------------------------------------------------+ + * 8 | SIP6 Mask (12-15B) | + * +---------------------------------------------------------------+ + * 9 | DIP6 (0-3B) | + * +---------------------------------------------------------------+ + * 10 | DIP6 (4-7B) | + * +---------------------------------------------------------------+ + * 11 | DIP6 (8-11B) | + * +---------------------------------------------------------------+ + * 12 | DIP6 (12-15B) | + * +---------------------------------------------------------------+ + * 13 | DIP6 Mask (0-3B) | + * +---------------------------------------------------------------+ + * 14 | DIP6 Mask (4-7B) | + * +---------------------------------------------------------------+ + * 15 | DIP6 Mask (8-11B) | + * +---------------------------------------------------------------+ + * 16 | DIP6 Mask (12-15B) | + * +-------------------------------+-------------------------------+ + * 17 | SPort | SPort Mask | + * +-------------------------------+-------------------------------+ + * 18 | DPort | DPort Mask | + * +-----------------+-------------+-------------------------------+ + * + * Position – Position index of the rule, 13bits. + * As priority, smaller value indicates higher priority. + */ +struct nfp_net_cmsg_match_v6 { + uint8_t l4_protocol_mask; + uint8_t l4_protocol; + uint16_t position; + uint8_t src_ipv6[16]; + uint8_t src_ipv6_mask[16]; + uint8_t dst_ipv6[16]; + uint8_t dst_ipv6_mask[16]; + uint16_t src_port_mask; + uint16_t src_port; + uint16_t dst_port_mask; + uint16_t dst_port; +}; + #define NFP_NET_CMSG_ACTION_DROP (0x1 << 0) /* Drop action */ #define NFP_NET_CMSG_ACTION_QUEUE (0x1 << 1) /* Queue action */ #define NFP_NET_CMSG_ACTION_MARK (0x1 << 2) /* Mark action */ diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index e918c67135..c57f5d6328 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -192,6 +192,10 @@ nfp_net_flow_calculate_items(const struct rte_flow_item items[], PMD_DRV_LOG(DEBUG, "RTE_FLOW_ITEM_TYPE_IPV4 detected"); *match_len = sizeof(struct nfp_net_cmsg_match_v4); return 0; + case RTE_FLOW_ITEM_TYPE_IPV6: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ITEM_TYPE_IPV6 detected"); + *match_len = sizeof(struct nfp_net_cmsg_match_v6); + return 0; default: PMD_DRV_LOG(ERR, "Can't calculate match length"); *match_len = 0; @@ -255,11 +259,52 @@ nfp_net_flow_merge_ipv4(struct rte_flow *nfp_flow, return 0; } +static int +nfp_net_flow_merge_ipv6(struct rte_flow *nfp_flow, + const struct rte_flow_item *item, + const struct nfp_net_flow_item_proc *proc) +{ + uint32_t i; + struct nfp_net_cmsg_match_v6 *ipv6; + const struct rte_flow_item_ipv6 *mask; + const struct rte_flow_item_ipv6 *spec; + + spec = item->spec; + if (spec == NULL) { + PMD_DRV_LOG(DEBUG, "NFP flow merge ipv6: no item->spec!"); + return 0; + } + + mask = (item->mask != NULL) ? item->mask : proc->mask_default; + + nfp_flow->payload.cmsg_type = NFP_NET_CFG_MBOX_CMD_FS_ADD_V6; + ipv6 = (struct nfp_net_cmsg_match_v6 *)nfp_flow->payload.match_data; + + ipv6->l4_protocol_mask = mask->hdr.proto; + for (i = 0; i < sizeof(ipv6->src_ipv6); i += 4) { + ipv6->src_ipv6_mask[i] = mask->hdr.src_addr[i + 3]; + ipv6->src_ipv6_mask[i + 1] = mask->hdr.src_addr[i + 2]; + ipv6->src_ipv6_mask[i + 2] = mask->hdr.src_addr[i + 1]; + ipv6->src_ipv6_mask[i + 3] = mask->hdr.src_addr[i]; + } + + ipv6->l4_protocol = spec->hdr.proto; + for (i = 0; i < sizeof(ipv6->src_ipv6); i += 4) { + ipv6->src_ipv6[i] = spec->hdr.src_addr[i + 3]; + ipv6->src_ipv6[i + 1] = spec->hdr.src_addr[i + 2]; + ipv6->src_ipv6[i + 2] = spec->hdr.src_addr[i + 1]; + ipv6->src_ipv6[i + 3] = spec->hdr.src_addr[i]; + } + + return 0; +} + /* Graph of supported items and associated process function */ static const struct nfp_net_flow_item_proc nfp_net_flow_item_proc_list[] = { [RTE_FLOW_ITEM_TYPE_END] = { .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4), + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_IPV6), }, [RTE_FLOW_ITEM_TYPE_ETH] = { .merge = nfp_net_flow_merge_eth, @@ -276,6 +321,20 @@ static const struct nfp_net_flow_item_proc nfp_net_flow_item_proc_list[] = { .mask_sz = sizeof(struct rte_flow_item_ipv4), .merge = nfp_net_flow_merge_ipv4, }, + [RTE_FLOW_ITEM_TYPE_IPV6] = { + .mask_support = &(const struct rte_flow_item_ipv6){ + .hdr = { + .proto = 0xff, + .src_addr = "\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff", + .dst_addr = "\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff", + }, + }, + .mask_default = &rte_flow_item_ipv6_mask, + .mask_sz = sizeof(struct rte_flow_item_ipv6), + .merge = nfp_net_flow_merge_ipv6, + }, }; static int @@ -419,12 +478,17 @@ nfp_net_flow_process_priority(struct rte_flow *nfp_flow, uint32_t match_len) { struct nfp_net_cmsg_match_v4 *ipv4; + struct nfp_net_cmsg_match_v6 *ipv6; switch (match_len) { case sizeof(struct nfp_net_cmsg_match_v4): ipv4 = (struct nfp_net_cmsg_match_v4 *)nfp_flow->payload.match_data; ipv4->position = nfp_flow->position; break; + case sizeof(struct nfp_net_cmsg_match_v6): + ipv6 = (struct nfp_net_cmsg_match_v6 *)nfp_flow->payload.match_data; + ipv6->position = nfp_flow->position; + break; default: break; } From patchwork Fri Nov 3 06:26:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133815 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BBA7043275; Fri, 3 Nov 2023 07:27:41 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 376FA42DFC; Fri, 3 Nov 2023 07:26:50 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2126.outbound.protection.outlook.com [40.107.93.126]) by mails.dpdk.org (Postfix) with ESMTP id 4FE3A42DFC for ; Fri, 3 Nov 2023 07:26:48 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J0aFUPqv4t3V3dVxqnYvYcFYBy0mIrirEQzvQoGEpKu2HUFsMH0J1idAM4Di1cXsBL6yCJ8yJlXP0nCAwycUJJ/50toLTnAA6Bptsu/g9dssf0O3Uym991Uf0cTa5OMKPoAyC6cCos3pgbKAZxAAwyo108mwpbIPceI/G+jgMyIBIHVwgL6H/sFsfOMzhWSHu3EtmDTzNb+m/sgpLCMNfiQJVT3fkKrIliLvFEB0VyltVht1kNKVQZupto4trB6mjF7ZESiF9qmsAOAxEl4Xoc5S8YbUev64BUL5MhanGifSLWM1DR4DcywqYEs3HLIDdLwZlYN3p0gLg5ZCNdwL9Q== 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=BD0kvMtwrMRAmCmKgToHcpmZuyvTMl4jeqG1DGoAfAM=; b=egyeUIFYHl27yQJp7hQmPB6xIgMTjQU/WmCnZ+GkQ0dDJOuN5+aqSH/FznnxEIy4I0mATErkGsVn1sqaOj7QGWexHfgT3L9yCxNw/ceyetbVEMHglcprNIjQdfV9qWb3LM/XyJEQFTegb7Cs63M7xA7hJD+jdhsspJ2wYo4adcyWSGu9yd03JG8g4irGoxkvm3S+ska2gh2BgkvG9jS4v58/zFgzqI3YGYraolTC/IWkSqQQZWPa7a86VKi1ZurlrqcmV721ssrrmf/I8XPfTvjIKA0ek/a+hNjBKT6RlLGUAxTbh5RNwqEbrGbxBUif0bC4vn332e6/blcXWcKI7Q== 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=BD0kvMtwrMRAmCmKgToHcpmZuyvTMl4jeqG1DGoAfAM=; b=SRhKiHiCA3epk6cxbyiw7jN2ROD7pKEnDJ3Zq4G5HTPKljB0tJgZUHIS532up2VlrYAs7I4mmZ3qpT7RxATMGS1oWO42vCIdskCjSuS7Ee07v2Y7V1EduqyTOC8bkxKYoe/sI0eHPEBsqZhR+O0+V/vOJ/jlSKQlnoGn0fkUZrk= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:46 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:46 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 09/11] net/nfp: support TCP/UDP/SCTP flow items Date: Fri, 3 Nov 2023 14:26:04 +0800 Message-Id: <20231103062606.2632012-10-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: 43449dd0-da2e-433f-5634-08dbdc35dabb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SMs2OrfCXiZ1Nyaj/5KvisvmqR3k9jNmh6vF2QUq31Tdc2ATElYhg8J+BS6VGBH8WGPJBjJQ3VEEMpcyjKSLFz4iLgPSexFXS5uCNEYEqhj3HloGgVVDiLIYxcJJzkJDYaKkcJQ+gJHxS6k+scHEEBRwd7avDz2PkO5LKp2TupbLdqvsUWfmcnVyA/S1gobpMxBmOLaZmcUh2TB2p2ERsfwzLk4z3gkamA1QMTBXzUYgjqXjZmMIHkvMiyois9Hw+8EUKnebeumhSI6ONXANrPh63DW9RZ58XcFSxznpvcysN/wKHGwJ1ffPVyjlWb0aDlJODmwFXqVYT0t9Xnnj0Fv6kdfosH8vnb/b4Tu1SDefDw/iP7meNZBXRbJF1MKl7IOkOYPgmOsdzo/uwOHnbWBjDd9y9klWZ1e4TQq4nNHaAuGphai3TawRCo3w10pIv9Qt6b9iB7SPRq6XxzVnWjbt5DPr6meQm5zw/4NsIaHmaUxdUEeSQjL1h0zaAEOX9FN3V1hvAMGJqjH5b4nRZ8tHm+lA9vWF6J5k6yt7yv7b8EK9AWbNzWupHwhF/dccgg3o2dkvIyzo0SvHIlY5FuAmRydAo6HUADT3Oi+z77E2VGYn8S45KkenAhIFhuL+8155UwwWWDM6zqkaEK1pdmagYNZeVWkQL45dOaxMZojL7EP02I4hlv/r9KVJXguUSoMW7wUlzQfLd1/dqTDAPA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: khJxz9/fBYcrD3sNs7GvpXhk/1o5/t5XbA7C85jVmFWkDifzkkO6vPVAXFymQ2cQy5jCTb66FEZ89fD+wsC2argblsPTgiIUh6G/WqJ2ZfglCFClmNj7zDj0scy6zFFpexCur7nClYlorTHzTBCLhGrguBHa09vCQQY/9d/YH6vNTE2eLF9uZs119bRf/f/FwqFXLxmRde/eDLZi941YIcRyBrLngvbDZT7UYUMyOunDEcuidX7h7M5SanUaBdPkj5J7lGVIhyq2i/ZjqF7bK4JC/Q+ECll5Kxh3gcnYrp0ERSXfzEpazCwaCUI9c3GQFxOr4szbEUI3S1X2/3lw+ZZMxKuEKY/dJcw1q10ZM/JaGL9VXPbsY3BEXlxAIFBn8pOqBopzwS0VCPg8hTJwfJ4OhZhOQ6zsYs+WhtFWXlFZcEcXcPMmp9uVNEItdDjPmbKesDp7ofEbexqjXYj0t4HlIi7oO59htOLKDhyqh3MXEiVC6z3pmuFVZ9RzPtiprtIfKFr/o1zX9vo3HTF5pjVhUqtb/4YRb/KTvvRp66Bu+WmT3pOeHxijDhMIpjGwkOfB4KWGOuSuBLjtANfxFuqk6nBqMsCohXXhfKghNF3Ipphav2hh83jc7DQoRwlMb1cj+sf9vJkdhCoBJ11UuvEo+r4sxFkYxbJBTzxB5plPaOIhpJ4n6unpzGJFweZvrTMXLd3QuPnzuIME9OnKMvtV8KuCiZNUmjymB4IzV3FEI2oyjqO+IO2lnbYonVwC02jhxjoqeOS8UWtsR4zysWFNsmBbEacmJyBEFykh35DKG2Gq2IZ+ybeEWDbpQEyEVyY0EwYNWU6lpURp5yAszZvxWRh/7d258P+aMHSaEx/xPFkSAQDtglR1C2iK9v20IVbNYBc1N7h6vA6HK/oBycaHnMQPumfoDSIw72XPNwt4LRhk3VkmPcMVkMPMeDiZpnezsc88jCTI/VbUBpxACZK9yU3WA+Y6Geizl3hU0qNpc4qob8LWvMMaDKrEbzBv8qzHrBhMtvNpduCGNdb/4iMKawIjG1zxPlU7XF9X3k8hBD7fblFl++UC/t+EmBxtotrMAPdP/ULWBPqL6xa5eSLww4uJunUzvLDAjSH9Wxtwj7Xsr21+6MFZuFggcGWESmHziAGAijQnkuXqqRVrBZ9evB831Eu8LBHxVvfARdJgJDxJ/yInCETlszucUpff2RH1aQO5yTMeGjJYs0S6jVtu2xLCAEtNtRoEdsTu4vHd9LtbPUWd967BHZPYfMglbbl5kbw8+KQtDCgG2BKDqILgPu9LZteq0o4SvpMKMvfbxQ2XSrLcLfjiywuezdu2+uQ2duksuaVOB0v4kuXGwKsSIfD3d7fCbnDEIiLD36fDpLplalA25xwNiwZer8dZxhj3D8tkR/F7yPN0EUnSxRHt1jnvF15jXTAcvQzkf/Npt6zQAkVr7zAsKWcmDk7FX3Ltyf0gplBqIS4MO9oqVNr9D0vfG6wFsMc7zDSfs8d1NoUwdNFttZc3bZ2r3Ir+6EB1U1lBeOkytljkJssdpVVb6SCt9OeMsaYtJaE+0Ea+aC4279VvQQjmh2QBN4OOiIaLLucBPAPRMfXsOhY19Q== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43449dd0-da2e-433f-5634-08dbdc35dabb X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:46.6736 (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: QtPdD34uMzvH95HLDThmWpMq7b2v9mqGaorzAeNAVTtTkjIpY+KAgkb5DSmQ6+v/zTTJmQOgJmbL+NPmImTSqRgEAYEiFbGFD4w6azvIRRI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the corresponding logics to support the offload of TCP/UDP/SCTP items. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_net_flow.c | 86 ++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index c57f5d6328..d07667a62a 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -299,6 +299,53 @@ nfp_net_flow_merge_ipv6(struct rte_flow *nfp_flow, return 0; } +static int +nfp_flow_merge_l4(struct rte_flow *nfp_flow, + const struct rte_flow_item *item, + const struct nfp_net_flow_item_proc *proc) +{ + const struct rte_flow_item_tcp *mask; + const struct rte_flow_item_tcp *spec; + struct nfp_net_cmsg_match_v4 *ipv4 = NULL; + struct nfp_net_cmsg_match_v6 *ipv6 = NULL; + + spec = item->spec; + if (spec == NULL) { + PMD_DRV_LOG(ERR, "NFP flow merge tcp: no item->spec!"); + return -EINVAL; + } + + mask = (item->mask != NULL) ? item->mask : proc->mask_default; + + switch (nfp_flow->payload.cmsg_type) { + case NFP_NET_CFG_MBOX_CMD_FS_ADD_V4: + ipv4 = (struct nfp_net_cmsg_match_v4 *)nfp_flow->payload.match_data; + break; + case NFP_NET_CFG_MBOX_CMD_FS_ADD_V6: + ipv6 = (struct nfp_net_cmsg_match_v6 *)nfp_flow->payload.match_data; + break; + default: + PMD_DRV_LOG(ERR, "L3 layer neither IPv4 nor IPv6."); + return -EINVAL; + } + + if (ipv4 != NULL) { + ipv4->src_port_mask = rte_be_to_cpu_16(mask->hdr.src_port); + ipv4->dst_port_mask = rte_be_to_cpu_16(mask->hdr.dst_port); + + ipv4->src_port = rte_be_to_cpu_16(spec->hdr.src_port); + ipv4->dst_port = rte_be_to_cpu_16(spec->hdr.dst_port); + } else { + ipv6->src_port_mask = rte_be_to_cpu_16(mask->hdr.src_port); + ipv6->dst_port_mask = rte_be_to_cpu_16(mask->hdr.dst_port); + + ipv6->src_port = rte_be_to_cpu_16(spec->hdr.src_port); + ipv6->dst_port = rte_be_to_cpu_16(spec->hdr.dst_port); + } + + return 0; +} + /* Graph of supported items and associated process function */ static const struct nfp_net_flow_item_proc nfp_net_flow_item_proc_list[] = { [RTE_FLOW_ITEM_TYPE_END] = { @@ -310,6 +357,9 @@ static const struct nfp_net_flow_item_proc nfp_net_flow_item_proc_list[] = { .merge = nfp_net_flow_merge_eth, }, [RTE_FLOW_ITEM_TYPE_IPV4] = { + .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_TCP, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_SCTP), .mask_support = &(const struct rte_flow_item_ipv4){ .hdr = { .next_proto_id = 0xff, @@ -322,6 +372,9 @@ static const struct nfp_net_flow_item_proc nfp_net_flow_item_proc_list[] = { .merge = nfp_net_flow_merge_ipv4, }, [RTE_FLOW_ITEM_TYPE_IPV6] = { + .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_TCP, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_SCTP), .mask_support = &(const struct rte_flow_item_ipv6){ .hdr = { .proto = 0xff, @@ -335,6 +388,39 @@ static const struct nfp_net_flow_item_proc nfp_net_flow_item_proc_list[] = { .mask_sz = sizeof(struct rte_flow_item_ipv6), .merge = nfp_net_flow_merge_ipv6, }, + [RTE_FLOW_ITEM_TYPE_TCP] = { + .mask_support = &(const struct rte_flow_item_tcp){ + .hdr = { + .src_port = RTE_BE16(0xffff), + .dst_port = RTE_BE16(0xffff), + }, + }, + .mask_default = &rte_flow_item_tcp_mask, + .mask_sz = sizeof(struct rte_flow_item_tcp), + .merge = nfp_flow_merge_l4, + }, + [RTE_FLOW_ITEM_TYPE_UDP] = { + .mask_support = &(const struct rte_flow_item_udp){ + .hdr = { + .src_port = RTE_BE16(0xffff), + .dst_port = RTE_BE16(0xffff), + }, + }, + .mask_default = &rte_flow_item_udp_mask, + .mask_sz = sizeof(struct rte_flow_item_udp), + .merge = nfp_flow_merge_l4, + }, + [RTE_FLOW_ITEM_TYPE_SCTP] = { + .mask_support = &(const struct rte_flow_item_sctp){ + .hdr = { + .src_port = RTE_BE16(0xffff), + .dst_port = RTE_BE16(0xffff), + }, + }, + .mask_default = &rte_flow_item_sctp_mask, + .mask_sz = sizeof(struct rte_flow_item_sctp), + .merge = nfp_flow_merge_l4, + }, }; static int From patchwork Fri Nov 3 06:26:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133816 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D984443275; Fri, 3 Nov 2023 07:27:47 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5D08242E00; Fri, 3 Nov 2023 07:26:51 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2101.outbound.protection.outlook.com [40.107.93.101]) by mails.dpdk.org (Postfix) with ESMTP id 2B4CA42DED for ; Fri, 3 Nov 2023 07:26:50 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mEiv0Vn2Q1IMXLYL15Eufa2gyF9+llz90pD+GEikBmU7Pb09enN24XHeojdDeVgao3uy0LSMT+VjG9Mesemqo32WsFdOJF3EhAtZpatjXWjlrMvD6Zi8QRwIkj+pCvnBlUjoAfC+QBB6TN2xgAOvjAVMrUsvrHaeiIpQJi/QCrfJD6ygjMWpFGmZ7x4miQv2k/62qjK3cqkzzxwv95EApyG4KJeI+r8GFgAx9dbps3RBMQZabPSxI6DteLYhW3pWpHG1j5fI9y0kxoKS4qjFgFlYWz16r0gM4xqrycQ5n0MUkyrPOX4rPGlWvK0kawrI8FMxRTsUximwz+NdkJ5Tjg== 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=8z30pFqFMvvXdmBsUIxm5I8o/NTM3eqAFfxbbkxVqWg=; b=glQDS/t8KhBR+RgxSrcYMrLTCny1+OVJwfl5xt5LnZxi9FzaeipXS/n+kXSGA3oRwm8m2fH1imMZCMvE6bMkETo1B497LRKFbWYmgLBqnVbHuKjGRIeyRZUfgnIs0ArX0Q4q1cP2oiKRRi4/Q19H9n4Zl/2NrhgMj2n0npGgnNUHKiBpRwyDAi9utbn8qwN1wIhn2W9rTMTf8sL3pVlyOsPKvblcfePua9cL3DiIEXoPpCUI1nUiux6ULTsw6NDdtlFLXyc7l5ffkFiwpqbujHLTtlDvpb219XXfMB2ljWDaHNQBw/NsquzcEPaBF043mFRZcd89T27YYNU5w1FazQ== 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=8z30pFqFMvvXdmBsUIxm5I8o/NTM3eqAFfxbbkxVqWg=; b=KqCeeO5soCISCEf2HG/ecWHsq0ovUcZdTlXrsGywDTi+FSARyyr7MLiLp7aBANqlrJDtgmBb8G1cF3rP14+z1cDRnY2pmiYUEvKMabjx4VfMHUSaYIy/qy7laxalakc3sZvm915Pa2atZ1VXTwgUQTyRCQ3uIZuPh93DY24LaLw= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:48 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:48 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 10/11] drivers: support MARK flow action Date: Fri, 3 Nov 2023 14:26:05 +0800 Message-Id: <20231103062606.2632012-11-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: 4bb5b3e1-b57f-48e7-ac02-08dbdc35dbd4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bHJaXcmDwEcglhqbto06e1KJh2sQGSqGRWqxhvCPL3fFeDHygHpG4t7ARdQLKhHOcOiC9ArHQ2iWeZEugEWTQsRT3mp78QmuFZTI/oXSMY1GWgGz8Ap5yADlnIT07SyyAFL4vBu8BwsXS7ooIEIOdqUhxTPsmIcvBgTW9XMulphtnAx+jH9xudTKpGu+2BOXhuz3+aQecykDReC+it0udNJ+RhMJ68azPiALulwh1ZDZrcJwrihMxwTEbjbvuQbw31NQdpmhKFr5gD58/sdHxSqgf9+3Ysy8BqCKkYiWdO5v2SwVS7oD3AGNfvjNUs+aVHBkbKq6bEvzVGzrd4ozVeOeHb5wVkxtnymzhOZlAdwlRJS/TexejCD8vDs87+lFmrEU0tdLmYr/q8BuZWE7qN7rPhmQV5suCrMdrkWyfOWmVH1KpkoQQlSzn5OKlw4G0tSu9mQQKgoFLTqXJwPc1aMOcy7vACbs+mQHDE2PwqV0pEVw3mhW8ASNqFP9IEHTw+fpQz1+rlmyB+OCjnW+VVCW5fXr4Mfje8gF5u+FNT84VvTogOsqLPFFxnA3WvXFyPIBdQttbz2ICDQ6H/+pUMly7cbuxnwP5ABwALzNNjiSnv8IDQs9fC2ggFHalxR290bVGovLlfK7/w8SYbUaOKcTBtKtwSWIbSp5BoFma2Q= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: OnErGWQVjQHcUfSQoeY7+OmJkG4WkuOzQ+eGeGiMSBSC81EktBHW+xhuYLuieN+NSqsx83sxEt73d10aErrdcU/gDLDNezA1JzZCHr2+raJFZWey0h6Kz6VgfNzYTzuAcCseeV6gTQmT0eCwqkEL631ChDiMptm0Zbnh+EYOU6mnzzAY6NuG0CvUAPdhwyA7337Zd+dBUFsbYq6o7cJDL8pB30mSrKcQnxwV9vqWkgaAdT80q5v/CjbWVF1fNmEC5p5avKWft2wIEEPD1EMn+0STXld9wTX9g9uXPzT2sjx5+5yW6JUdkItT+ZibTRbMcDvQBf3H0zyNvvgDlM+wsx/XNd98JiRSIQpgmNscGyqqFrtkNE5V+Yl1Ze6SIbtfg5mfXgikbFv6FvtlKHNVDeOdJhPo98UXjBse4J5zDj5vsXjCV5Gl/WEn1Z7op08Soodb0jbc4OP7V7aijtWwIH4E8Rh1ARQ3syEGbYhlBhVaX+DSy37rCf5sU71o3fD2Ausre8aLoRgv3mChN8mZMjNH0tDkGPkvUve+aao733hH1FDnTMT473x9plW+6C4fRtMCKfj5jNezbwatnN2XJS3p+aR5zNuciignLOYwaZkHA3M3Y/EhI1qUK9qFGhIjXEMNo2k0fi4Cp6OmOy2tjBWRzaWn3LH6DAApkBnkfACGH59lGz+UZQXHdoR13rnnTmr3ke2UvT33Igz42cQc5o8Rp2fu2KJH/ECpfAwkfr6+E6+ATnCI8P1iG8YDL8q3tzluUZT7yI3v61jYTIrf7OwCen3MALJ6rSUPUEwifgTkXRz0a05a7EOvEyfN/HlxYTq2C7EnRVELyfnQXYGQp6ctGRM3VMLLwyvBYg7MX6ZI2phVoCzg5m0nqLmsfUZUUkNbXE6/wlH6VNSVlMCBmyCoXtT9L2cakr5dG/+BOfb/ZtqziEcPvAB5DwLzPQ36iOX/KlsbnwLWTeW4YGm/byLs2ClcYKkLsa3Uo5r+g0EQtdMTGioYhcRFFCNzhzxVRtbFbsjK0DnKS8toFaQJVz9FJq8gHp/3qpgt9HIUu8+qjaZKpYx2b4nCJzo8sHno2DtzHyUUKObTJqENqOMJZlHLOfBe7jsZtMJZv6Cl9UPmVQet7Kd6ROLJtm7ot/jXc1v2ahMNAOFMcK6fMA4RqfxV7l9gtz82fpFGP+lGNguGxYtHXX2bIoChNXqon5zevwZIF1iHOu6FsqT3qrShIniaHRjIozd7M67aeMpgtiqbWIrltOvZFlFIXX8DwwvOiRDW3yLRCZS+CZ/48/Qx4EEt1lrg/8RQFYrHEXBXmWpNOldYlT6kCJdNaxhO7tVnwBoz5uR0cym7i4wTSr/eQ01Kk8+wIs8Bbj9KMVAdtIG0H1ezEgRaM4PUSz+DFNRd04oBc7Xz1b4vqT5XO+abF7zHH0WDdyV7SjjUEfQN4IJ0D6EtLDx4nt4Jy9uVE05+OCKAO2xlNjcuJcO4b+qSK5LLTGVcUJbhwt7ZqCoURsnEAaTg5wlIVWzET9Rv5BvKidqE+H6iVj5whMZJzUKAqk4F2WO7lwLWX4bUqN+Qw07gHSgdN6EBwE1y1yZ77pNN+Sc0OfCqQBQRZCura5GPoA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4bb5b3e1-b57f-48e7-ac02-08dbdc35dbd4 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:48.5284 (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: 1vo5/vdFyJAVlzaYheU+HZn1Xq6H6KP0CVT2E0HdDLPLbS6br7eIjn3MZYUZH1HnU0Y9U8RM5wTwqxGN7F9OK8SGiKKtmZ3iaspjofEbn2k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the corresponding logics to support the offload of MARK action. Also add the related logics to parse the mark id and put into the mbuf structure, and assigned the offload flags. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_ctrl.h | 1 + drivers/net/nfp/nfp_net_flow.c | 18 ++++++++++++++++++ drivers/net/nfp/nfp_rxtx.c | 18 ++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h index cbde987736..d65fcd17cb 100644 --- a/drivers/common/nfp/nfp_common_ctrl.h +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -33,6 +33,7 @@ /* Prepend field types */ #define NFP_NET_META_HASH 1 /* Next field carries hash type */ +#define NFP_NET_META_MARK 2 #define NFP_NET_META_VLAN 4 #define NFP_NET_META_PORTID 5 #define NFP_NET_META_IPSEC 9 diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index d07667a62a..674aff075e 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -538,6 +538,20 @@ nfp_net_flow_action_drop(struct rte_flow *nfp_flow) action_data->action = NFP_NET_CMSG_ACTION_DROP; } +static void +nfp_net_flow_action_mark(struct rte_flow *nfp_flow, + const struct rte_flow_action *action) +{ + struct nfp_net_cmsg_action *action_data; + const struct rte_flow_action_mark *mark; + + action_data = (struct nfp_net_cmsg_action *)nfp_flow->payload.action_data; + mark = action->conf; + + action_data->action |= NFP_NET_CMSG_ACTION_MARK; + action_data->mark_id = mark->id; +} + static int nfp_net_flow_compile_actions(const struct rte_flow_action actions[], struct rte_flow *nfp_flow) @@ -550,6 +564,10 @@ nfp_net_flow_compile_actions(const struct rte_flow_action actions[], PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_DROP"); nfp_net_flow_action_drop(nfp_flow); return 0; + case RTE_FLOW_ACTION_TYPE_MARK: + PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_MARK"); + nfp_net_flow_action_mark(nfp_flow, action); + break; default: PMD_DRV_LOG(ERR, "Unsupported action type: %d", action->type); return -ENOTSUP; diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index b2a9ba6875..a04601edfa 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -25,6 +25,8 @@ struct nfp_meta_parsed { uint32_t port_id; /**< Port id value */ uint32_t sa_idx; /**< IPsec SA index */ uint32_t hash; /**< RSS hash value */ + uint32_t mark_id; /**< Mark id value */ + uint16_t flags; /**< Bitmap to indicate if meta exist */ uint8_t hash_type; /**< RSS hash type */ uint8_t ipsec_type; /**< IPsec type */ uint8_t vlan_layer; /**< The valid number of value in @vlan[] */ @@ -290,6 +292,10 @@ nfp_net_parse_chained_meta(uint8_t *meta_base, meta->sa_idx = rte_be_to_cpu_32(*(rte_be32_t *)meta_offset); meta->ipsec_type = meta_info & NFP_NET_META_FIELD_MASK; break; + case NFP_NET_META_MARK: + meta->flags |= (1 << NFP_NET_META_MARK); + meta->mark_id = rte_be_to_cpu_32(*(rte_be32_t *)meta_offset); + break; default: /* Unsupported metadata can be a performance issue */ return false; @@ -434,6 +440,17 @@ nfp_net_parse_meta_ipsec(struct nfp_meta_parsed *meta, } } +static void +nfp_net_parse_meta_mark(const struct nfp_meta_parsed *meta, + struct rte_mbuf *mbuf) +{ + if (((meta->flags >> NFP_NET_META_MARK) & 0x1) == 0) + return; + + mbuf->hash.fdir.hi = meta->mark_id; + mbuf->ol_flags |= RTE_MBUF_F_RX_FDIR | RTE_MBUF_F_RX_FDIR_ID; +} + /* Parse the metadata from packet */ static void nfp_net_parse_meta(struct nfp_net_rx_desc *rxds, @@ -458,6 +475,7 @@ nfp_net_parse_meta(struct nfp_net_rx_desc *rxds, nfp_net_parse_meta_vlan(meta, rxds, rxq, mb); nfp_net_parse_meta_qinq(meta, rxq, mb); nfp_net_parse_meta_ipsec(meta, rxq, mb); + nfp_net_parse_meta_mark(meta, mb); } else { PMD_RX_LOG(DEBUG, "RX chained metadata format is wrong!"); } From patchwork Fri Nov 3 06:26:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133817 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 79BE243275; Fri, 3 Nov 2023 07:27:55 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C3FC642E0F; Fri, 3 Nov 2023 07:26:53 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2133.outbound.protection.outlook.com [40.107.93.133]) by mails.dpdk.org (Postfix) with ESMTP id E111342E04 for ; Fri, 3 Nov 2023 07:26:51 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lBcImTVglGjUVOcg7mdUvD9TU+/RvSCBTlVP8SqevWimm95FWL5vvPuEGbzNWU5Yta9Gg3ouZBFOKlCPl0f+z5m2AfnvbMqxNgot14pjrgd1EoGm7hgQGZrQ4OyLMpAnLcQUrpyEjGdL5T5ITBgPNgifM5G4u/LAwaZ1G0/lQbY3YhU4ialhvwWRixDUqy+8uC2S007NdXGxEo2XqqQcfA/zJWIeFlmOpPFwE9mCUFIemj00IzmHmrDVFdlJdwlj1Bf3iHQQ5dqG9cTxArRDQGUleWzXIan+o0Ar5SOoNSSGusP2Am6URhberSfeswRSRAEu4/vRvq8eRcZtIYlewA== 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=879wy7GcJWo5iRl2baKCKwUsvw0b/5f4o+Ki9PMDzGI=; b=KaCMtWWNfW88yhhKsVMNJJNlIdVVM7rXbahc33gC5gkza36VFGJh2Wwdgc4bICwtgB8ojX/WtTJkkKV1UNfMyXo5dTWcwTPiZVsoO2tPeY0xUdMRnKSqyYKN22IbBs7YxZyPIW1jrpR0dsxSuwwwvJB9iGDSBFCIwSlLUTj3TdKnLjEP27stvGESI/EltdskgfVULf2nRXbbHlEhwsbaRYk6hfP88n2eJSF3cPMfni9p8PRqnBwIewIczm6X7GP64BQbJRJ1KvTCtkkf3SmakCNoZjV3+OPTFMo/koGeaFG4XAEJWdUNd6AbDFgcju/k1ciPXaBYJ2EOGtyFRlEMsg== 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=879wy7GcJWo5iRl2baKCKwUsvw0b/5f4o+Ki9PMDzGI=; b=oy4tWRuspveP1nXi7iwqMJY9MREWxTkQaFEkB+C3yAjDRBnJ6aRTEw9ao0E34bGcOsWz/lA2I/qolq/waR68XrhxXaO+ANc8/0onK7LppMuIzIwNAnAWSazKPLbA4VS4G8si98AqkxWTyGgd+BHqGBPy/qIjyVUKB+B+ZTX+giE= 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 MN2PR13MB4102.namprd13.prod.outlook.com (2603:10b6:208:262::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.24; Fri, 3 Nov 2023 06:26:50 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6954.021; Fri, 3 Nov 2023 06:26:50 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 11/11] net/nfp: support QUEUE flow action Date: Fri, 3 Nov 2023 14:26:06 +0800 Message-Id: <20231103062606.2632012-12-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231103062606.2632012-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB4102:EE_ X-MS-Office365-Filtering-Correlation-Id: f525560f-755f-420e-01eb-08dbdc35dcee X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YqewviSCWiNymLwLthDBMQ07dzMsoZsxGvtDNUDOik3bTW8XO6QOhUazSQvZN6FXirKnwT46NNBDFbbbDVlvCSBbAj0i2eElPV7EsI8sIGojAL57N0MyFNnx1E3qI7YlsnJGa174iMhQQO6q+CFgsHkRyWGFJ8ZrrGjhXLvD7FZo4cYwnxImmshIx0chF2xyB0GMCXcNegscOz2IqSnX0xUmbSVYLDg6oEgLIcMFAIcvhTvx6sh5s7qk1DSnMZOV8JES4VjHbQvGVUTPSftfWt5zzhffM3iRA1tW2kaL/9reKGvmK7alLdn/mEYhamwAMgnoc10JzUdbFA5QnuV2KL0xMwkAdv/dBdNKO/rIZ7UYuUJVfrFz0+EnJdemjXC7zQ4HVlphqJPeg42TLofzrSOne8pjbkiRgSJ/tOJKxb1y1W2aDKt25fExwxbCsZt0P38xwalzLIUQqyGnXHRj1MqNWQ/Fbb/txACB+sOyIHAg0SsNrW0B1iUr+jiUhSJLiNjl/rL7QfFkit4RmSyoLcyXZAey628R92B8yksefcI1ExgohNe9gZWLpjfbxn13hyhC3yC+QIiHsj9S9oxdoi63LeeHMKpWdvYvQnai69NZeOKc1bMH9Y4hyHICy9fwIqCdoCxu9/GxrwtOA0Orx1Lv3p+REWVQrxNJB6mdazc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39840400004)(346002)(396003)(366004)(136003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6666004)(6486002)(478600001)(52116002)(6506007)(5660300002)(38350700005)(41300700001)(36756003)(2906002)(86362001)(4326008)(8676002)(8936002)(44832011)(107886003)(1076003)(2616005)(26005)(38100700002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GypxpooF48tAOAD39Kr2FAPIoaq7wKPaaIKTQnwjcjfJmfXk9YBd3gQMBMdOq2jlXbbc1OP0orsTNQLTovRHE3dy/P6BgVTwSyzDPPAOLS9wTJsViOD15juEAZzj3GsXeF3Z4ADbFoeYxEk20besU51yBYnKbOZunzr08q66JCIy6d+G7ZXZNUK0pXS2wbWb/kIM6ld9eg0qb49pERP+6rbKjJjFX/oVdYYVJEAAnbQxwsn3CtkqVmrHDSgw+R1XUqwM9tydqqdiKTkytLWh3nekaVobUQbFSY8IJgxpYNXadLTf6kgLHfI9UO6G1nz/FXMj25HJM3eX/lGJJJ4n/EemVBQnMVtgz8V/wJShmTMk5bkKLveFqbPAAT3d0blv9cUqNk6AX8A7y8fv2rNJW8YI7NmcuZhXoXhXOWpVofzdpVFpBNcfx2Ta2zgkQQ0RvpBk6xKVtx1fLAq8zSmuT3emAKy204Co1ZOWF5SFpEoioczCUEp4F+b6wEQbElL22bZ04RjH+DZG4h7GDtW/e95BHU9vhiVscRJe6PjaOXX3GJ/pvK5C/v4+K1W2JE5nISOOQrNk7pF08U7BnmNT3niKsSI7YhIDlkQJ2YtfYRLNBSZ9Dl8lxxmyAjbuNIE6OwJ9NQPMKQym+i0t+PWsXEQnD3dMbGgFkWXyu2RkTjgzCHRHqGGw23EAmDIVoYLXyQ/UkMK5wv2/rngRXltrCi9cVDZQZWfRjY6PGaLKesjNSQuybCy22HS3p8znHogrn/gfo2cDrJO9EcHUl2rrmYGWJ0uxeqnzVsXs/+DUdXcggYfoXgLOJ9S3l72mylMmsWfKG8QbKIgqW4u6PSK9v4w9iAuykSSsyabGOCzqkBVy5wzPvujPpb8jxHLhNfONbMzmAKGErswc8n7iKPAlqJZqezpcEQazKjH+o7IEgZo9pacEggH5rmTfrZJBNMTWLPpfoDAnZ3hS2t/BCIergVzuGJ85fWjylXPxzwOX8dZ8T/D9phx8Uf6bXJ8E/BZyYVzVqDrK2EnnZykqVrEJD6cnTsajBqSB1F0fCNBju0jrT8a5kVoN6qx52aGunBfzr/2UCXujB2u7sceSnZAVTYewds0pMTq41V0LAl8Dc8xKKEqYHgwKnIgYdNnHUfCpxLxxIuDSGymPYWH8Y/iHW6Rlm0rE1lrGW8MkKaoFmBCsuH+oRA19P2EdHLqFyGS/WPPL93atYaQ40QEms9r56icBWNnXkfhEUz4+IHDKkm/ED/P8KDiZddjm3ppVMPo+nR6vpPYMNaCqmHkapA5/PQUKIr5iZ1I3JHLj53KBdlKHH4AFHq/5yVk+sWmpSn0UKSBJjMtcskavMFHW5UXo6qQj3bzEWxqWW62a49WWLC5hW6wEpcIU+hVrBQwu0AU1PGEM+jhDNSa0hCSAozx9VUDWo3WKkbQcL6zzXlD1pSF2ApnyB/LKjUvU63MVhndqrxuMnI19YkXnverrNqP6emLCgtohPKo1DiX0yd46jt/yH9WbGDLa4XUyFG8YOjBErNRdCCZ43edO+kwXOZd1qqu59KBkyRHfZ5bWdU/cUg+WaWfi2QuL6kSTmzaV1WLPQaE99cerhnKMX5eE+cyuLw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: f525560f-755f-420e-01eb-08dbdc35dcee X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2023 06:26:50.3827 (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: iu0StTEdmpbyWYqBSF+wg0QEnZP22eHE7mklhM8bM/9jGV40ihvXxNP1i7T6KqCNgeyb1ptu1Un33wVPkirBS0dAIpm5YbEoYuV3m2JGaEs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4102 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 Add the corresponding logics to support the offload of QUEUE action. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_net_flow.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index 674aff075e..67071272a2 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -552,6 +552,20 @@ nfp_net_flow_action_mark(struct rte_flow *nfp_flow, action_data->mark_id = mark->id; } +static void +nfp_net_flow_action_queue(struct rte_flow *nfp_flow, + const struct rte_flow_action *action) +{ + struct nfp_net_cmsg_action *action_data; + const struct rte_flow_action_queue *queue; + + action_data = (struct nfp_net_cmsg_action *)nfp_flow->payload.action_data; + queue = action->conf; + + action_data->action |= NFP_NET_CMSG_ACTION_QUEUE; + action_data->queue = queue->index; +} + static int nfp_net_flow_compile_actions(const struct rte_flow_action actions[], struct rte_flow *nfp_flow) @@ -568,6 +582,10 @@ nfp_net_flow_compile_actions(const struct rte_flow_action actions[], PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_MARK"); nfp_net_flow_action_mark(nfp_flow, action); break; + case RTE_FLOW_ACTION_TYPE_QUEUE: + PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_QUEUE"); + nfp_net_flow_action_queue(nfp_flow, action); + break; default: PMD_DRV_LOG(ERR, "Unsupported action type: %d", action->type); return -ENOTSUP;