From patchwork Tue Dec 5 02:54:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134847 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 B2F98433FD; Tue, 5 Dec 2023 03:55:26 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 47FB342D0B; Tue, 5 Dec 2023 03:55:23 +0100 (CET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2125.outbound.protection.outlook.com [40.107.102.125]) by mails.dpdk.org (Postfix) with ESMTP id 0CD0840299 for ; Tue, 5 Dec 2023 03:55:21 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ko7FyGcYxGOEHp/hjDZ2GhqN9kQ57Pcz3/eyBdDlDX0gPmqIzGnGI52XFZGtq2ABnZre2tSlZ1Blba62bYxrG4ClqMBOC3mDNqkfLs9NqiqqPNHo6/27VYjaigUi219nHEdUsOQZjfL/EySyedrhlphGLN8lNQrOil5WZkzURB3fFZlHezCWfR3l5fthqU8lx2UotxSIYBKUf6nLHN5AbTFytZd00YaWRWU+J8oHDrCxmAAMTXbuA8MP2qv2817nDDM02XjtSp0FA4b+IIxRuBZkk5dwYEbzUQW8Z5rTfvviSqWzgTIo/MeYb8GTNQbuFKipy3CKgvepRHjGVNQzjQ== 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=KpopvBAPevHfzCV4Dv6SaetEM5fAqt2ZnWeScuS97/c=; b=lS9LB4g8BGVB1+MyfgvHNGpJzzyZLeVx9g1NQRnuJdMYYgSJt3bneDb22zlkDbFFKr6sADJwky9Mc1N8W6piOD3I3BvXWZXSyZyUayHFvFFdCtU5ANgXrL7cr5+vjz/hGeFk5uIf0pv3tkXwo1jjMAI/sFDivcI+NP8n6A/XIhB9aLt8uxP6jOYzgBw6D0cFw8dGGsTrYs6wbxmVjX9u7QhI7gZ51TysmpWr+kL43Sn2Cw20bsxWaNqK1y5ouyoaEDLOJh2iyZ15MDFYjgpBLDhGTGt8t4PKxaZppH9SxNeBD4Uc6l7XqjWFUF9ilKl2pNfCf/N91duFKJ4oQv7wTQ== 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=KpopvBAPevHfzCV4Dv6SaetEM5fAqt2ZnWeScuS97/c=; b=JLgVauaLSCki+kdFIomxZ7m6i8lCsAeCJu+aOy6vpsRoNeHAOqVzuh+vSI7HK0uWhaN12TfL8LdoOQgHCwkMnDxcStG+3Z04Irwps6jZeXnuE0Cuu6PQxGhSrIdadQERaqrWi/CmPMpMzsSZ4wjLtEiXGE0rMNLUbcpXcoBzRDc= 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 LV3PR13MB6528.namprd13.prod.outlook.com (2603:10b6:408:1a5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55:19 +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.7046.033; Tue, 5 Dec 2023 02:55:19 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 01/11] net/nfp: move some source files Date: Tue, 5 Dec 2023 10:54:47 +0800 Message-Id: <20231205025457.1067372-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|LV3PR13MB6528:EE_ X-MS-Office365-Filtering-Correlation-Id: 789fed1b-13b4-42e9-ba2a-08dbf53d9d9e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1C6PW6pSlwGdcuhpxVxu5vah3bFIUsjlrKXuB4z1e4BQekr34PS9bi1f3fBLWKROPXWWqHbZMOfXpyFA32BPPluZxSd5yiE28tLxRsO2dZheRrJULt5Z3L4bMrq2nHUhYHHJXHzjF0hHlSWtY1298hluPK8hufeStM3xyNdaooiVeouAvIuL1wZSF7P9EuUBH+tLhwsqmXCAh7aC+rnOAp0WPg5NZcTXKKoHpR20PKWL5fddH44bHG/9Rxgj3wyk0yuMxg/+R9Z1MJxF9J0iG8sH6aBGxtVU/p24cq18DtYkZjvWTygXqluVtud+jE8GrxqPEwykPmFYWCdL5wF1iFc/CHVyZY7zNFjfjjrydtATLAP8BEFA3TaRY9Qc7yAKZ53Yb4cPev8FA7JfA8RaiCrYAgR+9HyplAruPcBZNlux9R2pDqO+szM0Tpr57BezY6BxwFThXSFbpDr/A99M5MlzBVinttlppMW3sp27wyu4ZSRxC4xY3N5yjmbYqNbcYc88Fpy3Sha195ZP096nwUKEq57++bUADEydVmf8wTdiVRC3bPoye6dsneQzgFCSI0zqZlworikeVoDdTtQxfWo3+kIH2Jwk3ZiiVhF9l5QAA7/jO4l4qsAvFqo34u2+67Bx5USeDo0BQIa5dV4QfcIZ9VGvDGFK8GRG4xP+0GE= 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)(396003)(136003)(366004)(346002)(39840400004)(376002)(230922051799003)(186009)(1800799012)(451199024)(64100799003)(2906002)(86362001)(44832011)(4326008)(8676002)(8936002)(5660300002)(36756003)(41300700001)(38350700005)(26005)(2616005)(52116002)(478600001)(6506007)(6486002)(6512007)(1076003)(316002)(54906003)(6916009)(66476007)(83380400001)(6666004)(38100700002)(66556008)(107886003)(66946007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MZ0Vu2fki4QYDvvYVm9Tce7W4xKB6nhhgWNwQ65WdboKZ2TvFYccVPnY1xJynsLa5HE+azt1DmYV8Y11l9yQ2Rp4z6AULhPdBU5fgiOZP4EDjAQTWmmFJPjfUqjyuJlKbkEpj62f8I/0dPsBtuMCenrIxCMZ2ut1ltV3R1YryrtUnlRVer1/pGgQF+TrnEJKztAYrXpKXfMlHAXADeRkKJlSUIwr+M+0fmrc5VWJ0bhhvp1dBLGh3/aVgFgiQioKw60GofL3J3447YCRJ4UCB2UpC+mRtt5cj0qwaG9sQ1OsWYyjDnVYWfE3iFnY/GaLGQuVJy/IncrumsH7JMS4iNOyC0U/CWxYs3P1jP0RJDS0dLtPGQhXtLgiZFag3hlimhYX9qFtARqwvI/r+jI3X00Nn12+4pFezAgwa0WLrXynw+4a8UOTfw40UrBnjAMfooMhKbjbogVlaPEb5jqAbcfGseEl9/CRw1ZwT2SPH8tUCPwwpdaU1JuPULx6wKO4bhZo3vCAvRt4fPyuZ2xUr6l818Al3tkHq4TapadC9cxZsGWWduTr45JRotnygkTefpR73XL+rHBSuBE/Bysm4U6tKj1uc7J4ktHxiqhbOOxYAxbw+obcoAggsP7a6A9Cx68wMF146f32+iiOYds3hSByHmBLT2n6WHMQyeO/PxW8wPy7Rs89pmMJ4mb8SeWId4eo1MmIqD0yEcl89iU2d7+DFPjVppEiFL+QrnCB97hSV901iyetoqZVP34QXk81KExk2oB7xyIEb6hWlGpwAWj9/ahND6L09DrLJ4Qds98/ARxYJVCuG2ABE1LiCM76JLe1wEJzBgpraUVKRCrPlZ2LwCxYb6+40vuY/VVl5o3ao+AvlHnmn4aWQSDjT4HBxigZyzLQqC4ZxvwyNZpewxQk8m5JZXy2uFZjxJAYRU6rAWHAh79aC9rVtIvEFlvRsW1CydzxQZhr370n2vgTVec2wJGGnyatu0U/0sHuLkEKaKTnMzSivM01AQ5XUSzgp6ZVIb4kRgEx49PtCU3PWc5FMRU1bxxlsVolw0eU0ZigcSDc028FDU/XkmXorD0kqpp1BmvpUmSIGuFXeHh6Fz3wAVhuWsBy9MfVHuqx0Bt3p511UtZh6k9mnr5zo2mbXQR9klV+J/oVkbwsCmoc8MmFk9v0Huu7RW3Cg1F6JOdOdyKD/XbdpYtZW3a5fIyQ265TUZ69jRgwhSpemrNKNaoL//p/eGHbImIOFMOYknAQ/JQU5scAgspLxtXYbb157IeDN88Rh1V3XaGF/1gD9Ny2AhZ0w1v03KQt521grJCSLkqv+s/z/WmYRXpW/jRUkHwBWwDFWjCTX82hX47e25vceZplVnEeJ8eMj0hcNBmFDmwvTfh1rSepZNsb4qL9MRMHk7fMRjimjQPtVV9G/KzoS6oFZbjEsLhbaTrj0dK95PrgJorqsUHSDYga3CAfyy1iE8rLs5+M+YIRB9DJGjDQ0QN2/nvNOrs+fa/z6zEjg3eI5K7YapFftUA9Rw8iuy/xi77QdMIyFoWV51zEW3zXjOZ5Bns2GW2fkaRnd4iCo/3Mg44EeKyqVBa1N41PdLAKizv8ZhDocWqfxzbLyA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 789fed1b-13b4-42e9-ba2a-08dbf53d9d9e X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:19.2014 (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: kHa5Xw/Gk0s0+ZNtqotu/0E02ACh5nW7VgxwrVUCeg1vEraBqiuH+jT3FB27g/2lpLPvVYR7zLaG/qxVxN/TJhz3lbZynnJObICsbT4IHwY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR13MB6528 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 02089d390e..7d8c055b80 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -435,7 +435,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 Tue Dec 5 02:54:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134848 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 3D56E433FD; Tue, 5 Dec 2023 03:55:35 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C5D6442D9A; Tue, 5 Dec 2023 03:55:24 +0100 (CET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2127.outbound.protection.outlook.com [40.107.102.127]) by mails.dpdk.org (Postfix) with ESMTP id 4CA7642D0C for ; Tue, 5 Dec 2023 03:55:23 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GpeE2TOXKiVgNFvKohT+xY9mmmaJLm+rk2a1Kz0LKzhloAF2/gcqct3yyo8dv9GhSuHEAluBa0pAZYllcrscN66zTBczzw0wsNptmw6k13IB5RX1cJ0uPhQXLmi3RZWUJiPI5uydFlVmqunlo7vCXR8C96AzcbgVdrePft5Wtr4i+B2qBS27riCvnz5PO0rzx/BeiK2quqjebBpnzvTdcdJ3qJvK56fjBKzpsM6YxOJ9qa3jvVxga4ipHOvOPzgFq6UfQyAgRB51jhEa945wF+6gc1OGSwhbuWqetH+sRkoNuLq/T5IKQTH7+qAjbmh4B29qfZELb/6aq24hkfWbcw== 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=rWswxz+boVr3EIptEtN2vhl3GtOKfPBTYoePdH+PO6c=; b=LcR8OYTZd0GoSRmIpjarze3s4ykw1Lj3gYN4Lq4rFvOWqZiBSJhNyavnPKohsnXaafGQ2zCPvTUwwy+DKpU4ibZHwRFtItQkw5WoBRcM8JdRzefTeIAIWoKH59KsPYszfJk4nnR5Shmm+tm2uGPYmQKoZ4IOrF3JIG0Oa3R8ok2f5MnfjTtuV1kAahDatJoiSq9AAePnKXrOplUtVYsnChk202cnYZq+1i+fw40h2rtAOwLxD7oZtsHUG5f1WgJN1Rt2RGQeFP5pvXP6FfEKLKE3TLNqoxMgkBXd0W/hAC4uzMIJKeYjmu2yocNd9qFuH7xn0a1or/jITfAt/vLXBQ== 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=rWswxz+boVr3EIptEtN2vhl3GtOKfPBTYoePdH+PO6c=; b=lN+aMoSP2DB9qwLBRzYtb+6zlUoKxIG8KRg7SegdenODrFC/2/VRtKU/gkM21XovW1tmS2CCsR/pWGmkPtdvnNl5EtSaBlBA7XFFEcU7NlPsv4aNk4jLxDQOrhmASuxfAlqJUy+zNG2gWN6AheW/o0EKvU/8ntKl5zwLiuY0u0Y= 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 LV3PR13MB6528.namprd13.prod.outlook.com (2603:10b6:408:1a5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55:21 +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.7046.033; Tue, 5 Dec 2023 02:55:21 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 02/11] net/nfp: add the structures and functions for flow offload Date: Tue, 5 Dec 2023 10:54:48 +0800 Message-Id: <20231205025457.1067372-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|LV3PR13MB6528:EE_ X-MS-Office365-Filtering-Correlation-Id: 67f640c3-23d8-410a-0fe1-08dbf53d9eb8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nMtrcYHLn+Bm8sfB45dQIYqvEzTRwaV4NddrZvnJRpm5YrgsdURo1/M85ngWUJ0qyyYnBhd0ZB1vT/nl9TXMoDdfylwURr7lamZB2snjlsyu6reRjNrYqU663hMcI6J3IMDfeeltBFGN5cJ8JqhGwmrMkh+DmmdJ7GJ1hSyPAbTPEJE4idq0EwYjKtfOhmoWtjFepMbsqo9ruegmzYW9/DorgPpAIr6w/bxxOJJYrJPViIip3/51TeMiFg24aLr4TYXVEY3EQRQPeecrjKmfSVKXAMXSoEFDvmllSZJeLVeW8R4h8kXZzp+kCZZUOiFjozI9PIQDqcTVmO45pITA62XclOqa71qllGrMBXvZiL481T4idcwp6LAYsM2tZ5fqqRzK2Qu/Mw7g6iKr5d+kVTjcyS1jE/j/RtZhp2npsrsTOs7fS2n1SnuOQyk3sltq3N8fRatlayoq4prBG+JGxc0N1b2/AxxDDoPvLq03E9hNGAUs6KjespbEkcdD08BPU6gQTGPNVg78Jld/OKJSVYebxI+kUUSrPOaQx/rZhB1rtSzi8EnQlWCpy9ocBWknBRXScAQPGWwXcRvKgL7EiKz4+EoRMbKQtEk/kefutjBOVAo1axWooi82JhFFv9CcJC3xvgT/H0jILVdMui2cESgQvg/uy+K8GYtx5CtRaO8= 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)(396003)(136003)(366004)(346002)(39840400004)(376002)(230922051799003)(186009)(1800799012)(451199024)(64100799003)(2906002)(86362001)(44832011)(4326008)(8676002)(8936002)(5660300002)(36756003)(41300700001)(38350700005)(26005)(2616005)(52116002)(478600001)(6506007)(6486002)(6512007)(1076003)(316002)(54906003)(6916009)(66476007)(83380400001)(6666004)(38100700002)(66556008)(107886003)(66946007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Gxb75xGklPsMaIF8OX+J4mFdtNUmDy8rpWcXqsms1FK9cD3pSLj+8PsvZWWf35izqHJIq1/CC2oKXON1yTPFoNSD7D3+uN7SXMNn3hLtvF4xMl6abpFVEUdc7l0EdhbpRxKLn/Qxx9mgeJIrBac8hnPZdChYxWUwIN/9N7UYawC6iaFGefQ/URfqeESXYiRg7lVZqhcas6PSCGsTNOZDG+kxGdB4JAxo1u4UBEoVE5/WjvkeLaukdKz8Ix0URmGyFC8GvBjTjGFX9YS4+dOPp7lAiGFrsedEDOnpXzsiGOX/8rGDBvXihf5mgiEjYaia50ZN/Liqig6xSpPnytMg11avfCQEP0SvL6vgIwCutf/nJYr+Mpa7vEiVbqTfSJpOdr7iHZEAORief4WQ+x/vx+/OLTqjbM1cEqfJDLfSk+yCx2CH0t6P/HR2mamJMoSB0LkFTPhKjPfg7i6VHfMmGPdJ2PjKDZ5Wxa2mxk2AcEMGTVXiLtHzYQU6+qcH2n7UheCaVrYThiNGEb8tP/yisFhFoSKXIE8B5vdldS2i2hI/oGo7bXwOdkNR7W8VKR0oO5ZhwL71LyZ/EHZlxiUqzY+lw+1NlDzxLpShcQhhiRw4K9l8OkJsH1kelBNm87dunOz6XHPAPFEJI/XwOxMczSFE9lxtqTc18ngA3KVNoZAUtJyNEWI/ES9VNKhCEYeTgeyhJ6jAGyvwhGOAb1o8nvuqetM0U/E5LfRp5PgXRcqh4jHHTk3HEurhtcKoO1nDqcKdqBucbqK0PYlY5mgi0DP95zCxiTgdFDF/96jSfvy1EqRwoDQj9BV/Fbr+138Cb9rk7129P3Dw316A9Qj9DqXsCV2bIMr3yZuxv2zjulqznfBBfdu892QUP/693HULhMk+qq76byBScJSCkHV17TjYAbioPZmE2ydRYx2sV4FPoqdVSYT4CntxI57nJO8VNc5VhKoxcDrHnwg/31FwCbPrgz33s/uV1lZEoEDJNAuO215VpMgfrceD6qYY2btsIitaaC2S2ien++TrdZhY3Ye3uSfHQ/WvWlIjlKC7kTpUQR+8YZggZwbASDRO5A4ANWbh3x2JquKLT3rMgvKFPZovFXC+xIwvE4hvZCrqaYJg3i6HSZ/bXV3LSRFFP+RDYAZ6a8UfGqbM/vZiOX+ZAwgxVEyETQ9Fu7M/aSRhGdPgYfPD61f6t/hJkKN3IrDYuiuhPgaLn+u0N20M7d975dp41dTN4xwOlnN35sbGibH80TjcLhpDWigyoovniArBrvvCcuusklri5iMa1EggjPs8ncEnp03LvGrLDlxN7SM+UVyu5lSCe7BlrqfrMHxK+7+gpoFPxqm/3HsoNpyPulUy1CRGameMwUkXyXG2FbwBfmyDY19PEHJfrpRQNVOYPkAhxMQmN/ypqMJdnkpB3pIOxAJe26DQQlFxQXtvwloMtwVroTkWDMWP+Ghj/CBNt5ks/fd8Fwk0MDWSW8LV+foLmO87PsIzLvnO70DLsh4Rs/EdFcRvx8UprilieRkPpVB2Wnk8IVkpXifyae/oTwp4XL23dQGOKk37nSa0qsrEgMLBNMBU7LxSeK0E0ETWotFooiz2ElszRrz3N3LSag== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 67f640c3-23d8-410a-0fe1-08dbf53d9eb8 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:21.0842 (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: TPIZM2QrR0Xtf6dKYrXKT8FD3m+hYpuV9lEY84Z6aR6O4MLQWUclp6CuUf6QTTW1tojbbPBczek6p5akqwoa94bRA6K24mNALT5irUte1ok= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR13MB6528 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 | 27 ++++- drivers/net/nfp/nfp_net_common.h | 11 ++ drivers/net/nfp/nfp_net_flow.c | 166 +++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_flow.h | 28 +++++ 6 files changed, 228 insertions(+), 6 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 537b4fe792..d0a1950ff3 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 @@ -151,6 +152,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; @@ -323,6 +328,10 @@ nfp_net_uninit(struct rte_eth_dev *eth_dev) struct nfp_net_hw *net_hw; net_hw = eth_dev->data->dev_private; + + if ((net_hw->super.cap_ext & NFP_NET_CFG_CTRL_FLOW_STEER) != 0) + nfp_net_flow_priv_uninit(net_hw->pf_dev, net_hw->idx); + rte_free(net_hw->eth_xstats_base); nfp_ipsec_uninit(eth_dev); if (net_hw->mac_stats_area != NULL) @@ -762,6 +771,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"); + goto xstats_free; + } + } + return 0; xstats_free: @@ -1195,13 +1212,11 @@ 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_net_uninit(tmp_dev); - rte_eth_dev_release_port(tmp_dev); + if (hw != NULL && hw->eth_dev != NULL) { + nfp_net_uninit(hw->eth_dev); + rte_eth_dev_release_port(hw->eth_dev); } } nfp_cpp_area_release_free(pf_dev->ctrl_area); diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index ded491cbdc..eb668a1505 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..25da9ed8ac --- /dev/null +++ b/drivers/net/nfp/nfp_net_flow.c @@ -0,0 +1,166 @@ +/* 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; + + if (pf_dev == NULL) + return; + + app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv); + priv = app_fw_nic->ports[port]->priv; + if (priv != NULL) + 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 Tue Dec 5 02:54:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134849 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 23F4B433FD; Tue, 5 Dec 2023 03:55:49 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0FCED42DCB; Tue, 5 Dec 2023 03:55:27 +0100 (CET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2102.outbound.protection.outlook.com [40.107.102.102]) by mails.dpdk.org (Postfix) with ESMTP id A1A9042DA7 for ; Tue, 5 Dec 2023 03:55:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G5o5RlJhx0x/q632X91S+fFJSFB88j2lypntnNNzNvrnj9ZYxeZhAE7JHdv1F1fRRB37e3H78K2UoP/i07kIMAOI5txttYIst4fPo0Zjy2BFjxHZ9zaujvKsTVlm6FhCnxJruWeGDb3/vmQeqdUqycU1noJG5PTwl7XbpltVOjJoEGvtiLMgRC7TyIisCvXTXN+TacA75DFoIKbkoaD51behnyr7csqEo9W040H6YdTfpnfBz7U0zJBPrf3AI/BO39mvLVTqeV/0FzceJIb63YBFywx6BjCVzfqgFpMSQ8ADX0czlG3N97Gd64IJ8FZHHWmGYE3PK0XX9ZQMVGahPg== 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=V1un/+1kuClsONU3LL9VaBE/P6bQfA2znrVplFPf66sIrxMRw9qWnhbfdTjI7RDSdpAaljYnkaMJPGKCreq6+MvlgyIRXRCipaRnLVLzFcSr3vIoToQ/vwTR7JKmx5n85r3SeIcHbRQ2EBIkikjtvgXAdbPmb444oF+YDB7hASq0yzRoS4wuUXv1TBSQHOOkjhILq4lGkuqO+eRAUTq1jAwPK/80t8wGtOsPyc999SME1UJoYZHcoRXEYdBPbp1WoOETyEkhINEukWQfyTjryNKZzI8IUXKrjC2D6zyNnmbOQGaL6wapjGTdwZ35gZ/qfTpGvGQbhhpWQL18ZB29Zw== 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=EWrk79/HVAPPser7emCZ1FWadcvGBtUYBvKHRCG2HJgPoM1YHE1PHjRbz6Q9y2MZv1GB9+rgOLNCIIiTozs8KXbrqHu3DVvZ/vmFvIfxBbxogFdAIO8RaIBlldZjYaiKFhWMLjsrtnzqn+RrCdwl2h8frm029wJoUAMIKiGZqnQ= 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 LV3PR13MB6528.namprd13.prod.outlook.com (2603:10b6:408:1a5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55:23 +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.7046.033; Tue, 5 Dec 2023 02:55:23 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 03/11] net/nfp: add the control message channel Date: Tue, 5 Dec 2023 10:54:49 +0800 Message-Id: <20231205025457.1067372-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|LV3PR13MB6528:EE_ X-MS-Office365-Filtering-Correlation-Id: e6e12338-bede-46a5-dadc-08dbf53d9fe6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5ERMf0uFN87c0PksY4s20ovSFoKwd2SjhCK1PSZa4Bu01LUS8kRGsUHY/jFyvAKnUIs8KPL8pSWjwxJ5NJpUrSrXvuJueX4tOPw/YLPhMJzxcitFxTdXWo+LZ/ZJGK4n337WOvGTGvPNdzaQI2Came597Jf4iYkaaEHfyG2UAuzidGJMBHRi0wfKKifVojj19+3YEH867VxbEB1ttboO5HDJNbQClxAn/1Dz0KTsPmn2jU/7ibv+1tZWFAKzFGARn1/j4xgBgn8iEy0DfQyTiA+Fld2NFsfpzREO5SXoAcwid885mdbNAM66sIcPqQf2sv7jR+DfEDWDNuv7hzMEHirN404XGQlRoBI3hvPL1yBfMs4qDwplmLSXHTOK6MWmMfWWHl/lH4U9JO6tgR1QmuRRFwikAB2gWq+0/RaHBhPyRykQK12X89jvc2u2wQIoJgy58qkDOYO9T2zwaSbvLVOkATQ8SsQ9ST1K1TdIMNYq+PJdpvaR4LOextQxFCEyvl6NvS7DtNGPEq4aduBvDpvuy6vh6vCLLN/zmygE+MvqsC8gMrJl/JNm1WRPwgLXfNs9pQ56OCe3dcuhAnoLTy3uUvWKZQqJdqqs0bBMLCcK11HBq3f7vO9Nn0WudTtZlPffsyXesEf6v2LdHJU3eM4r7I56rkeh5uKLN/tmaqU= 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)(396003)(136003)(366004)(346002)(39840400004)(376002)(230922051799003)(186009)(1800799012)(451199024)(64100799003)(2906002)(86362001)(44832011)(4326008)(8676002)(8936002)(15650500001)(5660300002)(36756003)(41300700001)(38350700005)(26005)(2616005)(52116002)(478600001)(6506007)(6486002)(6512007)(1076003)(316002)(54906003)(6916009)(66476007)(83380400001)(6666004)(38100700002)(66556008)(107886003)(66946007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eKYamDWry8ZiySaVZJZ2hjb7zDWbySOhSK7PT7eYP62/LsDC5AHWlwTy3xXFhYwQMCNCsCe6Y77RjxUrN5l6RjifkNZNFNtd5gs6IwWGtjmgzyQQiQYOZ1uWNWxkC3Jsw7B6xKusMIcfs08UezlVACe7ZUF781m/ePNo3eFqUdkaRL2oEQNwd8ddKA1Zc7LcxnBGE+sHrIFv57ffE5PTrFvtSXrOR/WqkxmmJhlIpCZ7Si+1+G7+XBbKUkELZ1AupJc1DrNntirGe2zMR0InbScYyGFQK4RMkilgks8njgkuDMJsenYqoi8MCTw84C50OyPC07Kng4duaXkzj2VKhewg3JHRzWp09KAHNRFu2eC/OXvjbd+AWLxKxIHuapnNEV5v7edCNjWs3PlmjaO8E7OkibtSlO+ATayeyRDd3MUH/toY7lzjgj5+5j3xHII2F9oY538QW7fWTdx2J0fnYvCTUZI61NHHHBjzJJMDEQU9aAuFd9dflnFuJ/ZRhiPkQzHPv2UORjAWEKsnJqOye17fp6lXwPdXF42Q4Ub8OUGMbQjXpkGnQ7mkaErXwEl7AOc9GbBsUx0BJClvLidAG93lejOL7BjojKtAPOkgRQEUKGB6sMl711P4Ymh9jl2Nv6gxg9OZpOjocIM+F1+9JJhav0HqtdyiSxN3ou+Mfrs3dC6agUiEzgb/hQcNrOulckjI4/fAiwAK5Ak/pe0rQ3b+1i97Jkqp4edkPDCwlxd3oz1uUNn6UhcItL8nV40dtf0mHJb2fLAx8nG9I8O3NnIh6hsB7tINaNEiizJlVQbYGLymAoxlPrKdTQCx6pH6dA09p4RxgmGwuIqnxEPsY9sYdymjDfu/9kkWpNFi8fb4OU9bgQWJtCVgpmlIcUmvYt9KWg+UNnqepi30/vzxtQor6Orqmzl96BG/Y+3fDXL1jhKKabPZXtrEnaNbgpLwUDPxbZIeBYuKWkaee5UY9LaFkGbU7ZR+4gBfuPPtKz3K7gCpRuMaZ1Vn1w7jPYLNmhN0TCe1mdJoe82cGdNbvG33iLHuHCSjX8bki22Wdg0rDOa890MImLGu4AxlOzZn7ID9AGlLE4UHFMZJqCJXLysHnqWBjRqTmgewIrP+3+iBvDp1sLtVgdWW0/LHg4PAT8bby6ww+Oc3nEMr4XpXA1raTxgGbhJKrvMOVAFqwh3QV4vYZw3JSUkm0rRtsLujI46leuxNwcZkRYqkjYRcXLg4CPlbOIkPyXRgS/RBq3CPKkZqjp+Zeo4pFaOWOKQ0fy8yr2pLidC8Z358j8m4WDOM6v3dxsgSIu3YLnUzveFS5qyDpp2TndItmo1Q+gDe6MIAQMkI5CrMFNKnxN5sFATyYZfp/edi9N3/ZBBV/uKqK3kw+HKtw6OURORp61VHjh6Hdwwnc22Emo5DqZDWJ6XwiBfULNO/A0BiI9+n5y1OPhGc/u+nVjUKv0RGm3RAClJ8Ab2e0CiP8OzTR7U0w6IldKbbl9FpqZM7wXrDOGsyhBuwTKTZn2KJzNmOeSfUz6ColsrCCXKM7Mtdp4YU5oUIOlVX4w1PA2N+b/rq1o8c8ZsG/khejTbZ/FeFpxJCSX255F2GEBnGYuIQ4j5dKw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6e12338-bede-46a5-dadc-08dbf53d9fe6 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:23.0335 (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: oCV++I8J+NuZCHWi1BtfjuLjid92URgH36Y76kK1KfHScvIR0484iW1fEo8KyEj4xEayYrpTIbHsc2Mo6UUwYObX1yUUbL2P18HoyZs+z1g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR13MB6528 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 Tue Dec 5 02:54:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134850 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 6B273433FD; Tue, 5 Dec 2023 03:55:57 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 83EA842DE2; Tue, 5 Dec 2023 03:55:28 +0100 (CET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2112.outbound.protection.outlook.com [40.107.102.112]) by mails.dpdk.org (Postfix) with ESMTP id 022E442DBB for ; Tue, 5 Dec 2023 03:55:27 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dy4wN2aX8BaiLjG3LSW1QUQZEYtsI67zrhjNtIExHd0NPCWXtvL3snULY5jF9QQUx9ha7VSPVLGo8GSFA0nJWI6hNKZ3Cm+All3IUxzvZvlZyBUhSEqtFc6Pt/eTZp39YgIXaPContPda5FuRxf/P9XdHIRmEx2e/qyhf7MDY1jjQE/hu2Z2hZ2SBSEgVfrPlxgAIiwf+az1IaNl8KfP4Ebm3wK8Wo6jNmkItL+sjLk5kXUUsPoItsJNwR+4RMDAW2sdF1cRexp1WVP6SD9OhlFReEYoCVUvks4o85GSNbX+D8fkxaWo9CyLTSnbNxCEHumgazLow/Eb+lekQpGBTg== 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=Y5HQn4ZqFdOKlaREayPLalSW1OrqjKodA2qEEwwo9XI=; b=fjQfHDzIlKzkz9OdKtrJBbwR6i1TD+tMQbmCuHSmwKW8kipIINASW4CR7KbApw+NCmWQFEUgjIVnsT/IqERHTtR62/Tv7dJ8bUasD5OO/pcmKof/DnRdi46Y39cJC521L48Q9w791izChs0Fs11WI50ATMYftTwdewnaleHg1rw0yr7JEgaC0/UWt1Ky/VosLy4RbgxJ4lT+SavjYzFF5DbMOihLQLG1W6m0WVHo43vGeAOpvO5nX5YM8/SJnAB1diYBT9L0gUVv1DFPBcyWmcHQew/8OTFG4dXOmEuyit3b7e9R7oTwczztfF7nQctxO/rL4E3YcMDPCPeGTEQmUA== 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=Y5HQn4ZqFdOKlaREayPLalSW1OrqjKodA2qEEwwo9XI=; b=Z75KGyJKIelbqQBEkrFRNe5G3+Bpy/PZ8b+tDkMOo8JfpMsBThIEolaTVYgS8CZ5m3jZ+UAbnCQYdAqKRBqY5s4omOmCV0fe0CdxNPADVkipuDYv0zr/aUysw26d+8ieE7dVFCQgAbR63MwnLNM1/3i3G/bYNWUErNCcaS8hOu0= 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 LV3PR13MB6528.namprd13.prod.outlook.com (2603:10b6:408:1a5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55:25 +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.7046.033; Tue, 5 Dec 2023 02:55:25 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 04/11] net/nfp: support flow API for CoreNIC firmware Date: Tue, 5 Dec 2023 10:54:50 +0800 Message-Id: <20231205025457.1067372-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|LV3PR13MB6528:EE_ X-MS-Office365-Filtering-Correlation-Id: b7ad292c-060b-4537-f56f-08dbf53da104 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +zgH9KtxOi6+KEVlP3DLiyF6gh5qHa/5+jFN5ippUzJGCzbFXB4D5FJJbqYcGso4kOVQMuSN1dx8jB40xApkNAbly1ggRlYqh255OeAYs0zVzTP4OlwfoFXxH6Mnz/J0y0DSu8mI6RSZEhoIPcYgehMPITAmHZFu/7F/qOSwo6NCV2SzH6AaoYWQ+BtVwl3akN5v+xhZW7y91nO4Wub+jKsO29urQN+D0BiiuxSU1yPkVg8C8/PJ4LrD4eFb4e1ffum4RV+C+sq1AGvelrY7e+Zst11Rkvic65rqRfL0N5jmYXJyOUgAkkT0mE2Ra+c1sMpv8jn4pdwu4EB4OMbzV+SeSdpsr0ynpzNItVamJMcju+BSJOl6Pl0AGczOsH/VomYh0YWdCmWxKJnTydY9BsIYaH+xT4RUGs0BpESARYi5nbEisZ3kxQL92+Mvs6+8rwGEjuyWHuPJMUWSOK2kdlYDOeONqfWaby5KiiQiI99WJC9kgEELl/P5oi6kqggjoeNMhA/Q6l3/SkS6G/i/gnjowR0ub6irOiAZC5jofVt2VzuTJQfYN8Wh02iCzd2Yx0B6a9lEa5OmtOmSoksr0E2gO5cq91GKQUQTGRXgJh8vVAqevO/PY4Kn0/MxSCsCq1afsoRsNDFe/CI2A+i94NNnqkbn5A7+2bvIsu1AHDM= 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)(396003)(136003)(366004)(346002)(39840400004)(376002)(230922051799003)(186009)(1800799012)(451199024)(64100799003)(2906002)(86362001)(44832011)(4326008)(8676002)(8936002)(30864003)(5660300002)(36756003)(41300700001)(38350700005)(26005)(2616005)(52116002)(478600001)(6506007)(6486002)(6512007)(1076003)(316002)(54906003)(6916009)(66476007)(83380400001)(6666004)(38100700002)(66556008)(107886003)(66946007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?SHJZynbglxOGXWzNwHSts5Kgb2Uc?= =?utf-8?q?B3ytQV5R9tYAqSYDiEjayH4g61h91XC4N2MnGo7oASfmlNlICqveGHrx4YlS3PHQr?= =?utf-8?q?dHvnKr4YWki7e/SkZIWAWP+65ICMiJXblodSmuf7/dtgRV2ejK2hY6vkHBU69S+GY?= =?utf-8?q?rGj2jQ7Tf6BniqeMPu6d7aJoajZaSJ8xYlCIVD5zTFmBbk3EMSf43EWSSX2WEZsXu?= =?utf-8?q?DVuibbdKEBxofp5c9y9Fh8zQItlYjtd8aUNENj/nSHQEbl8ymyLjrmwdI9USsDpho?= =?utf-8?q?p9REMmI578mDb0XUx/NJRZi4FFLpaNUJc5x2DoseLZPAXQcEwudrxectvYvhSrW6F?= =?utf-8?q?XFOaSiTD+8Xd288nkASw8rRn2rATIejGPsW5+RlU+CjCUNWDxkrzEhHXWflu+u1Bh?= =?utf-8?q?Oas1ouIho8FAziRXQnKNsZ/JvMXgK2OUjmiBzIGvUcRpZVK8+ZgrmA+BgX0CWRQWU?= =?utf-8?q?zzX/aO4vH3LlgN/vggTj+6lUp1MeVtCZ7JbqRChuYkg3jRfDbF+VxM8DjY9XKCqBV?= =?utf-8?q?T74a8T3mXxQmO1I90+znteyJOqpfVd8MkkwBUprCk3ynn79yIF8JR95h3bePu0+fl?= =?utf-8?q?z4yefrUmdVlwuEKBHz1rNkcdudTgXXnv7I4n7+ld/Uj7GwxGE9gE81oQPl2Geezeh?= =?utf-8?q?fWPyOs6zxYGVLXfE4Dk3jOJLaNRqd2vi59hyFFSCeIInkAqbkgcyMfQjXqOCR/7jM?= =?utf-8?q?YKO4mtRvLujPYJGLETzvK6TZETU9HIa3FeQCNje6JWuFsgxLOrO38vP5w1x/Zptqq?= =?utf-8?q?sRVruE+rDbbrUt5nXUBX28FF61PBQ5lCLBpsLGVDZF14RL2mWUCEjbBiqoeIQRnLp?= =?utf-8?q?9LN1eKgF9Ftx9MiSWdaKWDg42h+gB1bIIwz7Z00tuv21r2NR6eRMflocQTTXi+tVs?= =?utf-8?q?5wLhltidsABztLOi7AxS72ytItX3xy3NgPDZxkmEwSdnSH1p54xJT++R6FY287wcF?= =?utf-8?q?xzgWvoUjPLX1Yg3vrZ57AcS9pamsGiGyLnayPsla+CPcETg8BVbkad9eCtCnrIwPY?= =?utf-8?q?CQPCmUH9RvkvVNPfrMgQm5AP8qxGTZV99IzHfXM4PfOVqT6aM/qovHPw4UCztRAFq?= =?utf-8?q?2CIhAqAU/YE1EbO3ieKQZGvXKuyT8OWzJkUfqVK2T4zfZF81QGbOtu2kVFPYSD0NS?= =?utf-8?q?P4uDGhwWWF8UOVluABoRyMva2sailz04oQB+TdjlHu+8gdOOiVJ7MjLnJEag/SyhI?= =?utf-8?q?A4UIdUeTUz+PaibiVERQwqPKXLD9HBYCQ86h4p8Zq9uRaflTmlN5/dumjNSIEIaaw?= =?utf-8?q?edh/LBdyTwSTrEN6CVu/HInhj391SO8QCHW1vMK7Zwina7voRlAk2CbnIWvcMyz8N?= =?utf-8?q?ctgolXuh44BjfINAuUIHI4N6OBLv0Pk7MTrE6okL/VN5ZBvOYadUHTqc7uRc1Tdpx?= =?utf-8?q?Soulq5877I7liK8CvZDzStwWn608OV/X7ltxXVB45ZOu4g/6orLRkgUMfyoKi/fu6?= =?utf-8?q?sFqCQSxpJjuOlILXguv5rVnf5MG6rmVNWpXctF0GLVlbHbx/omvBNMbBIGA1uvGlJ?= =?utf-8?q?1OxyCrQ91YQm2xHLIVOILXRFcPgN3PzPGg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7ad292c-060b-4537-f56f-08dbf53da104 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:24.9227 (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: MBcQw0LLTn4hLD7svuy5Z/4g5WdeuasPMjrm7ie5UgMw4dwe0Em+woT2r5B5SAzKL8iSjD4b+Q+NUpR9IESjBMwufYEOIkjPCjZLuckNF7c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR13MB6528 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 d0a1950ff3..336d18491e 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -604,6 +604,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 eb668a1505..305b221a15 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 25da9ed8ac..658bdff1f9 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.ctrl_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 Tue Dec 5 02:54:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134852 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 CBB35433FD; Tue, 5 Dec 2023 03:56:09 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C2B2842DEA; Tue, 5 Dec 2023 03:55:33 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2116.outbound.protection.outlook.com [40.107.237.116]) by mails.dpdk.org (Postfix) with ESMTP id 9B19342DD1 for ; Tue, 5 Dec 2023 03:55:31 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h82sDW/IxXZjweLHcrkOTUd+GyIYuorxAtFLtNEA2aXtkATYjdmk+1FqGx76HDC1xgkkwfROdMCM8sKJdReRY9xls+zdpm+d5hNKR11FWNQ2dk16A4rSg3tQmQgzSOoo4hOBNL/74Jz6x8zWvC2wQrlDIMFGq9grrAhm4qeg4HWVrTp3BstH9Rvymc12BP0jlF6EJ3U4PgkDnEOfi0k/ktOUZVyy9xj/JK1jQKAJkvRyLWoVpBeGckkYKax63O1mRM169kJifdaYjLoTSYOK/7EjDh+fSsjkohbKqTNKVcdlE3+qemG3kqz/JkkBJSpAfuLQbtROZCrLY1kgnX/Qdw== 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=Qd3rnXW8jmdME6/9EPZSCoWWSZJ2fH7oRNK/1moBj9E=; b=gbyqcv+JR1aXkb/NN3mZ8WOKbb1cuiPERZXztDrtpg/PfL2ryWaXIzjwaZ4Ln8L63yi24EL1tm6GeXcM4M1C8iwcO+T2ijW5wID2t1xwc2Mlom3LSXYt/IlaDKy/D+eKnNsDTWWHZqe0Tt2sx3zy4H8o/GQezBd7/B4BRYFc7wXB1xoyfPqZCqq3dFf/GXGdATIvEIr0jFeTauHc+/KCS1NoVH2RpACqKu/+bdkm5lglu1YirRpavounZKY4iUTJPWCrPPamzLqJDQJ8TwTPswP/rHIhcbHNnS0mKsX+o840+KzzhJI0T7+MS7hNRc9CliEJyodbV6jxKQgxj+0UJQ== 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=Qd3rnXW8jmdME6/9EPZSCoWWSZJ2fH7oRNK/1moBj9E=; b=pHFspgWTa7BUAJMa8ZVtJlzk1jL4wQAAf7icrKThH4NiTX8IY7BJVG1N/lR1BkAAWxID4qnHGr2bxAxnx6+DZlSpM+zV8xAESBk7AeAkQhoTK4L8SOdJyJwISa6+c2C40Xxp0s4Sl+NAeR+XH4cjIb/vy/gywS2s4Cvk8s8EuSg= 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 BY5PR13MB4439.namprd13.prod.outlook.com (2603:10b6:a03:1dd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55:27 +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.7046.033; Tue, 5 Dec 2023 02:55:26 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 05/11] net/nfp: support Ethernet flow item Date: Tue, 5 Dec 2023 10:54:51 +0800 Message-Id: <20231205025457.1067372-6-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY5PR13MB4439:EE_ X-MS-Office365-Filtering-Correlation-Id: 977753b5-ab8f-41c1-0fe9-08dbf53da223 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MVk2RydNRYivsVyGtXClrV3cVp/ac3wX0yy+RHnyYcIAlJjJW/nAfD4RS6TcaoGE11TdBHazpP2BwQ9ncjharYBUf1pTwLYOubzs0wiAsQlq7zVIBZwaKlkzOTXS2K9VORKmA1IlT8/DYyaggLiROQVsuQgUkHI+yzlVlbLvqN/9epNr1AwKj06bFB/u+Hsx9BWQaf0OWLc03PU3hFQnubYmBPiFoI6bFuw7pCHRYXDsvZDO1l4E7Bf6I1Rv13qZTK/gkv1N4+eUwiN5277JLAouG3aigEBlWNIrDOxzdisI/6P2GSNVSQvdx0U6GrVQoJdnG94ll5Iyf0rgEJL7+2Y5qwJzFi0sZjOUXUdyiKOfpyA++B8sse0jtZT1hGqON9cJ28aTZyFmOWipLVp5ypJJslaQZTCjmZYOXe8J5YDY49KU147KA/8ROJ5DnFgOTcGK932k3w6m5JH9WWMK0d+C+T6y/uEFVvJ48Y66qTVfc4f5+1vLWIrmIdLE3CdvcoIPbQ19ANwbw7BYvIF7mMPM6E9iE1Qx9QCfDi1Rl2sfFDwh6t9xIJOOTMtIVk3VMvV2ymCQNDofMMAT9lbj0yBg4GsFYD4S1mkXmSsFKQrQLMf5gK8pO3OP6GQ0GsO7A8opmlp5FKDR+9KWDj7vWv5dI5hIsERpO980A0L9t8A= 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)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(6486002)(83380400001)(478600001)(6512007)(52116002)(2616005)(6506007)(26005)(6666004)(1076003)(107886003)(316002)(66476007)(54906003)(6916009)(66556008)(66946007)(86362001)(41300700001)(36756003)(8676002)(4326008)(8936002)(38350700005)(2906002)(44832011)(5660300002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GCkBa1k86nVmHN8F6d/AG36BuyEELLIz52oUt3SA60A3LXx8LeSweaYDaydCkCMxuaTKhXKHZMAo10BoMUo4VZoaxMUkSoZt1f8MMolPjICd+XbhsFYG4MjlwusnubRN1jPF0JzTu40zRNUeiUvbkITKPdhJXlm6XHzJIShg3+MA1dgTNpip6LdrNVkiXkLrggXR2GjNSeZOw/LLy0fKnLbmoYKBIP4N6otxHj+AyCuvhevYJNtmPqPrOkImaAM+WXHMHRU5X0oE1+O7vZ5iKYAzvGTgjwnOWLB+Z8ajUqPgU1K5yUncb45rCkQXPcRbZP3HQ+fTY29s4PErVQRATk/onJp1+7XUmLWfLoT6A+ANe/FYKpR2m8lrklMKYtKFEpUShxF3QqlanNuzo8a/B3Z8CbjuF+C3uVOILKm8k86swtbqAVT2u1qU1waFnbC4umFejPBymxC2tQjywagmxkP+KCpSNlYHHl7IKzf1Is52E4TYLGplqje6OR6RdIQm8mcpQsd8dVpNy9gFTKPxBjprcWOpSkjSD8evUKopj7/WRoDAPXjPxufGG1Ci2AzB9nTR3/ZlAYAQrl/bJDyAOFfrYwNnyyCl2vdvdMaK3HfychSYKS30dWI4iYjD6BP3rwB4inqq5KoJ5Hg4QBeEvLMt0KWbBckYOQPaEwJeHNb+oib5IZbQodwnYDK1061qRq2cmL6ktwwKePCZypWFWav2VWeYf1JunO1hg+7UPeP5l80EoWkGp50QAa+BnhTnPCbuLHShZZG3a4KKpcTl8G+qIm9YT6azuqVlHZwNH5vDl230VGFwPiSFWJxCWZDtgZWWGs6YTIm/kmwnXAscYxGMlFBKhdgTzQeqN7L8dugrWEPfrDTDVkacisZ69AGKtcA8hHIf9d/ldmFbqZyLVDTbrmUVSGCWL8n/s3wFsUvrkQAv3a9Le8M5sRwkovWqEX9YP78jJRJ4P285rpSp53/3C9LFKRF9ZJUpbfH8u7M+rQ5oXRByN9SOKyx1EuiX+b3gMkDDitVVw6qOkThgOv9QttKr3V2hZnyz1kxIzK5SJFChmuHAOd6ITWfuZKlOlgNUz8mbHn8ItK+GNXQXbZg7sBduqinhYkaAmIlD8hfl0c2QVldmlGVDYpGSFMSCbIdWTpa1M/V5VUk5jY0FTCtLFD1bURfdwrroaon7uc9y+6IusjseJwmRtq+7tYZkOiHF570y/eXAfZ0kvCnOwNTHeD7mta+MBWcbabLqT+eO1iOe4bGIuRPAvcHXFCeEL78StVokguePo4rhO4EsR19oybehorIfJ/v/3Z2Cpjs3XGuZTDx3xMw5cw6vJUqAEpa4IoF6G6scpIlEs1LgzNYCHkEaNEAchhW6RI0sQgh4dyYFiNmJWD/iGR0c0WNrbVSOuA6Ct0mS7ABIV1sMFMnbUYw2Du14YxqGlslZRe9eSj2hJLtU+FGIlFwQmgYuV+5CpF5j8RqMxTnq/FgOxrejdsGs00940GEg6dg40CWsW5NSPkqgY1u8Ak++MDAgDS906M3fTN2MvjpkDW74txWwFOmYzCeASeVUs4wwu5t3rBaTgg/2+aucRP+2eUakDYekgdDN55NHuNKQWAnp0g== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 977753b5-ab8f-41c1-0fe9-08dbf53da223 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:26.8018 (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: fECGX8yy/YguyRRb0J0Oa7A3GX2QIWCIDKcT7p3Apu5JBwnEe0SzLELcbRkxBHsG7Vb75ebSrdZQTFhugB1EsDR4txrLX9XweF5rpKH5nPM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4439 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 658bdff1f9..5b6c8553d8 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 Tue Dec 5 02:54:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134851 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 9500D433FD; Tue, 5 Dec 2023 03:56:03 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id ACF9C42DD0; Tue, 5 Dec 2023 03:55:32 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2116.outbound.protection.outlook.com [40.107.237.116]) by mails.dpdk.org (Postfix) with ESMTP id 4D60E42DBB for ; Tue, 5 Dec 2023 03:55:31 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IhaZ63gVNMpRMmI82OlBxsqixiDBrJW8tlgx+wI+t2kENgdAEUvVzkiBHVsMFJo3Tin+XrtHwdkqPWsIKmcxGi7nrwx0JXs2JQO5HRLw5q4rvIKa0ahxNQ8Ojp+g1P57YM4PlvE3X/KGjXfDZQ24jBlkddoEFo2EvN0ZjGq2BdeQZ1LTSJNDofamVL6+ExcomNR7KpO9kDB4Y+tja6yl3U2wNlVdLtjYNsSeWZQUWVSbHOMsctk93raHkzSOU2kH0FCyafNNKvzA3vhX/sPSF8gWAPcIsMKOSLwmmHQ+b3J22rvBRcyM061XlBsJqk8BN7l3dGwzYBcLc9qavE4PTw== 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=jRanaKcuKyzrToSm/bEH89v04GD97/4vvze5x0qnSxM=; b=jMHGghuK1e9WubrjpGtzQgTLBK28+9BOKNn7CF5slAEkZDJCfDShpzlCWJcTj3sOhHUt9njdyGT3u3x/CYgcvHIId6IFa8XrKfBSxSpaetN896rkDaQyoghehoiVgaJrb+NA+65VeQFwv+5QWWIANIHlR/rOsNbs3uMCk8CCC6T+qzB2rQ+5+9dCKn1t69wuXeSCZz/CnBOJDHUzEzqxKgOr/SAEPwHBR0xKqmebsz4Q463IcYomlUrQ5VgudAXD/HGQJ/8PJUOfpsaJXaCrOMfWWqQNUemU8I24sbPOAoX9reVjppyFYEL710+tLk9g/wbHsJdUCvQn8+m4TZGj7Q== 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=jRanaKcuKyzrToSm/bEH89v04GD97/4vvze5x0qnSxM=; b=SJTIS8NWaY0hYy76tQu+cJOj7nmywtoXBsU/hSYlOE7yyUs8OTLbA7K3341N8OyLIKyV8eLhy+yLQJYpZCFu4nfs/CAGaDWrxNqqfbLEADTmSUGho/jPU11SrGZhyvVt60E68zSle2JGFJOTSOuwN0HHrkP59AA/k64VWV7bE7U= 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 BY5PR13MB4439.namprd13.prod.outlook.com (2603:10b6:a03:1dd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55:28 +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.7046.033; Tue, 5 Dec 2023 02:55:28 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 06/11] net/nfp: support drop flow action Date: Tue, 5 Dec 2023 10:54:52 +0800 Message-Id: <20231205025457.1067372-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY5PR13MB4439:EE_ X-MS-Office365-Filtering-Correlation-Id: 09ea0e3a-d147-4001-b3e2-08dbf53da34a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4E5TNdj/oqFBZxax5cX/CVaTfXUDoMTZyUgECqDZDnAKKrHTQN1KtcfDF13QVs+fr8QVVDSwqOvM5p1CcUO3bgu+mFSWxod1C/qSxXN1TtiaXUTTplruD/Nb5OAJpavD4g/F69Bx6kaQlRTQoItKdzWHoDlfRiSA7xJvoe/KUPKfU8MaMij+avsPiynpkEFU2CLncLD954ES4KJnkOWGAw5Et2jf/YANctOO0ipiv+d1TgxkGWwKJesWfjcDxYFbGenfiETcLBmp+k8J10GOyDBKDVwLJ1JETq7Int1xirrvLfcKxqVb2MZed9udW2QOGP19RaQGKff+KdBkyK4gktZJtzdoYxqK1LNvP0Hm/9z89lzs/kVYFWKCso0MCftUvIxvAOgumIVr1HP746X2QJ92Q5nK0k5mwI6CtvKBSQEUhP9jimb3M7lGfOq5uvt4Ld7JJOx6imXN0ukep3hau5b1qh00Tr2TWsvTsAZMzA3c+B5ZDjjrl5Z2RQAl6+8h0A2NDnBcMKJ+eJ8dIamIRPdH1+EbILKbKqMvr44iaXQRrOIPpVyINhKFnc2cxED68TyXGoKfqETYbgdWespgELllup3vv123MI7e0hxUSO1DBGsGw8JQEbpvNTIXBDLIJ9QRXXteQIWGWQE7wqyKM8zUfTfHGeIUh2Y0GjyurnI= 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)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(6486002)(83380400001)(478600001)(6512007)(52116002)(2616005)(6506007)(26005)(6666004)(1076003)(107886003)(316002)(66476007)(54906003)(6916009)(66556008)(66946007)(86362001)(41300700001)(36756003)(8676002)(4326008)(8936002)(38350700005)(2906002)(44832011)(5660300002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vFlXQ/ExuBgQXbScD9hH1QFUN5hC80JSkdGyMWW63JX6BHcI7iuYoZYsaJ7jjirX9f53bGjxjHldLOSUOhAVUL2KB8iaB0djRmwa8YUDr0oAXN5LsAPoXXYQSZUqhLM9SOtEza/BBKJ2K3m2zspkR25DuopTmGgCLKZ0yAGEzXSz1jzXkhvLtrio9DcDS7DZhjLMbKeS6feJgVV2Oszr4F0ANDgRJYBClDIXNnBGCWegTlhjqiG6BbuWzeF9YGlzoS24uWo5/20jWVX9g3QC413KVsg0XDfjY+Z8hJjij/+AOnrLgP2LM8fdTk/ofEEG8dE663/WOG1csJUNqNaz9kOHBZfmrci7Lj2Exq6eLglL6yLVXO6/k5k7+9DYcPXbd/qZNAL1331NyY+BWPhpAdcGCZqB9qMeRpsoSWS+XWCdo2R0kMXNKwLf+WrgKlcEUpXSNlLtWV7lEK/0Eis4LWwrCtY7+ykda7LNjtpoxpQSsG2vfkoiJEMP+2XRKjoM1gRZKtl8h9c5X1KtBdtSNQzm0wzInoP54d/Xno8kJJAump1MmQzg+cWlj3y4qGv+hLIPIaZMuZp9vsBzMP5bUYBOfDjjFa7LOi6ubcTMe8cMWxTI11iIhtsfk7V7kRocN4/tBSLbYeZihzYwoutShLYlAml9hIvqRK0DSaP2jN3ROxuM8slv1EpsvtDlPsnpqmlgeayXmaGbOy1L912igLxzCLVq97+Kqg7YstBvKZ2vgL5EeKHZDTEvJ8z/zV8SMEWw/rAUVYn7uh0EQsqT7GMqwQ++OZfHUqj6PNvpxPW3doUS+fCM+PGFtfhn7kFbb8V3djiP4O58SRFIwdiYVwUF7qhGzCOl430G78HIqojrfodPRxRFJTHRCzlwy9wNZv/h/SgmfbTQsIDYCgQoTEPb67JO3ckZ6z6v20BRjz/SJ35cD2j3z7aikFgEz86hn9/uOC8s8FhwBDEqSJOWn45tKfK+lA08/po+XU/OVQclQAVnHMUslQukXCi+2JxT9NaYD327XNhl+iqZOIdRN1nz6prtaS+kdKDWvauOXJKwUbm3zLmSvvgp9jq53hFP65S7KAuwT12AYphUZwB5u9d78Kog/rvmu6vp7TdE90mH/TwRgWSqx8oS5gNjV7AKIG8561YnylPy/kyNNL4WJizWSyQnQVcRUDx3nxvihedR+aNa6arr3xFMKt+DitPu0GHlTY2IpgX2v8ALokY6qsAQzsQjOh+p5VfI1PUEi9TGuTQQtm7JavvQnW2DU4gt/FgXJfsaTf9RN1wHJ+ueMVXUruqfGTaK5q5XsLkmJMExx4fj3BQ7gzjRaxAfQmOkmYez65DaSPneTxxhdhYxb0RUbrcylGDSwMwRQsS4G+wNRXLq/zBs5R7sgFlFmQ4L2hVWnKdXyLyzt0xHBav9Wnddb7mn+Cam0dY4r6ooEOJb+T+ml2Y0vOEVftCuE6HP55MD4UAyZp7PPtfrWEimMqmqmmVkikwDCvqkfeQX/RYlxZJQ6jl0SHpVKCw2BM5hMSYWCzRdX8lP8d2qNrvj8QxXb2MQzIJVHi58Nw+BsKNxYbvIcfN/e7aRdTp6fatfaJfxdF1Mz9fM0+rw9ywxyw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09ea0e3a-d147-4001-b3e2-08dbf53da34a X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:28.7385 (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: VQxSq23GwyE5Dh4vEaC2T9IICab4wEHwz9mA5x2OJecJeA+LsVClaxUtmMLZdZt0hEcOwX9rWv22btO7TnmJZzJRguNj+B8eDLNpzzhXedk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4439 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 5b6c8553d8..c8b6902bf1 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 Tue Dec 5 02:54:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134853 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 06B8D433FD; Tue, 5 Dec 2023 03:56:16 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E173A42DF0; Tue, 5 Dec 2023 03:55:34 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2116.outbound.protection.outlook.com [40.107.237.116]) by mails.dpdk.org (Postfix) with ESMTP id E8F1142DBB for ; Tue, 5 Dec 2023 03:55:31 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MFljSxGt5q8hRq5m98wbMpoDekZRTapCyBju4OJgwjfnDBFHNoFWsAfVbCB0YhmTtCgEQykWso1yd96k4Efcvm2jCTrNm/ivUJumW9u3f1uj8AosKJB9wSk21NgYSo6LQRsqIAqQUlui6egBhqgOb9xHx4JUsBycL5Ynr/skWXjlKubSlOVzV4URykxOwzlvOsaLtUAEWFwlXGQD+TIlI8s5xHK2AOViu3dVv2VgBs/Hpm2MxHgafITxP3V3B5FuMEt6/Huz9tjI9aAt+zgNQy2KA9WmXwIG2cNsIGh/huikqmTUKURGA4rwd+DacqMdNULFeJN7yvORpCWplepedg== 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=/vNUyXZP4+b0jvR3PLDL1/tQSlF8pVwoPVJJUFthq98=; b=I4XewHXIW1hMTcVCrtPvux37r5IQT5fD9nn30JAe+tM9AuUdWkSt1uWwyQObpR+Jld32j0fAVCuUv7RTx5LPLqNqwLfLWx3C9AaFN7wmehBi4fAdmwsZgpPdaiDuZIaJr5beLhPh63foEHN03bOVbKxrVdNm9i6LmSE/RcVSuMoIJc2iLBwxzkiXcVYu6Qpd3zlrzqe8JdLhdfTTNzRKqOLMN9xWRHaiptKaOalB8jnpsguPKCajWAcoso2wDM5zrkmkgZauu23sjO4Vac1GNLjZ0PCHHxpl9UeXPA29j+H8YY2DpBFlO7bFmmBSYoY+8+VE0wKxIsvMmmMHCCys8g== 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=/vNUyXZP4+b0jvR3PLDL1/tQSlF8pVwoPVJJUFthq98=; b=YGS/ob5uTDFseiWkdbmm8xVoyWDPoBiU2FOmCsnG5+t7ijGpvlHGMtrdah53wNRTAxK3nWaIXr4bROoouxI5omeTsCQX+exrwN0SYVADDzDUNzoa2RiUpM72sPZ+7qZhe5bMbfV2m3RCdZ1PEEO5TsZPypC42VCO3HlFhmiKMLY= 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 BY5PR13MB4439.namprd13.prod.outlook.com (2603:10b6:a03:1dd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55: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.7046.033; Tue, 5 Dec 2023 02:55:30 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 07/11] net/nfp: support IPv4 flow item Date: Tue, 5 Dec 2023 10:54:53 +0800 Message-Id: <20231205025457.1067372-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY5PR13MB4439:EE_ X-MS-Office365-Filtering-Correlation-Id: 15ca10d3-fa1f-4919-30b7-08dbf53da46b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2arWrCKxNn8ElOnYcEOkbCuOyvQt95Jdv8EtshUAltBmeD69xLAy5pzVH+cMNxWvA7vrFwbqLyq0X1mf7N/FbKtLEWIkj5gwKCFGoEhWget2IPziAtjtwxtGdQalf9c6acD1dslWPbrhb6+FxLBD5JiBmLbJwS3HyVdtob90W4Goh54jRFZw9KC+ibdUFjn5EMvjd9n0XKpHOli5ugeUv+0/VnircYv/kc+a6YkAeNw3R515k1HJN+r4plu9zVN4CimvLx/egGwNdFJ0hnP/h5I/aIWPckYWIbj7N1udmYPQJQ42xzuGOWhmSs0MBLsTdK9d3U6WwhtibIVbvrn26bXvLsSU1n59B/YWgOhx6W8znaF7m3e8NmmugElQ0UElU+b2LA5LASBZqExMbjYMyadQ0ygZFaeyuHY/Yj+kftTmRbArbtagz72TKEbOUHzDObYall3nklVVzIedF2EChFpgmGFO2IIVVjDRomIIZOFRHsSpK5/pe/L9ZzlDjUfcRVboa2t//2ocnkxtb/5YIAGanMNNq1zzD3oJecptphdenbm6cAKxedOmmdqVHqTDZqTAzTw1WB7wh1yCz99gdtAXZIQt7/yQsNxrkcJgzGauzIk3BM+8epfnMnTwAoDBp6QvQSIxXaOWwONJXKaEmGdBKt+O9Lz38ZKkffynhmU= 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)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(6486002)(83380400001)(478600001)(6512007)(52116002)(2616005)(6506007)(26005)(6666004)(1076003)(107886003)(316002)(66476007)(54906003)(6916009)(66556008)(66946007)(86362001)(41300700001)(36756003)(8676002)(4326008)(8936002)(38350700005)(2906002)(44832011)(5660300002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?k2uvY+8rHR0DoeHoUICXTrNA2YIW?= =?utf-8?q?Zuh7qk4dte+2lsamHBCCKIidk27XaG2+5SVwsoVGntwnXd/SdC4/blC6L4B2HJa6D?= =?utf-8?q?Ixy1rqnaw2ncrsNiriX9B25wi3LiW26dnzPOAcB3xbpeeZq8/DpZdLm/iH4aXn9gC?= =?utf-8?q?2h2veMib9hiQLrbl92w9uwO9sz6mjg9CrTtySJu2Vh0R6TwYScLp23/TJJ98p+KZO?= =?utf-8?q?ZTXWs+pN7pCvP9UKQVw6ipjjkP9WpLYMtc6VwaLrTSP8X3fAO9g4RRCwIXVXeYSAy?= =?utf-8?q?wW0XOhoa52w9+dYSsL/7/dur0gdohz3kmEU0FA4GvIerUu0dCCqQB0VxAw6zltcYu?= =?utf-8?q?nNBgL/WJIkB8yuAueiSgZHv1KQy7fpRQw0Cyg97lxxaFPVvqhZgTXpt/2rgmUR4ik?= =?utf-8?q?DgqpHf3vaGlTYHXq7cARM4pnEghycrmsw/OPGLV8AeAOUqaMRiWasnIEg14zX66LL?= =?utf-8?q?DA3dxLBGeQcDhwGlj6QlvRzpSZNknALdj6fPtdy/af3gzUgDVCax4NWBKh/8Agm2B?= =?utf-8?q?6AV/jlg2Jk67DNW2FND0YAJax34f+x2CVtLMZY56lgJx3btaFQs4Zb/uCOkqz23kJ?= =?utf-8?q?7xD3FQAKqcxM7A7EDyCHZ+kzs6OxvhyjNrjatD6iaEeKEN1Lf9WtOwvfKvv555vsA?= =?utf-8?q?nMu9osn1FGBRMurPOhiNnP1G94s+obKn4bueHulFODG1vbXB6Ad8LTPeV35xk7h3z?= =?utf-8?q?b0YDK61yj4Z+36p87CoHF6DL7SMySwFsyLGf8RU3qN2LyrzdWlt80Fn8Ap5bI+fKV?= =?utf-8?q?ZkgGtJcaUjmDTho5Qc0eslRqqJW/MDK2iEzztCON6mfMDoN2+1d0/PttN1/TWkj2n?= =?utf-8?q?DCmF/t6nKAo2D2DvDKwIVkRcTcYHAL5az3WWMbfpNbr9eEBEFtBfFKnpPI+T8ZOq0?= =?utf-8?q?GkJqH7l0I6kTg1kBT/qiSqhIt7einOcZmmX5aKCs9+hiefloBeF4dL2s49Wb/rcaJ?= =?utf-8?q?TNz1WIRAgAmqVic4nGURMHkxJlhT6aExq9cQYVS0i9JtLF6ZLJ1+ddM7wzO9BiGA5?= =?utf-8?q?sXQODXS+p+YuaSDQuV5TU+sTsidYPqhLlMkZQAmeu8ir9qD5KjbapQqZMTjZYrEiR?= =?utf-8?q?9LEPwdM0+o/bizQhZT6rgJxGFM3M3d6GRntKAmeqwVdzJ0kMHwZYtWuQwIitiPakA?= =?utf-8?q?btdruw1+h6ok7MpD+WMYJA06/QEyT1alXuinJfSzv3NefB6uMNq7uSn2VUlrE5crp?= =?utf-8?q?0dUFvLcbISZzyt03HTEy3v3Qubennf8J4FttXFtuy1V3dYB+mmsLc6ZSl+p1PLk/A?= =?utf-8?q?aYJesxq0H6wMGTSp7cFnzsY0PhynyTgISTL/xq9yyp1lqseaiVeOpWSua7OeUDsYj?= =?utf-8?q?OKuSAmrCDP/aXXY5fGknmKqNBIPAbYG+hmHjFtQQ+4ujdXQmy/yo1UBgGIjFRlqYR?= =?utf-8?q?QVzgZV2i51qaplbBZWOYE7ZI0mss30zQ0eDVEDg1bLJyjXzQ1q/2DyQ5t3EiklMKP?= =?utf-8?q?yn0C/l9Q+inQhEnA6g/l+tzOjxMKMAOu3oogKx6HGIRYSJtnsROkk+5a5Ub5D+0Hw?= =?utf-8?q?/CXcfIIl3CKI/u1CCrV4oGpFH1LCpK1fMw=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15ca10d3-fa1f-4919-30b7-08dbf53da46b X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:30.6156 (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: r7aegcRp6aL4X8Kis0a4Mp9ufRzmkmLMcHsIO4+M6UUW+IItHRprXCmg0AMl4X3Csrivsar+8+mBiAdPSGDFWGyNc5fY9ewJCl1GHQ0yAb0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4439 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 c8b6902bf1..6edb96c17a 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 Tue Dec 5 02:54:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134854 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 11EF5433FD; Tue, 5 Dec 2023 03:56:24 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A32D742DFF; Tue, 5 Dec 2023 03:55:36 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2125.outbound.protection.outlook.com [40.107.237.125]) by mails.dpdk.org (Postfix) with ESMTP id 1BDE442DED for ; Tue, 5 Dec 2023 03:55:34 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LYw2ED0KePgzxaot2KbR0rbo8QixIfTH6Pmn9Zl4uE4+8moLywLHkymzjUcnXTmkZm7DcnCRIzHdGEVXbvWigzIm1K4eRV3PkjxHIViJ40LmC6ZcG7zlzmxCZg9RxoZyh8YxaY4lbOsT5hvaBxZ1EeBL3yP7fSt/THVJ0ZcQXgtz0xvcU4uNpjso2B9lWDQNYOHxnvzdmfP41OrIjGlgHBLRql+blD04ymaZEMhN5iiMU+Y0w96OHHi+QZMKARJFHO6mmaMRmsS8KrXJWyTKyCPPTINBXZ8E8toK9W8kuxbAM9zxqT7SCU+7ZNiimn4CnwtJOOUkvDZ93hh1LD7R2Q== 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=t3gR49371T4sMpHiTFFcc/FmNbdqjiP9exH7bQWHtZs=; b=Xw7+U8g1bCpY6mmhWS/iFXiXOHTx/XwFDZ2kDHOtS4pM4iMyNKo9RFXuhtTAM0EWeDai7ocbA1F2zkWfkTieUFMARGfO3KediVfxSFeLCc6MDSuOPp2vUT5cea/DrADQonZ/i6qUs1SslfMWTuOFr7iPKF5Ddycb1Jtz5tz4Tw1kE0cERp3jfC0rJmnOL7rANKo1wLv9A5Ecw3zgeGPXSnmIkY3WUUBgVwIYzE2tpg027R3pEtj/74k7nkkeed/yMSYK/ay8C3fTvyEyjvNUDqppSvX+rGgy+nmbk0Zp5yKz6AmOj+5nFv6NT5roZzOziuFS6saI+pU6+v6CBmGICQ== 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=t3gR49371T4sMpHiTFFcc/FmNbdqjiP9exH7bQWHtZs=; b=MMC4FovzYPH0T4gGZm0AH65AYALDM4BKfyLli+bSZJSeKgcRB0oVGoRclpPo/ITioqWNB4aI2CS+SHMpQ15OX43IaD4k1nJiRqi2x8PL4A0jKo35l1z9xAD/GgLbTnb0Xbf7qPXmOb0805SfB7zFmoMSwGkYIUOI3IyOq2PrFX4= 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 BY5PR13MB4439.namprd13.prod.outlook.com (2603:10b6:a03:1dd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55:32 +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.7046.033; Tue, 5 Dec 2023 02:55:32 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 08/11] net/nfp: support IPv6 flow item Date: Tue, 5 Dec 2023 10:54:54 +0800 Message-Id: <20231205025457.1067372-9-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY5PR13MB4439:EE_ X-MS-Office365-Filtering-Correlation-Id: 0fdc7544-c391-40f6-e8d2-08dbf53da586 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: irb+70IyIwhPTfm2dEiNVR9mACLw8zpNp1AKypT4MIvtvnpKLHM1FwiQoiCvI94+VXRzbr9rMCETx6UTRNX7X5H80s/j68/aUYYT9UHKt9o6KOyITqaP7sUVMZJRZhltnVF/vkupwpKqUymq5pUHS2qie7ipmJuVH6Fps6CLBS9phIWgaVSgpSNKicE2ShBSH0AGGLTRdXyltSbsBjS+bWM6wDc81ra2b8GFb1vgSHSSIhvZAMyB61F5c0+v4Fn7ZP2hy8BFMr1KFbkrGk0xDCwUHvH4CwPzjO5G1Qemm3r2POjeXd8ZIfKY97dBGFiauA0xDfn3yO6y8smVdmMJCn3DIaJEWSBYK1FwcqvQS2Lqh3EEaX9niVDg8IWySfp53IHq6w1WlBxcbQgkXwXYclj0K8z/NL1cIms3UutZKUPX0lN+Vi+2paqetss/LODUwfm52Ekc4Dzo5C1ODlTXQ7qz0ZwFo+ni9tChDxqT+ULVW0WXO2G4OW55vvdq9S5C7UfaklWdp4FxLUgd+nSrFT3nnlrfCd8TYeXKfmrX/UvvMtr1QeSMcxlPqzuVjAAtLqxlevG1Q/G4FkqVO5X1kFY0zrmlM9z8Y4xjJrfmg5ThfHk1DyedRGMnvB1scPEbq+ChtzFyCAlKZffZhEtM5ZrfamZWlOYt93zvqfJHrn4= 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)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(6486002)(83380400001)(478600001)(6512007)(52116002)(2616005)(6506007)(26005)(6666004)(1076003)(107886003)(316002)(66476007)(54906003)(6916009)(66556008)(66946007)(86362001)(41300700001)(36756003)(8676002)(4326008)(8936002)(38350700005)(2906002)(44832011)(5660300002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?hpRnu0Yp1Jcv+M5j2gV4gfDKDrXQ?= =?utf-8?q?5aEi0cNac/5ydd/hoIwiztegGR4lP45NI799QU11Y7bkYPpZnUWsK60i3uOk/4huM?= =?utf-8?q?VM8v4nOS0wqMtzfue8vHG3vDbxrcihOfRAyKdIvXCFy6mJZeQ37cEocAINy8OA1vD?= =?utf-8?q?bAZPvjrdqpgbUKWtyonOkRE+GMhq2vdShTWp2/M7bXNo3xesGx8IYa0JYKRjOFrvl?= =?utf-8?q?eb6YyoCSslO8v/lFqitPWGLpd2Nuy0LZWr5o7cDBaJa92BZO8Kbs7+WS+SmAsFK0I?= =?utf-8?q?HmHxeeXucdlfAVFKMbz+o6qSXQ6P6rb0CK3TE9vR4zRHij4sh1InIIelCXdvEynog?= =?utf-8?q?0omk/PfpGbox/F9uesAgtXZZ7RCrl0ZZW8cbDrROfAyfR+P2vKtK9FEOW8TbuvIJo?= =?utf-8?q?HL5I5MFdC7mhbbfPqOnn9RPXaUOwXu2v93w3NqaU5RE0ojqQDKrQbPk0ioHTID/Yz?= =?utf-8?q?KyQ4ZKey+XlG6z//a8Y74cOtftckneSfiOOeX9F/YJIIIKY1gtZ0efOfAc17sQ8H7?= =?utf-8?q?aR51MbwItaGV1Rx/FPrjMRpr3kYEWI2HOK1QGY76bDlbgQLR553NSaGSI84hOKmZW?= =?utf-8?q?PAcWN2sdABq0jnkQDNDxDGgYndPe7aDr/7jRrhtXUCQx3MsxoOqezoRo8fFnpoWAq?= =?utf-8?q?dmBzT1yL+NceK6zSlMZdZq6w4voJ7lvw0IXS5/RBdKxObMIuyKgZ1mVI9y8UomPPT?= =?utf-8?q?IEOXQSfJpRWh6Q9VqrSsGTzqmVBd+0uGDPUmlcI8ZTJFf7glTQSnrbUbzg2gIevOd?= =?utf-8?q?nVMMIiuVrPohVsqjZAdcjl192IenTgzita+IsxcNGtHxPH5jAxF+usqHn+B0iCXmu?= =?utf-8?q?oEFUzkom6oyjbOlA5Yo2pyAtGZRD/xI3tnerDy/uyeLy356ii9KAvL5L5aioQt5OF?= =?utf-8?q?ANZREnepxbjtQmrdhfm7r3Pz3oqhBIVh7lCFCAJAuq1Vo2cV2F1HzHcDaPs6bi5it?= =?utf-8?q?gU8BGoWZklrUz9dqlwegijWB0PZUKrBUFWbGPDXgDImfF4LIbe5HONmYzkebNcR9f?= =?utf-8?q?Rbjh93i8vx0vUrKWIkDneulxjBwLa16CfglynyrAKEYlbdA695X6HIT+1todYWHmb?= =?utf-8?q?26k2Oi9agd0O72wBNESxEIsuZJ38vzghuzqR38tPEAdKURZdeqtvLAvuXuNyPa+LS?= =?utf-8?q?P8ULJ96tQRIBtyzVtp8Gxo155034oorTN71drm55sy+x61s84JF0c8JbLo8a5kYtg?= =?utf-8?q?fd89KAk/lTu12F/NsxXUapS7G9QyXN2gs5d4zDCr7VgRC3cj+61zK8V6daf4R1+tr?= =?utf-8?q?tu9vKdQG3vDTIcAt9F8bA0R34HVoS15iC0LMj0mBMq1bcSGpo6LVolU9qG5d8V5Ow?= =?utf-8?q?ecn8BM259oZOl1DUiMUhJa7t0n36/IUwLXdzqwf+mFCMkURoUjXbNbTtlLLuabc1L?= =?utf-8?q?qKKRCaI7du5H4HdbuejCjX15lVXVC4Pudu6fXKRit4jYoK9vcMjnAPVG1WQRcI/Cm?= =?utf-8?q?Q2kFWvVkTqqzVObiLbYqf6+mrxIbeo976BDbtOPwHHTmPKZ+mF1xx7N4TpVL8hi6T?= =?utf-8?q?BryT/ChnpnKxbbrz2MNpk8hxtpobqBm7Eg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fdc7544-c391-40f6-e8d2-08dbf53da586 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:32.4866 (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: G+MT0kx8K6SaRQDLT5fTRADzVfrGhbgbOSywChObMwlVDHV7Mz9XA0T8+cDQXUDLZyPdqztgAVhmZ9JEmtv5ROJiLoXqklH35bVgcwbsggg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4439 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 | 76 +++++++++++++++++++++++++++++++++- 2 files changed, 136 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 6edb96c17a..56846e3935 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,62 @@ 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->dst_ipv6_mask[i] = mask->hdr.dst_addr[i + 3]; + ipv6->dst_ipv6_mask[i + 1] = mask->hdr.dst_addr[i + 2]; + ipv6->dst_ipv6_mask[i + 2] = mask->hdr.dst_addr[i + 1]; + ipv6->dst_ipv6_mask[i + 3] = mask->hdr.dst_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]; + + ipv6->dst_ipv6[i] = spec->hdr.dst_addr[i + 3]; + ipv6->dst_ipv6[i + 1] = spec->hdr.dst_addr[i + 2]; + ipv6->dst_ipv6[i + 2] = spec->hdr.dst_addr[i + 1]; + ipv6->dst_ipv6[i + 3] = spec->hdr.dst_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 +331,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 +488,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 Tue Dec 5 02:54:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134855 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 4F4F7433FD; Tue, 5 Dec 2023 03:56:31 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 353B542E0E; Tue, 5 Dec 2023 03:55:38 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2094.outbound.protection.outlook.com [40.107.237.94]) by mails.dpdk.org (Postfix) with ESMTP id B4AD342DF3 for ; Tue, 5 Dec 2023 03:55:35 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JRTQeuiNWAKwjqnsaQOv6yzlSgzPiyGt95LpxsYj4ouHxt8nfSlBv7PlBiwoc6venSw60tN6MMIkkyL9BVQIYbL9pe0ssCytv4JAct2RRZ7wvDWMzxHoFzRDAB+OQ4iNJanbVCl+5fv5AyQyJPDYQd/5znP+QG/QpFgNP7nGhzqa3FWqqS8mw56kvnOzPihIqFC6zyIIDYasssB4c8nGyB0UBnCsROfYBK2QhCVBiP1gfeCeb7YmRdP2t6GItg/lvGWGaQKA/LY1zdfyaol/7/VWlkzErUed1NRW/xjQMAXX0BEHexlSMefR+daynpLUYkyXoINl07bnAA5iAutKWA== 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=E62V24IU+ijATdOqB4qMe6Glq9QHqR+SnPvZSpZZrZ4=; b=f6Y68+ySEvh440v0WrFD58rCt6YR4nAK5FVoro1i2lc6VhTVdm4WrGSC3pk4WeaOOQ2m8Yzelc2/Qxtt+XYSqZhmEWeBHnVCfHWQVUdHdbCIRMHp4+ZJ+hLDrZSTZzugNXE/sI5yB2128J+pVvwAi9HBI4OTv/POTR1XJiCjtiHA4VNg/trAaAxkEhNrpU0DLmY3aHcIJgaI7myAs0AM0IonMKpzXAWVcMhn0xkyjt2neAZDfUdC05ige2ikhi8fu4Oqp6j4swCvMFKw0oFP1pFEoeOiwAuVNlGrQURxgwilhQ+IFAMIsYb8Cl5bz/9YyrvOYoMeOk+pSGiu2118pQ== 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=E62V24IU+ijATdOqB4qMe6Glq9QHqR+SnPvZSpZZrZ4=; b=pw0gNcK9aNrs8XvQfTjVlLPJVkUpFMfMcVSkVypoEa7PnmHJ8OQWkptcQW1IgKMf5h0bv3QUeq1QY2T0MJ+4ONmtulLnSyAcsUpZ3+Z45gV0UDguxDKT9a2on2QbPa0sl0G80xwbwb2Ws9rCYJWDFUmnhHG4uKgxIHxqF1+OBdA= 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 BY5PR13MB4439.namprd13.prod.outlook.com (2603:10b6:a03:1dd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55: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.7046.033; Tue, 5 Dec 2023 02:55:34 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 09/11] net/nfp: support TCP/UDP/SCTP flow items Date: Tue, 5 Dec 2023 10:54:55 +0800 Message-Id: <20231205025457.1067372-10-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY5PR13MB4439:EE_ X-MS-Office365-Filtering-Correlation-Id: a2b0e58b-bf47-4949-65bc-08dbf53da6a7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UTuSSTnJKP8iUTYwqA+aDQ42NWoLPIys1vEZmFwjJNURgjIRFLW3ix2FchT0zey0ktrFoOv2UInsPlSUV1QkEgYQi9WoDnKIL1+RB2QW9un1QSoi+qpI2DvUIIDoKUsLKhz9fie7X6f2g3Ls/9Z2KnhRMWkuAsVcnJqrhVggPg20cDJZ5a3M94rZRTgyEy2R34xA1h/K7wh24p4u26HKXU/kAwdutbyxQlSLb+s/NBZk6lUQAlwyIkO5UruMK770fHav2InPXezAv7wGtoUXqKB1mgp4EiRIRrtIO5cjLE7DMRd0k76kVC1PcK9m9UBzkf70hQqMR0Y9hoWPrwRFJ4hg0XsBWRT+hQtwtVEtNELfQdeG//cWeA7aOQJsWRX26PJ+dI9OgJ4e/VvWhogkFSHq5mk0Vej3eX24rlMzWeXaknj/mSyqe+5FGrJ/YNkeRvbU7wfqMI6S+V4zYP07Ei3c+0tsMztpyhnJaBDGU3HllVtXiea3wozEais5AkP3uiTpzsRLkOC2mkK1C+HlCDqN3c0Ea+ENlSO75OHSJG0bi/wW3JjEAqKQLu9za2CdKHCWeBwlqduXf7/otjU8jAjH1/86rSSCRWH+mOQBOJ4yhINYRDWKuhsj+b46qOaDDmsuIv075bLn1t4ZilhAaj448/zNvnIEXqUbcb/FORuHkTX990E7XREADylmzKRj8oMbT9xHjUV+d7FfQVwh7w== 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)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(6486002)(478600001)(6512007)(52116002)(2616005)(6506007)(26005)(6666004)(1076003)(107886003)(316002)(66476007)(54906003)(6916009)(66556008)(66946007)(86362001)(41300700001)(36756003)(8676002)(4326008)(8936002)(38350700005)(2906002)(44832011)(5660300002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ApI8JXq44ou/41ciH1niuamI2VEbDQZ5TM6CQ2aAfWmVDtXwAQzDsnOJwklEvmSJr53Uh9CuVoh3QB9jny8jkLI5qqBGRxoNn0L3XsFvBB1YXUDmg2ZP78t0nBoC4PSPEwZlmDHV5g5K8U60iUzEzHew5NoS8qJOI3aoNHvJl8tYVxucV1vwfYU6lI4hUzhn34+5txvAJbBbiuVix8h2yavaxA3eUN+2b5c6bbLz5a8t+9L3wCxCP1jd4KZyINl1jdB1iqoqzYnAiKIgaotTo56YqdsftRT6GwsuTH1Z3yO+8R4HZw8poA9cfArfTKNnm0Hv9xtST8yEcp5E2Hxt79ir7PLIX9mhrBGzMe7iYESq7Udu/sCtZvTHXq3D+K0vw2z3XaDMFOLCoc53dNpSNJ422pG+yE6Rdj8brKvcT4k0Y/faIzQGp1cBsBCzIC/h07xfsIBZEpIlgFDXo3mdm49lLZJQIU0m0jvvRxGhXCVdN6w3IGG4OsuIs57kmVLmur1LRzVuHrCdCU9St95KKI5/d4OKLgf3WyrWFvLUBMPbXc9F384bvMsFy4dTq9UiAgiNRGbo97Opi+tmdgz0j20I361usYPGznVu3iX67cQLGy6U5svD3tP7TKuzR/Bpnu9G23dkdHUWT3m+cffxKlDUhxU5HtQNIzRwD0NkEwHo+brPCOOa9VW7NsW3vtKNg0LRLGwjO9PGHqn/fQ6deg3AleDGGyTdn88Beah1XJkL4IhsOpxqfFacMxAL/Lfa62w5bSs9XflEP/SBFFgtdxQGEBBXCe2UAnLg53gkrc3HMb+4bCzXRqqdEmTShOfdomlpMGBbZeOY+mEZ0c93ShxRlNQzZCXSc79+nTfi7uQmnBx0EMb37vV4Q8Pd0r/H8dLO+z0oNYhMouQSfX1YdYwed+A9NJIkrSMMeqrokkW40GHNoAKSNUW3gYNk3Os6tnuYNcvlok3T8P8jiEScESKjEO59nbAccciWf9HdHzRqXb+2CJmbO0AVc72VO4nU8wUi3+9aKS/igf8KzzchBKhO1KMVWUm97caJEuOSfdZRkIscnzqVGA11VKP8hx4A2GmWfmyQj1XVMZ7C3PvpnjIHOK40lXB7BMiLyM3VitSREOTJ2Dc3mQutLVBj9Ha0Wz2sOdq8UwV/fAsx+fiWvYq22rkxYTWK9HXzCQSn+gP7pP/QGs7s+Y99hPWzZ3O9JiMFKhjsY+pG9iv9DZ986yuAnsg+2zJl0mF20hMz/wFcrLLlOvtX0yJKSl2zEVP0bTKlilM/FGOuH+kdRav9lBL5gbAVWn5yA1XjoapshEKVojexfWkyR0Du6T+fw/hea5dsaU0Z5D674ehUEJY95JKH4sG19dGmmzOPMt6keUUu34kothRcZxOtcXqlPeyd6h15rVB4j831VJXya0YTA6Sln+yey+Wv7G0rWO0OrCt3Hk88+AV8gOgwt0Dg0pAMPm6HhpCtRPpdQhOnKwk46pyQB3BSAJcb0bkkG0biNCJp97wug/ETqzgEYIEI4FBNb1W1s5p6ZQSNzR67VB/UXq6jkQcRUu6nvBbHzUh0ItwBS3DfdC02nKrV1G5Z15VuXm4XBTJvmAt3AH7ts1lWSg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2b0e58b-bf47-4949-65bc-08dbf53da6a7 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:34.3600 (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: fH3N4G9i/CbFtoYUkUxWgpUrz/fe24Gk60uqkg6h8qzssYj5XHZcZPKnbExdiNbvqJcEXgewMS37NW7f1H27Cpbw8AmMSmpXGeCnsNrXBXY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4439 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 56846e3935..f561e9ecbe 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -309,6 +309,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] = { @@ -320,6 +367,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, @@ -332,6 +382,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, @@ -345,6 +398,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 Tue Dec 5 02:54: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: 134856 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 62B2D433FD; Tue, 5 Dec 2023 03:56:36 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 57B3042DBD; Tue, 5 Dec 2023 03:55:39 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2119.outbound.protection.outlook.com [40.107.237.119]) by mails.dpdk.org (Postfix) with ESMTP id A16CB42DEC for ; Tue, 5 Dec 2023 03:55:37 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QWIw8MPGZROpVly10QaQsoS9RCgjoi/5jSkyJD5tnM3FTFF+0mX6osofdP4tm47hWPFcaiRL+Sn58w5TOTkUqs1Skl0Qj/KJSoZNPSnjmuXA3uLyRjFV/LxtHRwVRY5T6pxNAwfw/MiUJ7Q+nEuZNzxfQXbh4V8SuE4SEIhR0IqyuZdXvyzuiaq5ZqBzh71D6aEA8LqKpqgKXkGwfYaD5Bf5ijDHEoDFeQ7UGBSD7WYFjIbPfshYROOak/fBb+rJEdmZ5iE3hKM80gwdzIEL+RXsjloZmCrjKyo+e7MkDuoKUiIsscnnL6pMK2GL7sBs5vc1oWFemUeHDFHTbIW7Mg== 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=68oAcjHPqhiY0d9xCkEABkiIlcuy5mVEc0oGCN9ZYHA=; b=UUrj7ESDHedyzrAqYS9mE+KcggVWviqSleXoPDyZ3G8W8hY7eXejaIrWIXCK9CnIA6m3aKPgKgKfMrUoOVxcjj/5T5fJExyLe2tao7OHge5JsT7AvBt8IA4WlURtq5dvSnE6byzTZxBwhZRZPXKkZloCOVePGzVPVPW1jvdWy63xw2zYynXRirrpMnwX6K/+OLc7aqGWmpYSW7bF7NXjdZaC8abqETrlrjXoMwVEv/7tsxU8RM3Hzwzq7jtfa1nLYLeSN5W8slHq85BD5rL4WhQmhSoT2NNEWDwbHF6X7MkPL7zv2F+/Mq3mS3IqJZJo/OmwhutsoRiZUNUN93IRiQ== 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=68oAcjHPqhiY0d9xCkEABkiIlcuy5mVEc0oGCN9ZYHA=; b=sQuVRqIyIt1nl3mKKZmQ8a7vD+qD9n2nvJE1Nhk4iYjX1imySvM4V2BYVl+f7q6yGk7DAsTpLqYOidnP65EF/v5ZuYwhi7KNrpaNhF+YIvSi22vYDPgekuWws3jGVOPCTrK/fl2KrMrIkXJzFawU+3NmP1OSmU/6CygtOwa1u88= 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 BY5PR13MB4439.namprd13.prod.outlook.com (2603:10b6:a03:1dd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55: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.7046.033; Tue, 5 Dec 2023 02:55:36 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 10/11] net/nfp: support MARK flow action Date: Tue, 5 Dec 2023 10:54:56 +0800 Message-Id: <20231205025457.1067372-11-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY5PR13MB4439:EE_ X-MS-Office365-Filtering-Correlation-Id: 32afd186-cd3b-4322-1dd9-08dbf53da7c3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wg840h8GVFLQcJfPFbhYzLq2X5DxM6UokmlHmfeKRV2P39MCPvdRzCwAgITFiyRyljAbkJoZyn2SOJQghE3Ir77Y4AXJzQJCpRIh6c0Od2YB37dhgruoNqNrUtpt3mD/Ifjx5ekpaV2eb+P0/mFwXTN4CEPshzeGsfvU9t4EmA7ZqWxViVmq3mj+65VraXcg084YQ4ZyFoWn4N4PHxBSRCjqrbME8uEQE/urstIeml12v3x0BfGB7vyt/yqeBWLvea+Lm932SCwbApnG7lHmU2WIpbZ78GtXuVoqvHGWa1jh7vl2I1HMwmJCGWh3EvlWSdZWkOZV9rvQ2ouR0HBFbJPNP6L+2aUSfdPKbL8Xk+zjLhQ2s3KtFpAgI6fHl4HUjdKhtR924AIDWLgqtcLlErann8BmGdZk8tPO93SeUjEh8hZsnSwTITfHXi+tmt2oeAwFWeB+oiZYV7FJ78gdccYOVWbIS5BLLZkX/IaxXUpwfDOJ7hYMx0bNuEh7sJFe9f9rLKfNKCCWMcX+mIJEhXstk6PZHsqkyLJVDk/DZPK3FU26HdnsdDDc+BFYTRdFrO/sN7sd7IvfNXnNWpRgEvxal2piFYDVh2FMYN48bC8zQu+YEzr1tgeCgNyqaZfly8BxlU/Kfz6+81kw9+85zfpGlNW2j15QsG8E5QwLQz4= 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)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(6486002)(478600001)(6512007)(52116002)(2616005)(6506007)(26005)(6666004)(1076003)(107886003)(316002)(66476007)(54906003)(6916009)(66556008)(66946007)(86362001)(41300700001)(36756003)(8676002)(4326008)(8936002)(38350700005)(2906002)(44832011)(5660300002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3AGC3IAKEsK8mJbSB//dxFTOuSPi+BmksUFUXTO022Z1IG+j/qNlT1CqGscdgyLAI7U9W9N96W88wa3Kz8M0q194Fpf8yhv4T2R3g9WUBqI8UJlf6fHpwwVmB4WxtruUCtl8CUB1YmgIQ0JXhrCXk73ETWyZT5YYtMBnfwnsgPUkHNNoYRDJM0LyB8JAOvCInZLa44TqPAN6Ktkmi4fO5ve5vPj/fhUZoWS1RsiDu+R5gbdXw0mtLy5uvgrYU3g0AtqMqRtnzITF4cXQRt3oB/4Z8qqOJRyOxOAtgxQJ3ru5V8yvNj5K06E+CelSaytvzp6PPztUNMWDDcwm+o+P1evzSnnXQ5tMbypmoXpdPFgxP4bsvd9DHGXZABnnfLzUEHPrJukxgK5TcjHpysvPehUmRqk4/Wbnd726E+6/umYtNTRVPPzsQbqX1SMfdCaptmA6x2Ge2vqYAIMjwCi+sWOQHw+M+bK96qiMhynsnoWsxaNRJlrOXig+NRj1YFYqTeKv0EvoOl2PrHaC6cpZpoxfIPfdYviBtj3i4LY2vSqgNapaJuxnTQU8oBK2zmXFtV9V82jc0RSG+8xSBl4Ll5Zi9jYx7HpVxScT3S9zOAvGVdFTUX3S7WA8uLuMGFcszjsNwwFUD12zpWZHOJdg7AE+HgEYqFo1S1RmBjuZJIAnGzNjhCRrIb3vj+sWT1AerG/NltqZoD6ch3hlXUsrTpqDlWI7cCFdh3vD71OzARs6ZfhDCr85/vAcBg2vHNYXkRtQMHITctrDR9LqsNO6idE7KwYWuSepDeKTDSjKAGQ4Hp5scFptFZ7XTVo2+fNOd4HDI9iFmRK5+MM5IT1Ut2yIuJPW3IrKZBXmqS6k22kvWHZF/tBz+cchaa+AZSR4Y+VCVHV3SPFD/mQvn6zds3ReeDhsh1gOjwMv5dCyO61Cp+QqT8JrlYuBagh7ZsK2DmF+G3w9+OEpMcQoQxE8zfOQl5pzV1Pk6fPGwLif/r4/iPohM+a7zfgjrsWxACVmDAG2rVHMmjWBpRIDXnetoAD6zID9WLCE1PabNUqKLVdY/AfVmq0SlV4XPrQkTaINEJXvwkJAEnBlPQDmBSZ0gRQU4mfhsgpavTnNPY2RdbNYS0BDnoVHQSKZtu8VSEXI9e9stilSLiCfh8dmaVjWpvyp4sn+hiY6Y9UJpShXNqzaFKxaRRWhk4akHAQAJITKSN3pDBYORni+82stIaOr0jUOgWBSBKjrCj1XecL2NwXY5n3lWubfk7EIpNxaUVkISBDMgT6TWUNwTYg/lqaoPPTrjNAxVuki5XqpgyGTTPoQihr4sSWmrzfLJ4uDIm9T/R8QkM1pNS3yzVCy21VLtJSFSR99r6/RC93GWUnULXq5+y3q1AOmiyOUXqUDhAHeDbbHtJm/dzI+GsKLW13T8NOPYc6XxtKvoQuRhOqDc7ISPYdfmh05rvZ5CxOYv3rRsh9TvcRZZ9ifxD5aSB1yJX27qB6e/3686eOnoeHmOTUyR+Y2/GywOzUQvJTMjsQIswxlN5JVpxYRDG5Ir3NDZMhjer1ckmjd5nreCEmtWpTc8NpHbi9PlbSMGPxglHPDy3BadRMD3jWJnyedlPou7A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32afd186-cd3b-4322-1dd9-08dbf53da7c3 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:36.2512 (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: 2jI4wUk290+SBnufwPczDsMT+EYd8epQ8+EwyEOqvXtnInMiymZ5O+CuZmLpUqcN1bpmw9BsltB70gA+GD3LFwDau1N1+7Ld+TFPa3xUFW0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4439 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 --- doc/guides/nics/features/nfp.ini | 1 + drivers/common/nfp/nfp_common_ctrl.h | 1 + drivers/net/nfp/nfp_net_flow.c | 18 ++++++++++++++++++ drivers/net/nfp/nfp_rxtx.c | 18 ++++++++++++++++++ 4 files changed, 38 insertions(+) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index 1a09c4cbaf..248fd34a39 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -48,6 +48,7 @@ conntrack = Y count = Y drop = Y jump = Y +mark = Y meter = Y of_pop_vlan = Y of_push_vlan = Y 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 f561e9ecbe..71f126156e 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -548,6 +548,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) @@ -560,6 +574,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 f21e120a43..5094bbf145 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 Tue Dec 5 02:54: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: 134857 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 B8BA4433FD; Tue, 5 Dec 2023 03:56:41 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7FBC742E04; Tue, 5 Dec 2023 03:55:41 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2126.outbound.protection.outlook.com [40.107.237.126]) by mails.dpdk.org (Postfix) with ESMTP id 6326442E12 for ; Tue, 5 Dec 2023 03:55:39 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LFPPl9Y7AraXeoHjMrxj7PwLWUoAJLZ431FQBpVLvn3wASOqzCMbLf9ds0XgJrJ2yg4YASzrjmSe0iQkq6pQS4loecKhRoQcafYTOZ8fHY3flsyxSUDAKfqlAGv3E6fxqIkqmlmzywtXrCgV1pUyd5VLL6uVPIN1BU/qXuZxG5CJqe7p5oaugKXrZQZqZb4zn0osCyYdRxs56vawJNTrm9HQhSCVS+K4yujzsM8LmcxrMnyAy691IjySm/QZ/bOKV35WqDT2NyeRUmmyzbl3cGPkAzjgPyQnU/vlkaJbek7WTC2LxUbEAbMUbDqDkolSRu1kb3bkXw0j30HHcnoxuQ== 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=DCNP9TgDci8qhsmSMiwZwvBsDQt2eaUv6yWm91B/DDc=; b=aWiy55mnYCYIkWsVBrSXhEwhmgGisgBBdhW1FDovq1+SewlEVRnrdayOQi6TLenT6yLTYMhVDOiCxM3O+7XSvd8AgmOwvFDuiTwsomGBBpwIRmLOc9wmb+WaVkrNZ6B6EbT2E9QlrtLPraNI9HMJOWlVFQ7LUfTVAVj1J4BwwBe0f3jtaS5pBy3ax+mhIXSkkTXH0sZdAZUJkjVi61isJdqVYJ33WgNAWgExTqZQqV81hQcjilBlbEnepVeoGdn889wILJWZaeHdagTAzg4M4bk3AjvHyYxyVZOLoK7zz1juvqLq43SdSAYDig363vLo0lhM7O6Wp5q3eH67WSRFZg== 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=DCNP9TgDci8qhsmSMiwZwvBsDQt2eaUv6yWm91B/DDc=; b=Tw9ILicVP38fqWILrnw+bbJsw0PkL1r67wreBRrZCPwaUtOAyjdLAXwZUMNVi3LRD7Snx8QwsmfvJEyVA6rsocZbDQcsR5tS1V5AE2Zg5a+c/uGulmFDzYbwVKfFgwqFpoSc+I9x94y7zM4pyKL/QnBPw1a/jWIqSHrYfpJFGa0= 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 BY5PR13MB4439.namprd13.prod.outlook.com (2603:10b6:a03:1dd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 02:55: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.7046.033; Tue, 5 Dec 2023 02:55:38 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 11/11] net/nfp: support QUEUE flow action Date: Tue, 5 Dec 2023 10:54:57 +0800 Message-Id: <20231205025457.1067372-12-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231205025457.1067372-1-chaoyong.he@corigine.com> References: <20231103062606.2632012-1-chaoyong.he@corigine.com> <20231205025457.1067372-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0214.namprd03.prod.outlook.com (2603:10b6:a03:39f::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY5PR13MB4439:EE_ X-MS-Office365-Filtering-Correlation-Id: fc9123d9-9129-478a-fd32-08dbf53da8e5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 52uP1QQHxMy7JkKuV/u5S7OH0L2y+aCrwyblnJ8b0AmcZGYn0YIJr/nOYhiOayzLVrr4QBb1ZuWULuys655xrjpLiCWU/n/oY90x+13QWLWRxnsH9PA0nlT/IKLlx+8xxnP5DtBvOyK4+HA+QvpsNlEr+H0KbiqxExFGQcytYowsQ8LFYNOcE4eFjm+RU4a5tylAooYqnVJSbZyGlW2G5+GvR4qvTqP/QIGAe6PTsDn5Pdbmgs77OWzhL5w2Ajjep65MexDVyfNxCRR43PGarhmoS/NZjHkyp3TRJMWbqKUBujCjSMxFmtUpdW0PNfQ2vtLgbEfd7i6bYEZDFwOCC3+QTEdBdMSzpdtSfJ0GGowvR/okbarg/aC+S6myGLbaU4sb3GnXa7HwlzhKa5uz6K1rvXiMPtf8ySO0wJIGHSehvOVm1xIOfglC7m4jG+eOaTrFI8eeoxw/W7+hJGlmzLbD7ZPFX+4l6a8cJrSWDREeX/OnSWHdWkpW4BptdJmggbxdPsCOorDHFhFkOjLC7zjJMJLCSSbHl2su1/r64vCBuKoBRYjKk5pf2xyLgP4x5lxsAdqfyub6B61u+22RHv21UhgibZquKVcw3RYeZ6uSOElkHt0s9/l0n8AKSZOl4RlGMyptwZFNS6QWpJZrEDzK9e/72rkn0eNcCgBtuuc= 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)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(6486002)(478600001)(6512007)(52116002)(2616005)(6506007)(26005)(6666004)(1076003)(107886003)(316002)(66476007)(54906003)(6916009)(66556008)(66946007)(86362001)(41300700001)(36756003)(8676002)(4326008)(8936002)(38350700005)(2906002)(44832011)(5660300002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Gut31O+q7KKOmglDsjjtHoZmn8ztRsPMAa59JBfbqJVyASUrwzxF25Oa/h0oAyssr3VB7CfoZgJPfGQw875rglDRyP63mWTlXjLUuSWsfyYgetSF/LNG/flg0HDZ64Suu5FHqN40lFdlOLaHxPoAHHYXUkfH6bGgXjFxpLLMYBCtwF5itm/R19gzzeVWYxGFSxucOZ4vDF5MzXbrmJarPQ6J+gpmPkYgxwywkLk9TpMEAEKSd1aB8vAtY0MQgIRvf3bzk4xfrsiho9eQfsyl1s3aoHAA66hPze/tRvjUMhPtskgLLt1lkxD9M46F/bMH7MZnjsoeA0NBVGR6GVIdUj4lt/ZbQsoeYKBK+cv5SM+cz28JdV/QQOtefJAfcyrZPq2Ft8djk3+kSUY5wirOISbx5dynhppE0SsqP6DN8h5ZFqYo4MFnj22XRv2G8GHd6p/TRU9X3w56L0IEP0NnJQ++WaHcgUI2i6vxPSEyd+NYwxi1NJ1p/Joio1L+i+hWVxFO3BDHbGApYoQB0hrbTpsKkv7ApVfbKCkDAYg/b+xqikqdi6iZfgpBQkzCxWMk7WZ2o1z4HeKK73DJ/GuqdreOCGZmdbv0FzaFfkNxXxOr4gGjtbO7bisJzjqutzTFWsCUQQUx4WSUJExY53VRwmTv6qpQ5cGjf6dBs7F9GSqSwVR7I2gookDpPv4n3H2kVztXitKp04v4baGM2/JW5thBBBku0w5wXxAEHaDxkwZ98hZetVra3/oBEVN9cyqA95LBxsrs6l7RsTbl2m3dxRuYOIQCThKu3iBsC2DK1Q0tWp0IpWAB5+mAs9YnKXwV0FOiy9f/WTNFUL2Y/Zsp752PNOJhMPOeSVOm5iRmR8eO6ms0u5dAkqC4LJ7w9eEUlaTBu7fwpKBB4NYx6WpdjVITnHGob5F8XBaSsKlZFkMLTl/qF/CEKMPxQZe6ss15RDb1v2uQRQbn3PbHhCYhGtmfW/zS/UYw15LQm/h/sTvMqB6TG22GjBlmasDSHbWIWGz5sqag2Q07UKCWDu2yTNimkVLohB/bAssH2BFyvOxfqJafG9Z556EoLzXhLrGqVQniJsHJkkYGn2qi62oPdWN0hZjc4hFYCkqJAE+50vhLtCfd+1gHlN40OX2hXGNwrpJQFIKdAKw4tKnSxgVWwGoNXIVd9ACLcJ2wDYGF/A9OHla//dP445LbJC3LyymYbRzW8HiK8WbngVT43lcLjA0KAJCCuGQRa1ZuNbbbe5qxDLd37YknePWlNRb4q+6GqMqb5F98JjUPUXnQCA74Kyks+m+79ELDja2TtqFKKMd3qQ/rprZDrP137h6+SHeQk0ZmmxBZBeoUJ1A9m3tlcQXjYXKAr/rOpk0KQwQQ6s8GY7kQQszB6PR5CAjPH+N+Q1Q75Uqqyj+aqellg7iY0HCe1hHWsjs7a+Gzxs9+PUK+WDUeIZFfeq0XpS3cuNokzDz3fMdzC+Yl90TQu30CkKXEWxMOT5OdrTs/igq+9EM20VdYC3gTckNCuKBtVSrUPZ+O/U28TkTDSS/qcL7R3eQyr94Voyh+UhyQmevxTc9eZQD4J9Gd9Q8npaNXmR4NtRy1XaGyKiAE3MbPWxgCdw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc9123d9-9129-478a-fd32-08dbf53da8e5 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 02:55:38.1334 (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: 19VRz1mLuxtaQJO1a6re5RGIcGwTUQsmgziufnJkFV7Jhu3RRDh09f3Rc/5DG9ZRL06MBl9M6f7hzVFjSOE9+olr+Us/TQWwTZ2tGRnt0os= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4439 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 --- doc/guides/nics/features/nfp.ini | 1 + drivers/net/nfp/nfp_net_flow.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index 248fd34a39..df1d403c6e 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -54,6 +54,7 @@ of_pop_vlan = Y of_push_vlan = Y of_set_vlan_pcp = Y of_set_vlan_vid = Y +queue = Y raw_decap = Y raw_encap = Y represented_port = Y diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index 71f126156e..98e8499756 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -562,6 +562,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) @@ -578,6 +592,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;