From patchwork Wed Oct 4 09:35:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132294 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 B89AF4266A; Wed, 4 Oct 2023 11:36:32 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 06155402EC; Wed, 4 Oct 2023 11:36:29 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2126.outbound.protection.outlook.com [40.107.243.126]) by mails.dpdk.org (Postfix) with ESMTP id EB6C240289 for ; Wed, 4 Oct 2023 11:36:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SWGVvuE5dnDAtJxS8E00EhVjh8jgT6hD21sVaafV688O/yFsn3M/iuOD06RUt8jz/nfY/1xQ/1QgPt/onbfe8nynVPo34+026GQN6+UxRQnqBL1cJr27JmXBl1zck0QZbvp/NZ0KAusvobw2r5IQocMlwE42No3Za1wGGqVVlGQPsxqEn1jHgMCgFiy/JNzyKpKSRROe/LPNAVXi4p7eiCOnoWOhMmGr9xFC/igNjDzudIT5skQnHyEphH2ydR2Fp/i3TKLO3ptly/217nyDD1ZWRpstxUG6EJwUrZ3Xltahc/RhYifB0+cKmbF9QDjJCmzzMTSYZbnqyGZgXPeJXQ== 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=LTSL5EhAxJkOQ2c0702HEgJe0y0TEYktLlnmF+jxK8c=; b=Y1n0g7IBSEqw6/jWokitD32WxnqnEzb2aUp0e62jxWeCUpPpEyNtYe/grHv0zBM1FLli1Q6ikAMoE0VIslzgyz/C8VbC40wWK3wlaxjSWdqZFRP4DyEcPnoNBZiPDuuUwOzoxZWKjQqdotheigeTZ7DxGXWUlTsrryQqIgpJftuqN8xFkTZPMC0YYs/YNfbUxLJ1DAKAL8Y7hT1SBWIO80V9DteUdKHvjACSGjeSBSxNYj8BdsvZVKtU5NdBKWSK7xuY2pJrzpwDp7X+Mz5whGVmVOfjF1BL/3tkElmWnd7BiIoAkPQGs2BaOrtECgSkA1jUIV2zdc2WAIjThXF6PA== 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=LTSL5EhAxJkOQ2c0702HEgJe0y0TEYktLlnmF+jxK8c=; b=pR1VASWd3+v4rrZDgSn2jMgVyP1SXSrTdWjgPyvSiIcscZQk6y5fUYwaHqemy4Y+QOxkSUeLeASJXL0AnBEiCq0jO5X2gO/NlE7LI9crE9fvzMjW2k15mupDhKGVb9fJJoVla3RGg+o0RT2LItYgbpyyi+ceuKcIwlGho6K65X0= 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 CH0PR13MB4764.namprd13.prod.outlook.com (2603:10b6:610:df::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.33; Wed, 4 Oct 2023 09:36:25 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::28c0:63e2:ecd1:9314]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::28c0:63e2:ecd1:9314%4]) with mapi id 15.20.6813.027; Wed, 4 Oct 2023 09:36:25 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He Subject: [PATCH v2 1/4] net/nfp: prepare for the flow merge Date: Wed, 4 Oct 2023 17:35:59 +0800 Message-Id: <20231004093602.1278126-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231004093602.1278126-1-chaoyong.he@corigine.com> References: <20230930100053.1227215-1-chaoyong.he@corigine.com> <20231004093602.1278126-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0080.namprd03.prod.outlook.com (2603:10b6:a03:331::25) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB4764:EE_ X-MS-Office365-Filtering-Correlation-Id: dcd9a707-ef55-4962-c9fa-08dbc4bd605b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RJuW/SXT8xMWjCO09xCfC4GgWcSWhooGl5jIHNRY6oHR7TZXH8rUPdtwze1Yy+GwEEHaE/shd0wb0OFYi3bof1oYbNYNvdj6U9KRAW2g2owsPCWO4ERAJyCF83KbpfpOkhY3JOKyYJEx0kdfW/GhJ9Fsf9O5QUDe52NdQia5KnHjyi8R1fq0qVx+WCVzIfqrD5MyRWe8enZOng49hQhMuerYu6yiJnvOh8fjcpsySmkrQSBcyg/sD4Gf7WexvzxuJ26yQTNaHuJ6MwFG9ex/xtBmr0xMvtRBuIN+A/aMhDJi0ZS8HVN5gkOCjCjGHI3TIJaMlOYpnaa30dJHG4mhXyFywPrtXZYhbYuPaeDZOdnWaKQ87jp9BFqJ2vGG6ikpPD/q+NKWhBrUChfiGM2xhQN7ovgKpVIRFMDW3paQIVRQ6Z/L9I+RSpC7mnaXz5jLzUMJGGt+4DBGzCMJA7B/7SXv921BsUvRgUrN3/lrL23QvGjS6UbaieTVzSNj/pj+8sBuju/Aj98PPGaIvpMBjW9nv6Yk7xh9qKCjcTjm8t8/pO0YS3KZosdxcHcsls5Ff7DP09ICxUA0iNlYaqxrP/29u8lPMDl7moHbrv5AYpbl3zSUcCADTn5MTd/fLJuQCbDP4gkXPHsjaw7Z4/kw4XwjgAHNle2a/CWinlzru2g= 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)(136003)(396003)(346002)(366004)(376002)(230922051799003)(1800799009)(451199024)(186009)(64100799003)(107886003)(41300700001)(1076003)(6486002)(52116002)(2616005)(6506007)(316002)(6512007)(6916009)(66556008)(66946007)(66476007)(44832011)(8676002)(8936002)(4326008)(5660300002)(26005)(6666004)(478600001)(2906002)(83380400001)(36756003)(38100700002)(38350700002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NENFA6eN/FPrIVWbAEFKPbr01GNswGsxOHykM22wQvIytSEgnL2elwd12QYKYTiioFVKeAyq0Nw4NyLMZ1p+mHpRyVkBmAJ0N37YuMzWMSgX6YjAkTOFWTRruknx5mhygkyKOLnWIWqUozB6wcSdLtjPbnii6JlIDWzVCTGvf0OuqZCBT0PSlDtOowgsWhhuPu9Md5mZvjW4ChOYW9x5GBj70+eGQDKxLrm+unZF4jfm92G7oCX2mcNS76FXNip2LevHjA/FLrFNn6FOZUnDHphCHzlu+fNVzphMswctcDpOfpFm0aqZxqEjyQrEeQlkVk75vqLL7BmNLvatkeX30gFggXptAfXWjlxJPmVKB+H/eNNKb6/4vtgcepAsKdkJX8OhZ+eBBFtgN5zY3FBmewD6Kg24AkIs3snwHrGJFhyUdS+YmAvoC7IcU/qplKmwGwABdQ2SGhzQzGmtgMimfRA0Azup/DGPF4OH33L029Sc1ykxMJzHlnhH/hfH4QH/R8C9EqDidLamdtoz/TUbQTpfS3yr8jPwkl25BfnSK4glUyplyqTuVkO/21h+fDH3z7yhw86q5Zy8wdUEb+dfzUnjG1BFPbFNGrlLo1X/LU4N0YJBkOx6HWvt2qCck1vpb/cxSi1noe5tnEW3SxXclsTwN1+MiObeRW2UMKr9TmIT9ZRXb0tMhiF15H28ebvss3/q3JS/roI9X/Y1fCp5052NaKx889832PYut5lr0EPYT1WmE15c3bUooO7Owpq4cXIU+t6qNPhU9LhZItsb/NiEmRE7Za+TQoiRocOBKdGgRi97SMccgX8/s3V2NQB7JjG/ymCj0gJoS5OtyejOwsrO5B2MZFW+QPl5w9EEEf/StxqNtkolBHkSP02Xb7qIOryDFtmnXdT7ffKPZPUPorw7DG1S/vWxW4Yluy5TSZLpJDpW5WBf7LdWTWub+7W0hkQpfry2nZPei4m5274HIn5zASab8XYSBaoQTtamMA2UI2oYo/vGwg/OJhzitbmPGK+bd1J0ldiNfsNZ7jrQhISLpr6WNcgmLGkqpYPbcriD66kAkELdsp4XiNP2VMNXVNFtNyLBxJ4KE/qnDFmjPygImRkV9V10vUD9kQXyt3DjnWHHSJ1Z9Rmvw9WHmQozTnKlKU1Qm3drrZBfDA57SjQscX4Icu6h3t/jIFpr52kpTxseVYx/7sWoKtvmXZH9vD3/HJ6Pvvznti7b08fYCI2x9dMJe/yty00Dgy3CXc+nL9RFQ1wqEMDNypyaBYZ5RWldno+agkbnNtuSOPoc0C0VApbjYjJWjNf0TXv9EA0xJzEvyljEf3q4FzHVs9zFS3IADMGKyW3o++Mv/6A9omLpOjwb99aLE3syG9wi6EWcVhP0RU9OczHZ1nINjgwgM91XHVCoqRbmQx37Oz8z5HGUKnFsrTY1vnlawRNm20WmbjmyZ2y9Y3y40gMpIQz3F7dNH1O+HFszK6fd0ES7wMRNu70vy9kpiMaVaej+SKK8p1FU7Z4EPh0kSKGltnDBL0PQ4xhiweQbzW2Av/A/RRBr0nwjhGj+/sLwph2+BhuoMgVPAf3tpCKw397l/FqrYzMK82NRSn2BZhjheAO/1A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: dcd9a707-ef55-4962-c9fa-08dbc4bd605b X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2023 09:36:25.0740 (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: CZyxg1kOaYmK5GfJUEpGTEegN82aO8K/OogdzspDv44w6DzuffFCso+9CR7F0ih9JncBHpSpFtElUKmgEWbAxsFSY/Yrc8D9lS8r3dd+ZAY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB4764 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 Move data structure and macro from source file to header file. Export the needed function to header file. We add two more parameter for 'nfp_flow_process()' to prepare for the flow merge. The 'cookie' moved as parameter is because the flow merge logic need this cookie. The 'install' parameter is needed because in flow merge, some flow are not need install to the hardware. Signed-off-by: Chaoyong He --- drivers/net/nfp/nfp_flow.c | 42 +++++++++++++++++--------------------- drivers/net/nfp/nfp_flow.h | 31 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 23 deletions(-) diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index aa286535f7..1bb93bcfb5 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/nfp_flow.c @@ -89,17 +89,6 @@ /* Tunnel ports */ #define NFP_FL_PORT_TYPE_TUN 0x50000000 -/* - * Maximum number of items in struct rte_flow_action_vxlan_encap. - * ETH / IPv4(6) / UDP / VXLAN / END - */ -#define ACTION_VXLAN_ENCAP_ITEMS_NUM 5 - -struct vxlan_data { - struct rte_flow_action_vxlan_encap conf; - struct rte_flow_item items[ACTION_VXLAN_ENCAP_ITEMS_NUM]; -}; - /* Static initializer for a list of subsequent item types */ #define NEXT_ITEM(...) \ ((const enum rte_flow_item_type []){ \ @@ -359,7 +348,7 @@ nfp_check_mask_remove(struct nfp_flow_priv *priv, return true; } -static int +int nfp_flow_table_add(struct nfp_flow_priv *priv, struct rte_flow *nfp_flow) { @@ -440,7 +429,7 @@ nfp_flow_alloc(struct nfp_fl_key_ls *key_layer, uint32_t port_id) return NULL; } -static void +void nfp_flow_free(struct rte_flow *nfp_flow) { rte_free(nfp_flow->payload.meta); @@ -721,7 +710,8 @@ static void nfp_flow_compile_metadata(struct nfp_flow_priv *priv, struct rte_flow *nfp_flow, struct nfp_fl_key_ls *key_layer, - uint32_t stats_ctx) + uint32_t stats_ctx, + uint64_t cookie) { struct nfp_fl_rule_metadata *nfp_flow_meta; char *mbuf_off_exact; @@ -737,7 +727,7 @@ nfp_flow_compile_metadata(struct nfp_flow_priv *priv, nfp_flow_meta->act_len = key_layer->act_size >> NFP_FL_LW_SIZ; nfp_flow_meta->flags = 0; nfp_flow_meta->host_ctx_id = rte_cpu_to_be_32(stats_ctx); - nfp_flow_meta->host_cookie = rte_rand(); + nfp_flow_meta->host_cookie = rte_cpu_to_be_64(cookie); nfp_flow_meta->flow_version = rte_cpu_to_be_64(priv->flower_version); mbuf_off_exact = nfp_flow->payload.unmasked_data; @@ -1958,7 +1948,7 @@ nfp_flow_is_tun_item(const struct rte_flow_item *item) return false; } -static bool +bool nfp_flow_inner_item_get(const struct rte_flow_item items[], const struct rte_flow_item **inner_item) { @@ -3650,11 +3640,13 @@ nfp_flow_compile_action(struct nfp_flower_representor *representor, return 0; } -static struct rte_flow * +struct rte_flow * nfp_flow_process(struct nfp_flower_representor *representor, const struct rte_flow_item items[], const struct rte_flow_action actions[], - bool validate_flag) + bool validate_flag, + uint64_t cookie, + bool install_flag) { int ret; char *hash_data; @@ -3690,9 +3682,9 @@ nfp_flow_process(struct nfp_flower_representor *representor, goto free_stats; } - nfp_flow->install_flag = true; + nfp_flow->install_flag = install_flag; - nfp_flow_compile_metadata(priv, nfp_flow, &key_layer, stats_ctx); + nfp_flow_compile_metadata(priv, nfp_flow, &key_layer, stats_ctx, cookie); ret = nfp_flow_compile_items(representor, items, nfp_flow); if (ret != 0) { @@ -3755,6 +3747,8 @@ nfp_flow_setup(struct nfp_flower_representor *representor, __rte_unused struct rte_flow_error *error, bool validate_flag) { + uint64_t cookie; + if (attr->group != 0) PMD_DRV_LOG(INFO, "Pretend we support group attribute."); @@ -3764,10 +3758,12 @@ nfp_flow_setup(struct nfp_flower_representor *representor, if (attr->transfer != 0) PMD_DRV_LOG(INFO, "Pretend we support transfer attribute."); - return nfp_flow_process(representor, items, actions, validate_flag); + cookie = rte_rand(); + + return nfp_flow_process(representor, items, actions, validate_flag, cookie, true); } -static int +int nfp_flow_teardown(struct nfp_flow_priv *priv, struct rte_flow *nfp_flow, bool validate_flag) @@ -3895,7 +3891,7 @@ nfp_flow_create(struct rte_eth_dev *dev, return NULL; } -static int +int nfp_flow_destroy(struct rte_eth_dev *dev, struct rte_flow *nfp_flow, struct rte_flow_error *error) diff --git a/drivers/net/nfp/nfp_flow.h b/drivers/net/nfp/nfp_flow.h index 7ce7f62453..817eaecba2 100644 --- a/drivers/net/nfp/nfp_flow.h +++ b/drivers/net/nfp/nfp_flow.h @@ -11,6 +11,17 @@ /* The firmware expects lengths in units of long words */ #define NFP_FL_LW_SIZ 2 +/* + * Maximum number of items in struct rte_flow_action_vxlan_encap. + * ETH / IPv4(6) / UDP / VXLAN / END + */ +#define ACTION_VXLAN_ENCAP_ITEMS_NUM 5 + +struct vxlan_data { + struct rte_flow_action_vxlan_encap conf; + struct rte_flow_item items[ACTION_VXLAN_ENCAP_ITEMS_NUM]; +}; + enum nfp_flower_tun_type { NFP_FL_TUN_NONE = 0, NFP_FL_TUN_GRE = 1, @@ -153,8 +164,28 @@ struct rte_flow { enum nfp_flow_type type; }; +/* Forward declaration */ +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); +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, + const struct rte_flow_item items[], + const struct rte_flow_action actions[], + bool validate_flag, + uint64_t cookie, + bool install_flag); +int nfp_flow_table_add(struct nfp_flow_priv *priv, + struct rte_flow *nfp_flow); +int nfp_flow_teardown(struct nfp_flow_priv *priv, + struct rte_flow *nfp_flow, + bool validate_flag); +void nfp_flow_free(struct rte_flow *nfp_flow); +int nfp_flow_destroy(struct rte_eth_dev *dev, + struct rte_flow *nfp_flow, + struct rte_flow_error *error); #endif /* _NFP_FLOW_H_ */