From patchwork Tue Oct 24 02:28:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133206 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 AB6A2431EB; Tue, 24 Oct 2023 04:29:46 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F0A04402E6; Tue, 24 Oct 2023 04:29:43 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2093.outbound.protection.outlook.com [40.107.95.93]) by mails.dpdk.org (Postfix) with ESMTP id E2E39402CE for ; Tue, 24 Oct 2023 04:29:40 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BDAdLK6mPGQ0fUmI3aFLjMA/ZPGRcsi+4MoUw3rIiUaYZPvZs8J6QDYDJcNhH9t3OgpkQL9TlR6gdD+0lhkbQZGCvM6fjleCd8vnLaEiajZdc/XQh9eMdZVQAdHV8LMz8fV3a/eTWsWXgWix4xw5lI3zRw+qxb2o3xWWFpzoXOgquecUnfM7RJlQZG1nI2xMzXPf/PxVP84BpK6YQwhOny2U5g9fDl5koVXT06SoV/At5fHSTkfu33llxvmRrlyH9Ma8UKq4yhPB2pCJqqoDx+EubQQM6UWyPjV9YjE0U6cE+cDmE+5pcgvr3/IigXKsu/u7fbnV1BZ2b2/47S+YoA== 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=6yl8b7LkGdNSpGGQjmoO9GuDWZG6lEC364BuMuB5GuE=; b=LENDUgEQngbctTKRtEhqy/L5OZEjm7jzjf6i3vRYnJ98US13a3Wmtkd+zzrJ7MLaleC/mzy/THK7xgLNFvnrPMs7HuwKvPj9WA40Uq1oGoGKgznSSl1JDL64bVZ4tIEmONMQbSmLCdKHzl0OE0+3z1x+LjrpDJ80uzRMwkzCRanMfykYZzlxRZ1NdjTshDkZvnA68Xq0XFGI+BvUKZopQgPwZ5DZe3Q/idqE2tNbnciO5u0f4TorYxutVOKc8aL/f00kTEAwEgi27hNArJXIqwS3uxxzw2qjjUWymT5t0kNX/1YJm9Z1cprkj7NumBfgIPe7bbunEAqBCBaP0nxT8w== 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=6yl8b7LkGdNSpGGQjmoO9GuDWZG6lEC364BuMuB5GuE=; b=IoLVJBRZ5OADRLn3lvgKqLizHkoj6Xn0MH6E3b3mBQile5HgTHKvhFBrJWpMzQ7ho8mVJxp7YBpFJRf8lQMmUro2WTW2dm272GZLrgXaCXt39zTaptJvGElCyCYPfZrMKjgW5XsO/WhZ4DmtKbZrqUXp5GRI9ZmneOOb0ud8nUo= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:39 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:38 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 01/25] drivers: introduce the NFP common library Date: Tue, 24 Oct 2023 10:28:25 +0800 Message-Id: <20231024022849.3092506-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 5580c8b5-48db-481b-0c4f-08dbd4391221 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /rhc5eM4KVVnxmOjeEAOKhrlaIfpF0zRsV9G0CS89UUpeEsURSqFKw17AWK2b6c+0pfoTW1pWkSG+IdRc/CUiErZkkBvf30oprR4Rw69e4KK6uxIPBNsXdBF9Syenrtc7+oMe5goVkvIl5QnRGtr0MZBdGE/cgultY1158PpeHD7kp+mrQE+0h0hASMQBhrBxZepRebxTpqFrcXZMZy/gZQkIPzyUK0UEA4vAh1t5Z7RHbHT/BmH0Vp6dIhIFQ870sALYyaAcW40tiCMJiMv2rYam6IOZQwjn4msiFkhH0rYvAKIIWDUHwy35Ob/PS0G/y1zRC1Jv4HIfjscP9lzH5y5ZvnOGHioE6G4rQFwGyehA6pAWxoQ9RCdKt+PLnEdrANYsLZm/6d8W/6OcTtAtgvjKpO3YngjDZ6SpcOnT2ucWmahWdIQHRbUt7cBCLwAgV7hS7OcxZ7czWgvMQitUSpdCzn0q29WzsBKfmCbYOmzC5/0G2JLApNevmVM3DF6P9m//QqB9fzXk0UNS6yOO2hTE9jYFjnyeQEhKHHsVEY31bwqFG09gNFSIqQ+2cpTCyjeyrLZ/T0Ka2ybdGWp78hL0jaUXZYdKzHEGOTNb2InuR68tc7joVYUjxCRZW1BlD+BeTi8eNUo2fXkqDJyNlcRhUichD5ZGP8h0YhW8PM= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xFUr0utE8l/3Zxe1ITrdLpk8DXpCLZYpfVrm6XKH58ysUAT29/qXNDeQsApkM85NP76++pVG84R1uyTBfDvo/tFKZbJfVANvQ1BJW/4rU3eHP3IKQBh6l4yfYqFbodUI0Zf0wsSQ9NmikzRvJ45HoxZlmzBii0FRznP58ehvTP9AKSuu6RzMVr4/zziUzoRZeB2pVinMRl0R+ZFBtrFsZB5pUsuKnGPekwuWmCqUu6RhNbiyZtx3pzHu93DRAt4gdr5a74F/ZN+RjOpjt6PjBIpifR619DTbig0dHESSF7ZxwBknQQak4w/94mHWiEOUBV4BbUVumCg3qRL7WQJMTJl5froin5Ujv9Q6LX/ZSW6QNeSzwZACJInoe05jw1DEXFrAw7B3NzoQXc+jDwWxVFhj4FF1s83uBf0TXGT5vN5je5dRJwH0OaBGlx4hp4yXFUCqNTI9VBM9Np5q8W4F16UNbB9oIqOI8K7lZtYOQGsTbecqyE4bj46ZOEj+cBZU7ZrrlGbVmmGCavMsx+6yOKSi6SQKMlk87gAJxaFWQW8jIMBMbWQdk+5gW2xCe6RnYrx4epx9uROdRV2cOF+sSUaXDdLzQBl41VPoQ9wTukWrgZpXwUX1Krb4VIed81/zrdbSC40EonXvanzbcYqt5UYZ0IJA2n9DvotcsBq0SJEw/of6+ZBad6pPFWw5ACkutUqpqAAwFDcsJqcshBtRT7huK8QL4PtAC1KB9SV2S24cpwIgFXjHhr7pMa8N3xB5bSn4CxvZq6QulPF5fDh82jjXkiAo1oRmiQNNWSiIgS2CCrC06vWfJ22G5f996kUxI3GDujh0kPXyQmwXFZN9vNSgcW8EMAY84ycA07lqPFeeEyCr3L17P72FID8c9nLTy9lg4nc1KUZuZKe+ERUqx4iRqS6v3e61yYri7sPjAZPqGcupEOlCfhJs97g2a20d5s9GoBUsp5LV5ZALpk7cYrRnAkHST53B6OCkGhec/l/2cfRiiKdte9kytPN82LPz01qUuX5DbKS5s6y866W4Q4ZMh/cozTDKGES4ClWiBB/6PdCNiGLP4/V99qU36MRKNjTKf03u/OMRQxwHp4l0fcnuXdJ5Oa2FWs8E8366gbZVwiP8UeaiR+qLg7uvCNbgsqcoqiypn3er7VEcRyqXVS3Qe3JPPeplAGwQ+oVG9AI4+PoJBkvhuQx4Wb55G58ygnKlJS91ERPDrWGZbuD1qZPMocGrj0zdQ2/ybRkV0zy2IIyiZnF6X4Wmo2POC5MVcGYnkzun9wMHc/I86TRRP9b4gTfbBBTG/d3j/TRiVHgaHuh2LTCfoZjtI1rFjx8S4imVKiJ5VL/LW7mtn9aSkOpdJo1A/wcT/0OlFhFIhZcKfiwGxZyZwI7en0vWtDsZWsKrKJsbkNEJqohJuyrR3x7a/eY0ZvCpAIrl8IeLVkt7IeaJfC12t6MW+kG0GZ3R2yWRg+f9+fz8dQSgdTyE9XLbYDNapXg+aPWJmANZv6Amv4ggPQ9zS3KFjkPHnfO46VOXTFZQf3pWkf6O9IA4rdBZR7pHSfqBTRuaE6r3n5NPUhxvJUGn7UoGLvGtnTiGODBwLbXmjGNHGvujA5dZVQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5580c8b5-48db-481b-0c4f-08dbd4391221 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:38.8686 (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: XVJeBlOLy7RDYc4Y/sRIfPUytgGOY2b1YqBZ+GCZGA3eJYSOC8xjYmOu3Dw18FrHPutJBy3pH7bmrKFL99HmBLr/keX0aAF+vzjZNytyqOQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 A new NFP vdpa PMD will be added to support vdpa operations by NFP adapters. This vdpa PMD share some logic with the net/nfp PMD. So create a new common library in drivers/common for NFP PMDs. We import a 'nfp_class_driver' layer and which can support various device type in addition to the ethernet device. The shared logic will move into this common library in the following commits. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- .mailmap | 1 + drivers/common/nfp/meson.build | 14 ++ drivers/common/nfp/nfp_common_log.c | 8 + drivers/common/nfp/nfp_common_log.h | 16 ++ drivers/common/nfp/nfp_common_pci.c | 274 ++++++++++++++++++++++++++++ drivers/common/nfp/nfp_common_pci.h | 44 +++++ drivers/common/nfp/version.map | 7 + drivers/meson.build | 1 + 8 files changed, 365 insertions(+) create mode 100644 drivers/common/nfp/meson.build create mode 100644 drivers/common/nfp/nfp_common_log.c create mode 100644 drivers/common/nfp/nfp_common_log.h create mode 100644 drivers/common/nfp/nfp_common_pci.c create mode 100644 drivers/common/nfp/nfp_common_pci.h create mode 100644 drivers/common/nfp/version.map diff --git a/.mailmap b/.mailmap index 3f5bab26a8..9d9e015607 100644 --- a/.mailmap +++ b/.mailmap @@ -1299,6 +1299,7 @@ Shuanglin Wang Shuki Katzenelson Shun Hao Shu Shen +Shujing Dong Shweta Choudaha Shyam Kumar Shrivastav Shy Shyman diff --git a/drivers/common/nfp/meson.build b/drivers/common/nfp/meson.build new file mode 100644 index 0000000000..45871dfe35 --- /dev/null +++ b/drivers/common/nfp/meson.build @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Corigine, Inc. + +if not is_linux or not dpdk_conf.get('RTE_ARCH_64') + build = false + reason = 'only supported on 64-bit Linux' +endif + +deps += ['bus_pci'] + +sources = files( + 'nfp_common_log.c', + 'nfp_common_pci.c', +) diff --git a/drivers/common/nfp/nfp_common_log.c b/drivers/common/nfp/nfp_common_log.c new file mode 100644 index 0000000000..e69e608eb9 --- /dev/null +++ b/drivers/common/nfp/nfp_common_log.c @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_common_log.h" + +RTE_LOG_REGISTER_SUFFIX(nfp_logtype_common, common, NOTICE); diff --git a/drivers/common/nfp/nfp_common_log.h b/drivers/common/nfp/nfp_common_log.h new file mode 100644 index 0000000000..066e38e688 --- /dev/null +++ b/drivers/common/nfp/nfp_common_log.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_COMMON_LOG_H__ +#define __NFP_COMMON_LOG_H__ + +#include + +extern int nfp_logtype_common; +#define PMD_DRV_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, nfp_logtype_common, \ + "%s(): " fmt "\n", __func__, ## args) + +#endif/* __NFP_COMMON_LOG_H__ */ diff --git a/drivers/common/nfp/nfp_common_pci.c b/drivers/common/nfp/nfp_common_pci.c new file mode 100644 index 0000000000..1aa8dd4bbd --- /dev/null +++ b/drivers/common/nfp/nfp_common_pci.c @@ -0,0 +1,274 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_common_pci.h" + +#include + +#include +#include +#include + +#include "nfp_common_log.h" + +/* Reported driver name. */ +#define NFP_PCI_DRIVER_NAME "nfp_common_pci" + +static struct rte_pci_driver nfp_common_pci_driver; + +/* PCI ID table is build dynamically based on registered nfp drivers. */ +static struct rte_pci_id *nfp_pci_id_table; + +/* Head of list of drivers. */ +static TAILQ_HEAD(nfp_drivers, nfp_class_driver) nfp_drivers_list = + TAILQ_HEAD_INITIALIZER(nfp_drivers_list); + +static bool nfp_common_initialized; + +static const struct { + const char *name; + enum nfp_class drv_class; +} nfp_classes[] = { + { .name = "eth", .drv_class = NFP_CLASS_ETH }, +}; + +static enum nfp_class +nfp_class_name_to_value(const char *class_name) +{ + uint32_t i; + + for (i = 0; i < RTE_DIM(nfp_classes); i++) { + if (strcmp(class_name, nfp_classes[i].name) == 0) + return nfp_classes[i].drv_class; + } + + return NFP_CLASS_INVALID; +} + +static uint32_t +nfp_pci_id_table_size_get(const struct rte_pci_id *id_table) +{ + uint32_t table_size; + + if (id_table == NULL) + return 0; + + for (table_size = 0; id_table->vendor_id != 0; id_table++) + table_size++; + + return table_size; +} + +static bool +nfp_pci_id_exists(const struct rte_pci_id *id, + const struct rte_pci_id *table, + uint32_t next_idx) +{ + uint32_t i; + + if (next_idx == 0) + return false; + + for (i = 0; i < next_idx; i++) { + if (id->device_id == table[i].device_id && + id->vendor_id == table[i].vendor_id && + id->subsystem_vendor_id == table[i].subsystem_vendor_id && + id->subsystem_device_id == table[i].subsystem_device_id) + return true; + } + + return false; +} + +static void +nfp_pci_id_insert(struct rte_pci_id *new_table, + uint32_t *next_idx, + const struct rte_pci_id *id_table) +{ + if (id_table == NULL) + return; + + /* Add non duplicate entries to new table. */ + for (; id_table->vendor_id != 0; id_table++) { + if (!nfp_pci_id_exists(id_table, new_table, *next_idx)) { + new_table[*next_idx] = *id_table; + (*next_idx)++; + } + } +} + +static int +nfp_pci_id_table_update(const struct rte_pci_id *driver_id_table) +{ + uint32_t i = 0; + uint32_t num_ids = 0; + struct rte_pci_id *old_table; + const struct rte_pci_id *id_iter; + struct rte_pci_id *updated_table; + + old_table = nfp_pci_id_table; + if (old_table != NULL) + num_ids = nfp_pci_id_table_size_get(old_table); + num_ids += nfp_pci_id_table_size_get(driver_id_table); + + /* Increase size by one for the termination entry of vendor_id = 0. */ + num_ids += 1; + updated_table = calloc(num_ids, sizeof(struct rte_pci_id)); + if (updated_table == NULL) + return -ENOMEM; + + if (old_table == NULL) { + /* Copy the first driver's ID table. */ + for (id_iter = driver_id_table; id_iter[i].vendor_id != 0; i++) + updated_table[i] = id_iter[i]; + } else { + /* First copy existing table entries. */ + for (id_iter = old_table; id_iter[i].vendor_id != 0; i++) + updated_table[i] = id_iter[i]; + /* New id to be added at the end of current ID table. */ + nfp_pci_id_insert(updated_table, &i, driver_id_table); + + free(old_table); + } + + /* Terminate table with empty entry. */ + updated_table[i].vendor_id = 0; + nfp_pci_id_table = updated_table; + nfp_common_pci_driver.id_table = nfp_pci_id_table; + + return 0; +} + +static int +nfp_kvarg_dev_class_handler(__rte_unused const char *key, + const char *class_str, + void *opaque) +{ + enum nfp_class *dev_class = opaque; + + if (class_str == NULL) + return *dev_class; + + *dev_class = nfp_class_name_to_value(class_str); + + return 0; +} + +static enum nfp_class +nfp_parse_class_options(const struct rte_devargs *devargs) +{ + struct rte_kvargs *kvargs; + enum nfp_class dev_class = NFP_CLASS_ETH; + + if (devargs == NULL) + return dev_class; + + kvargs = rte_kvargs_parse(devargs->args, NULL); + if (kvargs == NULL) + return dev_class; + + if (rte_kvargs_count(kvargs, RTE_DEVARGS_KEY_CLASS) != 0) { + rte_kvargs_process(kvargs, RTE_DEVARGS_KEY_CLASS, + nfp_kvarg_dev_class_handler, &dev_class); + } + + rte_kvargs_free(kvargs); + + return dev_class; +} + +static int +nfp_drivers_probe(struct rte_pci_device *pci_dev, + enum nfp_class class) +{ + int32_t ret = 0; + struct nfp_class_driver *driver; + + TAILQ_FOREACH(driver, &nfp_drivers_list, next) { + if ((driver->drv_class & class) == 0) + continue; + + ret = driver->probe(pci_dev); + if (ret < 0) { + PMD_DRV_LOG(ERR, "Failed to load driver %s", driver->name); + return ret; + } + } + + return 0; +} + +static int +nfp_common_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, + struct rte_pci_device *pci_dev) +{ + enum nfp_class class; + struct rte_device *eal_dev = &pci_dev->device; + + PMD_DRV_LOG(INFO, "probe device %s.", eal_dev->name); + + class = nfp_parse_class_options(eal_dev->devargs); + if (class == NFP_CLASS_INVALID) { + PMD_DRV_LOG(ERR, "Unsupported nfp class type: %s", + eal_dev->devargs->args); + return -ENOTSUP; + } + + return nfp_drivers_probe(pci_dev, class); +} + +static int +nfp_common_pci_remove(__rte_unused struct rte_pci_device *pci_dev) +{ + return 0; +} + +static struct rte_pci_driver nfp_common_pci_driver = { + .driver = { + .name = NFP_PCI_DRIVER_NAME, + }, + .probe = nfp_common_pci_probe, + .remove = nfp_common_pci_remove, +}; + +static void +nfp_common_init(void) +{ + const struct rte_pci_id empty_table[] = { + { + .vendor_id = 0 + }, + }; + + if (nfp_common_initialized) + return; + + /* + * All the constructor of NFP PMDs run at same priority. So any of the PMD + * including this one can register the PCI table first. If any other + * PMD(s) have registered the PCI ID table, no need to register an empty + * default one. + */ + if (nfp_pci_id_table == NULL && nfp_pci_id_table_update(empty_table) != 0) + return; + + rte_pci_register(&nfp_common_pci_driver); + nfp_common_initialized = true; +} + +void +nfp_class_driver_register(struct nfp_class_driver *driver) +{ + nfp_common_init(); + + if (driver->id_table != NULL) { + if (nfp_pci_id_table_update(driver->id_table) != 0) + return; + } + + nfp_common_pci_driver.drv_flags |= driver->drv_flags; + + TAILQ_INSERT_TAIL(&nfp_drivers_list, driver, next); +} diff --git a/drivers/common/nfp/nfp_common_pci.h b/drivers/common/nfp/nfp_common_pci.h new file mode 100644 index 0000000000..21465fca68 --- /dev/null +++ b/drivers/common/nfp/nfp_common_pci.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_COMMON_PCI_H__ +#define __NFP_COMMON_PCI_H__ + +#include + +/* Initialization function for the driver called during device probing. */ +typedef int (nfp_class_driver_probe_t)(struct rte_pci_device *dev); + +/* Uninitialization function for the driver called during hot-unplugging. */ +typedef int (nfp_class_driver_remove_t)(struct rte_pci_device *dev); + +enum nfp_class { + NFP_CLASS_ETH, + NFP_CLASS_INVALID, +}; + +/* Describing a nfp common class driver. */ +struct nfp_class_driver { + TAILQ_ENTRY(nfp_class_driver) next; + enum nfp_class drv_class; /**< Class of this driver. */ + const char *name; /**< Driver name. */ + const struct rte_pci_id *id_table; /**< ID table, NULL terminated. */ + uint32_t drv_flags; /**< Flags RTE_PCI_DRV_*. */ + nfp_class_driver_probe_t *probe; /**< Device probe function. */ + nfp_class_driver_remove_t *remove; /**< Device remove function. */ +}; + +/** + * Register a nfp device driver. + * + * @param driver + * A pointer to a nfp_driver structure describing the driver + * to be registered. + */ +__rte_internal +void +nfp_class_driver_register(struct nfp_class_driver *driver); + +#endif /* __NFP_COMMON_PCI_H__ */ diff --git a/drivers/common/nfp/version.map b/drivers/common/nfp/version.map new file mode 100644 index 0000000000..25e48c39d6 --- /dev/null +++ b/drivers/common/nfp/version.map @@ -0,0 +1,7 @@ +INTERNAL { + global: + + nfp_class_driver_register; + + local: *; +}; diff --git a/drivers/meson.build b/drivers/meson.build index 8c775bbe62..af70ed322c 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -15,6 +15,7 @@ subdirs = [ 'common/mlx5', # depends on bus. 'common/qat', # depends on bus. 'common/sfc_efx', # depends on bus. + 'common/nfp', # depends on bus. 'mempool', # depends on common and bus. 'dma', # depends on common and bus. 'net', # depends on common, bus, mempool From patchwork Tue Oct 24 02:28:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133207 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 DF2E8431EB; Tue, 24 Oct 2023 04:29:53 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 636F9406BC; Tue, 24 Oct 2023 04:29:45 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2115.outbound.protection.outlook.com [40.107.95.115]) by mails.dpdk.org (Postfix) with ESMTP id 9D48A402E1 for ; Tue, 24 Oct 2023 04:29:42 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NFiD1qzV4ePHLDQne9lranld0ZDf9j3LoRXvBRXSap6lpzlGdywC6OhvpWmRKaVYH9DYkRB0hx7NnguL/VOKi2NVVxVxET1j960Qd31HLrrheDFyDToTGGs0Q5iOIAGCZnmfRopbZlHnQo84xUxNUWhUZHanujPUJqyj/PrTLrMCyKyDYJWM1HDaKG8UueeyM/TswCrMtJSNemATITJi0Xfvm4wz/cHvr+ZuRb41hhStWXyOc81aSDU5/XaHVyV0fmHHkyPWl2mH0oFCQlGtqjNdV6xcDNKL3gbaRwcXkhyToajQ/HqDcK2FdpH7SuTFGRcbxuyI6BAQwYbg03widA== 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=1c5Wjtn2y4rsZ1S5MGhMj4i/iES/a1veJobXvPzui6c=; b=RKlLn0dayL19PSyHSLs5d1sLBz/qII9IyIYWofUGUte55/br3xCbzZKELwKkwsLkZXHJWRpfDzmMA93JnufdYBdGeYxeRyIe1IZDIHlv1MMdkH+xJ3UkSEAYfID1yDyQJN9KxH8gXaa1aHqyoHmwAw7Cw9FTHQyX6ayX60s4lj2mUbMqUig72auJsrvyqfxiPH++sdYCpbLS8d5U+uISt7BnFYVOg/GS4teeV2OThIQjRvdLG5y7OEaZ0XkzY7KD1VXKuCRnVZDw7NEo1lNYBhXeUJ2IdLZvtrXAaKflrhT1b9XL1trLheAXafaCWa0rnEpy3frqbbVgKoco3Qpw5A== 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=1c5Wjtn2y4rsZ1S5MGhMj4i/iES/a1veJobXvPzui6c=; b=uwmLpiMiKOgor23IIyRQFuMWxrN7cR2n6nNbRd1ynjCuAfQlWc9tTKxZ38e0W5UtUGQAeEwni1Nn0a9lvweLBGBv6n75K4C9MolpxXdGBA8zAp9XqYpmYUz/rPgy08UyU9x6TlSWW5KG6GW/v1nruTZvk0ogQXYt4Fq3CJIb67k= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:41 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:40 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 02/25] net/nfp: make VF PMD using of NFP common module Date: Tue, 24 Oct 2023 10:28:26 +0800 Message-Id: <20231024022849.3092506-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 3cdee279-14ae-4663-87b7-08dbd4391360 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bRlyfwi/s2tRM2NiEFABgK7NfHjK8CDdF965p1PJwHvYSGEx49ZMQppSaeWXdZw9TUX2KOAzIhaP1aPpr5q1mYTtblKIncGO87uVdDZ+aH8rbmoYmZP1qMrRCwx03ekI5NraHlqvKvFM4ti52qVVxtcVwFk8s9CesRWhbIw6jgLrCpYhuIjSkoMd//zwLdxb+GP2Z1Fbm2zsyKmrZOKAjUUL4BloByTpRTdiY6Eib/ZJ32fc9PyQzYXlsKouwpgaec9Vz9yrV+3PqOMNELQXC6D9EwradX014ooRojFADedUtDl1X82XJYRXuBZMIUOmzM/sLJ7m+UsGzzagqgdGe+bXGnUjgTa16Oc5b5EW0r6ytTVD/eYjC5PrxCcq4QFGIbrhqijdX6i0Qs2Dw/BJOBSJOJBlW8LKlNuZM9xA5v8Bk2K5bjhiYD1fgOyp23cwq8GGGEYtOV9ipUqduKmdliMo7PzQMUx+FYOfwDa+Lgdtw90pcTIsw0fW/vZk6HoySBTKeG2JwWEbYKnWoeyKiY0T2e/I/6f2XzOEBS9rvvQ90MXSaX0GLAcR9wF4Yy76TPdlIWUhsjH0J72599TY5atcIWwyNTXzCjTSMXRsWHoE3m/c4va2CNGj5a+I4U2UIaRzH9RoDilL60mAqCGlWUVsPkuqxdvrKbXBbqvYpQ8= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /reyTHvgarhTPZshEeQEGUDJorlnuULtIAmuLH39sB/onqqKKA8Ils1IpaHXITejXBXo3nYjEJdkw17HzMb120JQIiYULgPLj7HcaW49wqBNxu3EabED36q8RX6pohx5XHCP14kNd0WvavRrRWvAB720K+Gy8Fb6EZ9fx0SfEl0unQbXCqe/RtMsQobJOzLeLXZUPxI+bjzr5XeDuh9nFff2/eqVV6unY1sCSmZmK5qganAUq+3MLqySEXToxjl9QkfCfxIJvSJfq+0yj3mgmmRrUwU11wytq18t1s4FFCYYb1KAuyDAGAGQh0v0x8TE99W5+6ZGcfwBbYXutM1CAJPw+tdNRsGIXOx9YAy73Ak4u9j3ZTvV+T966m5ICfsL66wjKWXtUQHhgbkeIecaRxFDJ6AVd5UpoyLSLwHnj4/vLjuFLzb307NEeD8TYC9FNpUbQ3DcPnVj612KNQt7oB4zDU21Gi8UCPsfS4kSJqKDxUUFeA6XvQZFsAZ1Wgo/eFvXD8e1UFCC+CJt8v2GP9B1+WEsN0ieDuOiKJeHT9lP+Hekni5xncIxcC7BSwmmu45ina37PVjcAhaCMngBV2vRUTTPkTHP6yavEzBZvd3Jb+BDQWebdYYOBcNr67PMusuON3Ld7snQxzQJ8xQrJF39BPEPRpg4E/XEh6zzD0i4qC62B0xEogeI3BheBz98hwvjvkQZ92Pa1g+LhXnlodGC3UD99hKsfhS51rUxcjkKBg9g+wCWoZMT0xS1ErwRmazzC7qp+elksmzg5Vcme8dovbyLop1ep3rY+yja00MGCwcTgASxptUrikKCNDYOStbw+l0yM0meP1BoWxh94Ych4oINFgZ/WpfKPriOzmzsowj8ryFK6x8u0gx9DZtD4l2FpRtPjOMlxT1ShPHhEDu5iVDTGUcaxoqlS6dEBOKEKjvDND2lg+9JnzhFm+WiO9v6QhfLV3bvsef6MNWrvQ421jgHAeeqqa+3JPqhY97NERwfv+AFE7F+at9KEV1HugxfUahRR95zeNGCkmQYUzS3UWMnFM/6zbEaFBLPfl0vS7k/3sPIAbaC/kZ1osC+BHpqDPwBsETaVw7mW/vsj2+sCAomW2IHfle5StuNLFLYTUVF2P+VMtvVU/9suqT5Y+qRzFdF4BDd3i03rEGujepjy6NZtn4UUS9rCXaMFS9Ob3wF+UqduFif6bhz+UDRA2QCx+/Jo8WK0e0mnQr2Fy345NeCfjeibPqMFxtmSRcijMGun18/7b3P4q537CCdmh9APP3ac6CAP6tfnNqd0qm6+4YE1uiW0UXdwHxq/PIzFkgjlkvXKRLCzJHUxA8wUFpdm5BfGE8/MY3am6IOW9s5rX88mSIoTpLpAY+OlN0oKWUSpA0v4NCg+i7JN7EfcLNjHZEnnZ50OTvUTzFdIxqNjmytzZ3tehXCTYBKPYVb/UvRZNQ36Oa71z9yk9aRb4w27APUAoyQRUV302etvzFwi7uPCpTU417n6v+r5pHP/URn5ptGDaZTWKc1dQAboP7Vma/BgXC1M/vEy9jztQHFpH0xKzIL5HTbTmf7pV21zbEsNAM3ULiwfBYKQsxRXKtNidYfepRx3/jAzcaB/g== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3cdee279-14ae-4663-87b7-08dbd4391360 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:40.9459 (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: rISLgHzPch5lk+P4QvbcMwUUgvExhnbkywfqUNarRbd8UczXW9mGtuaCB/mmmbgpNR8ffpHfN0ffodUi8QaMGvKwq0iMPz+/2lpEsftQyOQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 Modify the logic of NFP VF PMD, make it using of the NFP common module and link into the 'nfp_drivers_list'. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/meson.build | 6 +++++- drivers/net/nfp/nfp_ethdev_vf.c | 14 ++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 40e9ef8524..f8581403fa 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -40,4 +40,8 @@ sources = files( 'nfp_rxtx.c', ) -deps += ['hash', 'security'] +deps += ['hash', 'security', 'common_nfp'] + +if not dpdk_conf.has('RTE_COMMON_NFP') + error('Missing internal dependency "common/nfp"') +endif diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 3db35b90e8..b9d7a7c5c0 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -6,6 +6,7 @@ */ #include +#include #include "nfd3/nfp_nfd3.h" #include "nfdk/nfp_nfdk.h" @@ -399,8 +400,7 @@ nfp_vf_pci_uninit(struct rte_eth_dev *eth_dev) } static int -nfp_vf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, - struct rte_pci_device *pci_dev) +nfp_vf_pci_probe(struct rte_pci_device *pci_dev) { return rte_eth_dev_pci_generic_probe(pci_dev, sizeof(struct nfp_net_adapter), nfp_netvf_init); @@ -412,13 +412,19 @@ nfp_vf_pci_remove(struct rte_pci_device *pci_dev) return rte_eth_dev_pci_generic_remove(pci_dev, nfp_vf_pci_uninit); } -static struct rte_pci_driver rte_nfp_net_vf_pmd = { +static struct nfp_class_driver rte_nfp_net_vf_pmd = { + .drv_class = NFP_CLASS_ETH, + .name = RTE_STR(net_nfp_vf), .id_table = pci_id_nfp_vf_net_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, .probe = nfp_vf_pci_probe, .remove = nfp_vf_pci_remove, }; -RTE_PMD_REGISTER_PCI(net_nfp_vf, rte_nfp_net_vf_pmd); +RTE_INIT(rte_nfp_vf_pmd_init) +{ + nfp_class_driver_register(&rte_nfp_net_vf_pmd); +} + RTE_PMD_REGISTER_PCI_TABLE(net_nfp_vf, pci_id_nfp_vf_net_map); RTE_PMD_REGISTER_KMOD_DEP(net_nfp_vf, "* igb_uio | uio_pci_generic | vfio"); From patchwork Tue Oct 24 02:28:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133208 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 DACE2431EB; Tue, 24 Oct 2023 04:30:02 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C72E440DFB; Tue, 24 Oct 2023 04:29:47 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2094.outbound.protection.outlook.com [40.107.93.94]) by mails.dpdk.org (Postfix) with ESMTP id AE0364014F for ; Tue, 24 Oct 2023 04:29:44 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XgdxTHjRVAvv1zyxGtchAAtOikprayp4iu2XN9f5e8zPcr/AVIxm8HxFZOa2L9yARRsGJEx8Q8MJgLx6kA7nzJjUCQrVs53kwb/P7bTtESF5bucZtzyv3GDEOBK3YOT2avfNNtTg4R8jv9xfkipXYCuzNo+ipIHqwYWjDfrCPQ+tJRJ7i2ZevcBeeCXYgsZzz6XT0UnsNmkmnX/h8Rcab5jhE8XF+qYB1lRYzL8AzXaVq2+AxYSgwlfVccCQ7An1drM55S/Ij31suqogbAikRXwYcEXI8Qaq45Lo6yDlZ1I1vgjuwyAryKgb0a/ckxmnEYDju1E9Y83OWPJaFt9wng== 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=aRnoc5wP5+BGmoVJxSkWB1DrWqm4OiuS2L2n6/bpjzQ=; b=Fe7sTW0j8yJolIpVi3hHs4/PMXJ/Nkq6mMWkhJh4P+CzAhinh4L/OvofPI1gOQOe+7uJP6bpeyz5XYzaJVT6/kKBZBBXbPzArnjIqvLRBH5rL7/Z4FaJx3X+cFSIkrBA5EjOzOi9N9jR7jbYRco67/oC6n9ygDYEjFoQQoBNnEs90jIWsY0wCONhxYIK6B5Vs0TTa3/n6fsHATAQHYV55EacUexREGYG96OF9tSYb7BFqtrAKSq7447piTUttdFjYBW04VZ5IcdWUG12ciQV8qEMhsW0wZUrfX47WSt0vnAKMlDcVdZMjevg0yNuSdm8LqAmKLiDwAj0GqHAHyiuww== 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=aRnoc5wP5+BGmoVJxSkWB1DrWqm4OiuS2L2n6/bpjzQ=; b=BlhN4UehZxXmx67w+PZmSH+2e5w2YsR2gKYmGRCSMIs/9zdCyaI7UpRvHFKvlZqy5OmpzoOVrBGLT5gU0rWUxn67mH2CPsXAzsu4TdR8wzWGMcb6Krkn1jdpTrajdFtygIqEl0I/haBmkNjfb6aPOjSlZ0v2zguQswIekRz+juI= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:42 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:42 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 03/25] net/nfp: rename common module name Date: Tue, 24 Oct 2023 10:28:27 +0800 Message-Id: <20231024022849.3092506-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 66d9d321-3eba-4f4f-42b9-08dbd439147c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pq/ViWLDyrrU8rPcHZysXjGENAUhrfrRG2YYb4+hGZxxObpaChQSswGOvXcUjCInYjticTTf/CCNpnBbLe+0Ss1+UJt+dT5CK0kTPSShKtBqAxXePacyrwnz6QyA1P3TRgUBikjDOXSuBVADtWo8MVbV56wYH6NOOI2v4kCExOTg9+BZv21KLKfdcBeGPv6cT8wvBXurg9y3ABBMw+84dFN40IOw7Sh4zOHIkVG0Pcc4sEuCVvELyWMof1VCz7L6OIH6nIjSWs3DUjMdZXDgs/xz796bGliIHCK4Vo80wVQ6zQDenXyiwI70k7XFqWEo/YpBwz/0blpBFi87pvKhl2qAuVzLUJTpcjhbQYY8A48p8kAuTrU0FyGLpWpPhf3fjeKJFXsJ5LHchRCIr0wEmESwUDkaWvYbfsld7yXloyv1167ppBX4r6ablWPh39m/h11CR+2bakhLm5xJSO7OC9t8hnxI1MNaH26qlrrpPtF8OmDDuxGpYb7XL/SqZDM7C+lzCro4MbSTVpK0/ugNxZ7oaPuo7YC3fgcjFxYufbgainJYVjca30Nr1wvGTR9el2jHXqXrCWemPFSDc6WcgIbMaf6JHT3g5koe0FgdQt7GChJa+GOHQIrvO2aE87KdzR0ZSgYxF9ePxrNfAEbX1lWdxCk93cQpokwggkn4e84= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: o2FT4/ywp1T+/xWrKcyi3YDGaQV14Fn30HmNcHc8NamcOaS1ErVr8gve3PHJjUlZ2dor72Uq0mSsiqfNiY9cKdhhylmbbCqf6N16Orz95ktzoFIF7rvRvrwTMX46y3DrliH08Py0r/3p4PoxZuqd/7mTpskJGRb4d3gje/NPO2Xx4/r0bitjCSKayEy+Lavq9IhAmHHXvpQrrmx2wGVpW/Pw5ZHP7uJjAm0/Bx/0SkOXQBCnMtB1WpgZR3uhsb8NTpPheaKmLHlKWQ+01zVyoe2FwMAMT5EApEdBvTiQ3FJM60Q4zOpm24a7F3KSBxC/rS/SeyVj+ttn6S1BHqULAY2bJ3QRXLX+UWbu4qCpV32nObSQr8lnNFd2UqrHynI5kdNB4izoU1Lxz/s/W7gE8EDnwgsMyHzgGD8ng4M0vOokji6BDgYCja1VhEdlmSSWymcYifP8w3VYQ9zGwhKWwrtMfaJJD+D9u+wQWFfH8Y94MVb98+J1YVhgxiznqxhMB38to5gVLbpa1Sko97HWK9tjA6L9e62m82GURc19UWEwdrwrssN5aiHckd8KKyes1we5dROINzgb6QQ2CuZ8f2VgC8e4ms+DmNsGjwAWygQ5E7PgJlSwDLKm89R2SwXFuCBfI1YWYIODER06FinvszvF0dZi6AWksf0iBRZh8TeAvA1hvFszjgBo97ok6APjScrOQ8k407XpvO3ZK5UQot2WR89zNGj3QyHqATEsxvR3h6D+YOyBlhAa9s2A4Vb8WvYYB5X1dzfHu+QPY+pwi8odVbGUnwmlGaPA7xtnPLQV98L+ZOIPW6N64miGTPEomY1XBfsOKTq5fY9+opNtLNgxbzFPOmiZYKvCi4tIxzGvIOV/R0PxBpUYq5T3TkD4XTXk85xP0+jEGZmAhvHaPAhksHoR+l0PGh4m4aMDhtbCX2qMqupfeWdn3NIf078JyWwXo1sAdM+wXYN2VBqBEuKZNZV0EA0OSNKIHAZKlR91hrhOoVPI+foH7FMohKV9m5Yz9tZqWXxRC2TQbBd9szGnD6HxORNl1ONDo6L7jahoJ6gseCUEifZXwpYawe3QdhhkakYPwsaoODsp3oFvAP1VRr7F4bM5Ty9ULueubkcSZ/BTIvOZeXbuORnlyelBsN0Z6jbn9obymXqbuwwAWktEcn3gSdz57UU/9QVZEbvfOb61+AhHMPZqpyodtQbbJCNag20VtFwsiSTL06fDhgRHCgI5aal9bjcztLWWzg0TiPsmyZ7KHF4LIRo9kwEsjW+vdkdaL2Kx3+q+ddKsVlXWzYWntwLVlWj138wQvNdp0kYtfvqQz7xuOI15nZ+wEz2v1H5J7hw84e3IEmZoyD9Uuz8m6YlgxCcHfpV6jD/1l0mJQbfBkhpgLxBNOCdNiA4oDkiBfEv4GbNAd7yLHN0DZGY1YhX0ySyQCc000yk1uyA31MwoN/sghVV/jBad87tcR6pfLYn2lBf9paXVnB9K5e0gQLAuL7dpuTfeehJm/Z3A18QsAQWDOmSmxNaCUbVrtWX/iMb9rJeCPCeW1M/brpeqdVV+vZsxbvcey6stSBrjtIwsQXUKXasVfQE7wg94siFatimFawhvhnurMQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 66d9d321-3eba-4f4f-42b9-08dbd439147c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:42.7728 (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: 0vvMOz3W1PpZd1A3loZv2LMIpTpz5M+3zEmaLJt3hTno2uzoyy4jtmFy21jtw9Ovuuh9VPvFf+rA5Mexsxi78io9D2SzGX8+uLlARzpCi6I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 the 'nfp_common' module into 'nfp_net_common' module, because which is more suitable and we will add 'nfp_common' module in the 'drivers/common/nfp' directory. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.h | 2 +- drivers/net/nfp/meson.build | 2 +- drivers/net/nfp/nfp_cpp_bridge.h | 2 +- drivers/net/nfp/nfp_ctrl.c | 2 +- drivers/net/nfp/nfp_ethdev_vf.c | 2 +- drivers/net/nfp/nfp_flow.h | 2 +- drivers/net/nfp/nfp_ipsec.c | 2 +- drivers/net/nfp/{nfp_common.c => nfp_net_common.c} | 2 +- drivers/net/nfp/{nfp_common.h => nfp_net_common.h} | 6 +++--- 9 files changed, 11 insertions(+), 11 deletions(-) rename drivers/net/nfp/{nfp_common.c => nfp_net_common.c} (99%) rename drivers/net/nfp/{nfp_common.h => nfp_net_common.h} (99%) diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h index b7ea830209..7d442e3cb2 100644 --- a/drivers/net/nfp/flower/nfp_flower.h +++ b/drivers/net/nfp/flower/nfp_flower.h @@ -6,7 +6,7 @@ #ifndef __NFP_FLOWER_H__ #define __NFP_FLOWER_H__ -#include "../nfp_common.h" +#include "../nfp_net_common.h" /* Extra features bitmap. */ #define NFP_FL_FEATS_GENEVE RTE_BIT64(0) diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index f8581403fa..40748ccc98 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -28,7 +28,6 @@ sources = files( 'nfpcore/nfp_rtsym.c', 'nfpcore/nfp_target.c', 'nfpcore/nfp6000_pcie.c', - 'nfp_common.c', 'nfp_cpp_bridge.c', 'nfp_ctrl.c', 'nfp_ethdev.c', @@ -37,6 +36,7 @@ sources = files( 'nfp_ipsec.c', 'nfp_logs.c', 'nfp_mtr.c', + 'nfp_net_common.c', 'nfp_rxtx.c', ) diff --git a/drivers/net/nfp/nfp_cpp_bridge.h b/drivers/net/nfp/nfp_cpp_bridge.h index a1103e85e4..bf975ce7ba 100644 --- a/drivers/net/nfp/nfp_cpp_bridge.h +++ b/drivers/net/nfp/nfp_cpp_bridge.h @@ -6,7 +6,7 @@ #ifndef __NFP_CPP_BRIDGE_H__ #define __NFP_CPP_BRIDGE_H__ -#include "nfp_common.h" +#include "nfp_net_common.h" int nfp_enable_cpp_service(struct nfp_pf_dev *pf_dev); int nfp_map_service(uint32_t service_id); diff --git a/drivers/net/nfp/nfp_ctrl.c b/drivers/net/nfp/nfp_ctrl.c index 6fc8cffd2e..a95e35c9a5 100644 --- a/drivers/net/nfp/nfp_ctrl.c +++ b/drivers/net/nfp/nfp_ctrl.c @@ -9,8 +9,8 @@ #include "nfpcore/nfp_platform.h" -#include "nfp_common.h" #include "nfp_logs.h" +#include "nfp_net_common.h" static void nfp_net_tlv_caps_reset(struct nfp_net_tlv_caps *caps) diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index b9d7a7c5c0..51c474275e 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -12,8 +12,8 @@ #include "nfdk/nfp_nfdk.h" #include "nfpcore/nfp_cpp.h" -#include "nfp_common.h" #include "nfp_logs.h" +#include "nfp_net_common.h" static void nfp_netvf_read_mac(struct nfp_net_hw *hw) diff --git a/drivers/net/nfp/nfp_flow.h b/drivers/net/nfp/nfp_flow.h index aeb24458f3..09e5b30dd8 100644 --- a/drivers/net/nfp/nfp_flow.h +++ b/drivers/net/nfp/nfp_flow.h @@ -6,7 +6,7 @@ #ifndef __NFP_FLOW_H__ #define __NFP_FLOW_H__ -#include "nfp_common.h" +#include "nfp_net_common.h" /* The firmware expects lengths in units of long words */ #define NFP_FL_LW_SIZ 2 diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index a76ba2a91d..f137e4b50c 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -12,9 +12,9 @@ #include #include -#include "nfp_common.h" #include "nfp_ctrl.h" #include "nfp_logs.h" +#include "nfp_net_common.h" #include "nfp_rxtx.h" #define NFP_UDP_ESP_PORT 4500 diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_net_common.c similarity index 99% rename from drivers/net/nfp/nfp_common.c rename to drivers/net/nfp/nfp_net_common.c index 2d4a7635ab..189f81bbb6 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -5,7 +5,7 @@ * Small portions derived from code Copyright(c) 2010-2015 Intel Corporation. */ -#include "nfp_common.h" +#include "nfp_net_common.h" #include diff --git a/drivers/net/nfp/nfp_common.h b/drivers/net/nfp/nfp_net_common.h similarity index 99% rename from drivers/net/nfp/nfp_common.h rename to drivers/net/nfp/nfp_net_common.h index c7f467e33c..cf08df4618 100644 --- a/drivers/net/nfp/nfp_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -3,8 +3,8 @@ * All rights reserved. */ -#ifndef __NFP_COMMON_H__ -#define __NFP_COMMON_H__ +#ifndef __NFP_NET_COMMON_H__ +#define __NFP_NET_COMMON_H__ #include #include @@ -451,4 +451,4 @@ bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version); #define NFP_PRIV_TO_APP_FW_FLOWER(app_fw_priv)\ ((struct nfp_app_fw_flower *)app_fw_priv) -#endif /* __NFP_COMMON_H__ */ +#endif /* __NFP_NET_COMMON_H__ */ From patchwork Tue Oct 24 02:28:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133209 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 6104D431EB; Tue, 24 Oct 2023 04:30:11 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BACB040E78; Tue, 24 Oct 2023 04:29:48 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2102.outbound.protection.outlook.com [40.107.93.102]) by mails.dpdk.org (Postfix) with ESMTP id 3CC3B40A71 for ; Tue, 24 Oct 2023 04:29:46 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L34hZ3pJKtajpN1b8IhhjkKG8znyBmOYUbUnqbCBZbJ/B4u+NFwMY2IWHZchnry238PKZhKK1pYIWbuvSUYGp+0BwksUUznx/6THY8aw5EdbbKRK+KPXeMGx5CYM8qdpm/6GgNjvvzpZmKYEciBsT9Swn/x96RQCdrE3E+05d9g14R8HLUIjB7OTuczMcjV4m9SexIhAiwDYwjtsuMfM1+h3xFLNp2OZqVdttjE5Z5X8zsNHooXUM2KtABUPcptn9kIjI2TABT7Tzre8qN7js4bZm6dHvEiGzFOeGQEgQZPbTGraycEOjP+fnYoUIi7DJ8CIQtzzxQAxh2/N2mp/CA== 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=d4X/lJS4zCHqyYwFQhGJG3ZRKBInquv1bRtjVCTr/40=; b=oR3OXKLRI8yyi6eGUSXAq09WVZ8W106vwFMtJzVL/hxvy03v1M7oW5yqJW+/mBdEw2VuGL01H3wJxzFHALn+3Zik2RH9p7KAyRm5vQmRNrmzKoRhjaAxGTE+9fyEFy04l/VEkCxb5q8GyEYVPw7bNBzZD8pBJmBCRAWm6JUz4OR/K6/UBBqWy5wbKF8C8earrQS9R4upI4MmgEpbSNHrahD6CYM812xuvCWt2J7DT8IoRJn5ioEKz2K61kTHyckzZApLBkP0xoE/DmwQ6siZ6niIPT5zEGHMuZxzqfgKxLbsOhuQaGDV2bz0fESbEBPVY4kjSPQ1WPf7ySwENjg9YQ== 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=d4X/lJS4zCHqyYwFQhGJG3ZRKBInquv1bRtjVCTr/40=; b=jh+pHoDG8yUEd+Z1z7Ivl0MecRDDjf61KL3lPnmshFEjzaxYjznr2qUNQai6i+skDYfPwROxjeGaeM1emTs/6aLywNEsxKLVwV7suZ7wPgmtpyx8IUncUJxywUNqnqQMzk+L6D6QJP+vPDtUO1KW/Du07Lnc3ahPh1Y7IzaZJbY= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:44 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:44 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 04/25] net/nfp: rename ctrl module name Date: Tue, 24 Oct 2023 10:28:28 +0800 Message-Id: <20231024022849.3092506-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 582b6104-7562-4c45-95be-08dbd4391595 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JjmG9VCmA23czEWOjeAbrftg4e9VlBza5HySkkKXUpKzo4rygaKehbikdA+awrBVIrnSBMBC2Rh8uRVSpOvL3p5sO6PR4IcFQvcSFm4NmM1APaIG1ptrt053enzmpkIuVGb9F6hFBmGqzr987kSHSBtVcp2RdrsrhcTEWl8bOlSHCOkBI+RDejSS9Jke7KmlLgiHXBX7ZcIA/Kmx53f0dBdZnh6q5dSOVBQ76RuZowBRQ1SXv6dXDlOiwo4chy6vRM/Gsqupo3RjkBJrb5O45Z3wr6uSI1IZB17wRem+cC0rAzcFjJncRXX+buhowrUuKQ6NXOXu3RSbGv6VmQXewu/m+L+rSCxmOb71XOiVqFiM4k5SSHKgJPLu1FQvHFHC2MvPR8tsjA+LsRGkky5kiF1n1d2TZKjOSFDrd8vSbbEnAnjmMCSguSGPb8o45GFRDNVfF/c/Q/a2NpfNbDJfnuu8LohKAK/aKFFk8rO4YyjsGOewpimBxxk3neWxF075AtWpY6aHJhzXmGqOhwfO/HfOvaQ0KE0JGxQ6ZWXoj1eV7Snr9CbfhJ03KTmJiclsghc29ZFrjdVm+ATXoy4YjlmqddAeXDFpOD3ri5nkGKnEH23sxrZLpq2iLBdU4vO919ieIYpWLccyVnF9HMojtgbEqZUGlRM/ZDriAkTvuzs= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 405//21sFUqOmPfjzLQeezwPpT5lcidjqnqogXNbsLi8vB5Rod9VD+qgQk17cQO3QzUPNY6h/taILbqGM0hwDy5gqJo2HiKzxzPPXuhrhAhfOTJ/porLUemeLitSh6vPk1EwXnmNNkx4NIwoF8OQ4h/9NwqsxoFjAaZbBXdnbsdA/K7WEDhSlpelIv1xNHZlRbRi8u/31lGQ1+ABMMRM2Z7qHvoKNjIIYLTuO6YEGby0Tv30A6Y8uxK3M/faOOPxszqdXnOVkyx+ysiaum4ZM3wHW58mLhUpfflb4IxhDR5EuVEHmREHpRlKPhZRQ42vn2gwGPPXZQ6sWZsc4LgM/8dmyEqpJuuz8AhZOtw3k0Ismp30d7h4GhNVZ3JEBSR+5/vnNrJFNmcwcFA5PsKWunRIAT8dZW3/hPUjydA9MlrT5fBX6ujLHqwJBOeFKL6I3j8V8T0lVRW2ZFO77ylaCpM7pSkzc+5aWf8sCXD8E8Kv/leSevYePPnpk1qRbBM8+x2FsxVdlzyJvchJqVCLEU/BXJLME9SSAcHytXkS+JJHfueV882F3KOnHF55dlnojig+w6VL4toB90OYBnV5nQNrRNkvx3HfTiVqo122Q0A5uq8d214Jw5bdqX05azbRYDB1poqFE1SzLEnPFlUq3eKJBbAa+TyjpQO8JUjHOzI0JBfqVZyKeqC1JBwPcHADZgTfjsuvWNx1eKdivI/UcNBxrIMRumkd61vnbJCnMIdQaWwdPMYkDNh+wNEMn5qUlNDoZwlUL3JQ9YObiPmgNFz5vwWi48xxjGAB9mLa4UHqAO5iihEHHFuirroZdEabwm0EtHOFRVt0JKV1GwZtM8LFuKkUGoP1wfm5Nryoi7xNYE9QMFme0Dmt3XKii1mF5ldU5ziS69unoydLtx53boO5VsTuWIGQPko06tEqAG/xg5DI7LCuEkcj8nvOfSEFZXKvRKhLE38w6oAR7Ph5Tp3t+7t1vDL6g/IzCi2NODTHnsSMDmKy5p/Gh/2flF/W11wkRhp6Tr+1B2qtqWZLXttiQ9MzVHgeXceK+dkZJ38LiqLpOho9W3CGtkRi+3joZ80b15wzjDTCW3PbfYdFQl+G6wtkNSPiKcozL04+nDptfGlPga+klXhALTuSHfu+mauafD7cQ2CasP9YD12J6+o+lXnc1s2tErh2kmtUAyTuNoZ8Czl+4/R40FjFti4poGMjjB10RMWydMPftur/lYUi9OgavqIE8XhapnnGhORjLylnKSsgo1fzgBkbmKrNMZj0Eisql0e2rUVj5XhU/e/XXjPpQbfGW8LwNU/0S4m8P0yhkatTeD8xVpHpcF+sq3GIYC3HoEtZvNi1cXjWAjveNpF3GoZ4qaOtdhWHF/RtjOl5oH991TEoekZfRDYceFGtysPLR6ATV4EeDigICRV4MXR6JqNW86Pb2IPj36VHzqmbC9A5nnjVTFXpok9jueEdqC0qFKQAqd/iT1r+fb84zzxCYNYAbYGgXHGtkjqlP1gsAQ5/LEBFsQJLXEsQEAljN5vpTDywxxVTX2YX+ayPdPCpINoUkxNSBvpcmwQKTKsy8JEq/dwAW0jBE19FdtzpUTPrPG4nN8v7bvUC6Q== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 582b6104-7562-4c45-95be-08dbd4391595 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:44.6178 (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: V1dpT6PlA+dyJHKlreNycxCZsRyz4jv0yO/qA1JxbjlAPsZuqBW7gjLmt/KcZgFvLZqEaLGmake7tRGYbOyxIF9Lnu2jDawRBEu0VbRt4xE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 the 'nfp_ctrl' module into 'nfp_net_ctrl' module, because which is more suitable and we will add 'nfp_common_ctrl' module in the 'drivers/common/nfp' directory. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/meson.build | 2 +- drivers/net/nfp/nfp_ipsec.c | 2 +- drivers/net/nfp/nfp_net_common.h | 2 +- drivers/net/nfp/{nfp_ctrl.c => nfp_net_ctrl.c} | 2 +- drivers/net/nfp/{nfp_ctrl.h => nfp_net_ctrl.h} | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) rename drivers/net/nfp/{nfp_ctrl.c => nfp_net_ctrl.c} (98%) rename drivers/net/nfp/{nfp_ctrl.h => nfp_net_ctrl.h} (99%) diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 40748ccc98..d54dca36e9 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -29,7 +29,6 @@ sources = files( 'nfpcore/nfp_target.c', 'nfpcore/nfp6000_pcie.c', 'nfp_cpp_bridge.c', - 'nfp_ctrl.c', 'nfp_ethdev.c', 'nfp_ethdev_vf.c', 'nfp_flow.c', @@ -37,6 +36,7 @@ sources = files( 'nfp_logs.c', 'nfp_mtr.c', 'nfp_net_common.c', + 'nfp_net_ctrl.c', 'nfp_rxtx.c', ) diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index f137e4b50c..af85e8575c 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -12,9 +12,9 @@ #include #include -#include "nfp_ctrl.h" #include "nfp_logs.h" #include "nfp_net_common.h" +#include "nfp_net_ctrl.h" #include "nfp_rxtx.h" #define NFP_UDP_ESP_PORT 4500 diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index cf08df4618..8a02911c45 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -11,7 +11,7 @@ #include #include -#include "nfp_ctrl.h" +#include "nfp_net_ctrl.h" #include "nfpcore/nfp_dev.h" /* Macros for accessing the Queue Controller Peripheral 'CSRs' */ diff --git a/drivers/net/nfp/nfp_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c similarity index 98% rename from drivers/net/nfp/nfp_ctrl.c rename to drivers/net/nfp/nfp_net_ctrl.c index a95e35c9a5..b0a427c98e 100644 --- a/drivers/net/nfp/nfp_ctrl.c +++ b/drivers/net/nfp/nfp_net_ctrl.c @@ -3,7 +3,7 @@ * All rights reserved. */ -#include "nfp_ctrl.h" +#include "nfp_net_ctrl.h" #include diff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_net_ctrl.h similarity index 99% rename from drivers/net/nfp/nfp_ctrl.h rename to drivers/net/nfp/nfp_net_ctrl.h index 9ec51e0a25..3772b28a66 100644 --- a/drivers/net/nfp/nfp_ctrl.h +++ b/drivers/net/nfp/nfp_net_ctrl.h @@ -3,8 +3,8 @@ * All rights reserved. */ -#ifndef __NFP_CTRL_H__ -#define __NFP_CTRL_H__ +#ifndef __NFP_NET_CTRL_H__ +#define __NFP_NET_CTRL_H__ #include @@ -571,4 +571,4 @@ nfp_net_cfg_ctrl_rss(uint32_t hw_cap) return NFP_NET_CFG_CTRL_RSS; } -#endif /* __NFP_CTRL_H__ */ +#endif /* __NFP_NET_CTRL_H__ */ From patchwork Tue Oct 24 02:28:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133210 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 E45B5431EB; Tue, 24 Oct 2023 04:30:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8395440C35; Tue, 24 Oct 2023 04:29:52 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2133.outbound.protection.outlook.com [40.107.93.133]) by mails.dpdk.org (Postfix) with ESMTP id C8FD140E8A for ; Tue, 24 Oct 2023 04:29:48 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T02VhlZh5S2RFNfY1QavfEGWzWvip8X/7KxxnwlzbZtSdjS0tshVOGuUyKXpD2vtZBNWhxQl45qqhI6REvuCOH8ofWzF0xC0827i8SA6T9Hwlf21qIyrEOM3s+yMBBihvV7tlrdZeyDAdPlGBwce/D7pAUX2pqBg2QsjScgN9SeOXhVG3TCRkBcN1lIitceqeaBvmXP9E04mOqJH7Krj+kqrDFmnC9jMDZ2Bl7VHfD/Yg13bvAMtr8oC2TfYdOxwphPjtzBdMt8pY3F8Xt+v7VEm5lezt+jTVmAdvz8wh5JTWRdBU/zZe53pcX8KYqdCHTicYKuisedoPNZk6JRlLA== 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=3QXwIG/Tzg1MQePm65MtZHJed7p8BFPj4TtvJaABFwI=; b=nnMwXF6Ui2zXcPZozs6X+wtjGVe7iTD5YLU8QrJsZewysKHSlSTQIvRZlEWaYybjno0FKb8gWjPbXd+NncWNlLkEsxWs4+D4VtfKWU1YEkgjak2CXoWIGWH+r65MCXj160xIAnz3wYy+1TbJLSRbrNHmSXhHS0lDNgybOEc3SqwhQiXezMCa/Sp5K9PdhrspNTW/zRS6L9I0I36GMy1YptZVoh2/I88kfv2pnS0GAJ/z5uOhfYlElvQ//8R+SULRFIABIhuhW3XgONZ7DYblFEUuOB+5Ui041AZfFXc9Fmj/8mP5izHsHpyJcxnmp/GyRbJH7EwviNABs/6sE8hQoA== 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=3QXwIG/Tzg1MQePm65MtZHJed7p8BFPj4TtvJaABFwI=; b=aXYgF/z1btG1jmWdKRseyGYVl4e1wfzNlANc+YW7cEBAxqsjFfmE/P1EvXYZ8g0nemNkDtzCG2EOLCMSuMtjoZQXZYrG1VYcBhcvcZ6AYudfrGVzZ5z2EGTMwW2dJJ88hIn8Fm315yJtpDogSKb/XT+KqESr+tlZC5eEqNOusO4= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:46 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:46 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 05/25] net/nfp: extract the cap data field Date: Tue, 24 Oct 2023 10:28:29 +0800 Message-Id: <20231024022849.3092506-6-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f422492-865f-4708-88e9-08dbd43916ac X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: x7Al0gTZY8nlhVc/nhqQ7V9svIm6nttQk1EPPtBDXqPAVeOKOj7MedxWYOEmPGbCSC/IX0892RomPEymvvXHogQ2WSGixFECCA0y5T9NJTeN2VcZNfJ6YghXBNPmFLShIVrLPzfUDh9O37YMFcHFeNvpXRZQ1BYkXO4/a0GIL4llRcEdK++njaCH0gq47oWGy4SLycTBOU5gGQzcr8PoQh/ILrh2yT6OYFi+kmJ6XAOprdhIDwHOYYXWE/CHhdSGvy1nvC24eCdDw3OJE8IdTZrduyh63pmDzX+Visj4MMbw0JcrS4qVHrdGgkDcn7+HVsHQnaU/2wEXAXrU4os3uq5vDtID0/LIcO/SvCOHElFAY0bnxEBo4S6l6u+GxAupNoPd9ATWI0VEkOjga6eWmbh44Rre5XurtU/lOZZBnwueaVJHhsOFSR3pcdA3qc/swu3YgpWu1N8leNdTYySQda/1V4S61hcl6YcdDuESLmNfxC6ZGvCPL2FlGoAaShrflsUadJpheQBX8fD1MNL6hlFWgqHJmdU3yWq+hydy2WADbtaBlqajx4h2ARmx2bUriuUFJcSRhwR5DgQzZCDBH9dyDzy2YYm8k8C4c8tR2v0/edo4reCA8KhJZklpsmdaOqoTKeivYdy8kNbRrKlOOhYt1G6XQeZObthPNKu7+a4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZKFbrXpwyK/PZgE1hK6AjfUKz/1WNtN0rehUEmJs+jWDuT+G5cTkrOJf+GA/c4uOonA+/azfeBLhMXjHo6jLmNYhRTy+IJL2gvZVpdlol+2QphfBg3hHcyAaHnrHPnY3gto8HN+eeRcg13B4X3AQaPAM1U0L+OV7FYgchdETXJePjQGh3kmmY10tH/DJu96rgnwsqySje5sG5bEB2bJeBTGYbHpU0ZacVmk5L90k0MrtpUkXVmV1eTdXdu0qfxGugBtbueXtsIbRr3GY3WTlZ857SLMnxlMCakdIdCfi8Y0uF4oxxOAwVrrjOzWIWRxneb6ou6L2lpwX9rujRjyUEtIIwH4A2dDB8Vovf5LGFdnQ4X6LjPlr3zG04Ch3A8xMsCswtQGUzqMc/trrYGwB4EdLXK3yqDB4Sdu9omL6ESejsVfIVw6HTQRCX94M8RJdPGqYdMjU+szaQQGXGKIm+ItvKXISw+yUx1SVMjxRjMli1ko1WmUl/oA1jPrE3vNqZBQNaKMO5LYGPo8Ze3XxjUE+9ZeILV3Al8YfolXNKPK7dSAU8xWjj2428OJA7NSreediH4MGtCljcnXaFjJs4ridajUFD5rbz0Yg03BIusv7+d2KDxHgN56aoc1c1VYIMwWt7WD+QFciMwN/yzzHevDqjeNKzmI6QEdvvyNxKCMGHe7AysSxo4fEtiSEDwcjFaL6v82l5/n6xTITFbb6+0hb/lOYf4vEwr9pUKtjqC6X5LP8AC1zZMvtX+GGZ5jjLIuGlr4znWke+tcxcRypFszpxX57551Iwqu0YcOyEM6nzXm0QTmjtcmkkYsXEWypKs21x3HXPrq7kJs+a0sYNdELHA6Mk7pTy/qBr79MKOLAsZbi3/mAkWU2yUDFQO250DJ5EMWdUGhNfo5Y1w7BVm/1+jfpSke2vbXyFYPvGdTl3PaIpZZ+FfTsSVaRj0U+Qb4QwRM9IW/84+0ttp76QKJhCzZkX05ii8POsKrtGsOpdDEpUwRL6coz9ydTDgrkpALcvK0AddbZjmYpdYH9JoNpkF5hOhG6RJDKFl1PDMuvMGJJmQPcSYIaq08HNwHfzqplIKq/LKpSsETtPBsoWfQVcwLiCcJw+taW1tArPztUS07Vazdym+bUyqMJhoI7N/8pdONr2LlWf+FWV1xT5Cl//JaYKjPqXHAF0D2K1cA9AaPR7rT75hsbtbPEOvTSyYIuiNZ3cwJ/9X5BAhBbkErZIWJW1BbC7/u4Vdl30xmmZRFOOVW5tE1i8diigsYQD5AhyEcNI4g5SIy53NStzems9Y1/DK9nPb6WituTtwFzR+GBRScwMOEd7c3D7ipUq5ZDuz/wLEPjVASkHnL57WupM7jhoPapmHrf3KXfAVCnqc5i1QDNspNlfCJIlB9qIu+MU2eWOe7b9EuTc0OXUl6XmjVG+u8v7KAEq1pZO+VhK9c3z5aow1ZIkMPnBI8GjtSwbAdywcdhqfvKcDM9Vi0Vhoa+o65925X90v1L4Rh3VocQbnNmORJDQuHI2GIshOD2mqTvWQyH1sxch5J4NClwttmFioJ7MM43mpHMB6fspr/KJCdhYfPyoX5tOgM2l46zc/UJ4MADoApHByxuVw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f422492-865f-4708-88e9-08dbd43916ac X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:46.6645 (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: eh+24RbA4W05G0gZ4/EIYNRoTLoEctMc6wtSOeNeGmnQZYCYKJaFgpruZEgMV/bTKM4pFjvnwAtjA7/nEDSFgxhtI2jXOqAiNX972i/lZYY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 Extract the 'cap' and 'cap_ext' data field into the super class, ready for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.c | 6 +- drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 12 ++-- drivers/net/nfp/nfdk/nfp_nfdk_dp.c | 14 ++--- drivers/net/nfp/nfp_ethdev.c | 14 ++--- drivers/net/nfp/nfp_ethdev_vf.c | 10 +-- drivers/net/nfp/nfp_ipsec.c | 4 +- drivers/net/nfp/nfp_net_common.c | 98 +++++++++++++++-------------- drivers/net/nfp/nfp_net_common.h | 10 ++- drivers/net/nfp/nfp_rxtx.c | 2 +- 9 files changed, 89 insertions(+), 81 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 60d843451e..453080f521 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -65,7 +65,7 @@ nfp_pf_repr_disable_queues(struct rte_eth_dev *dev) update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | NFP_NET_CFG_UPDATE_MSIX; - if (hw->cap & NFP_NET_CFG_CTRL_RINGCFG) + if (hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG; /* If an error when reconfig we avoid to change hw state */ @@ -101,7 +101,7 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) update |= NFP_NET_CFG_UPDATE_RSS; - if ((hw->cap & NFP_NET_CFG_CTRL_RSS2) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RSS2) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RSS2; else new_ctrl |= NFP_NET_CFG_CTRL_RSS; @@ -111,7 +111,7 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) update |= NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING; - if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl); diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c index b64dbaca0d..bbf4530ae9 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c +++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c @@ -30,7 +30,7 @@ nfp_net_nfd3_tx_tso(struct nfp_net_txq *txq, uint64_t ol_flags; struct nfp_net_hw *hw = txq->hw; - if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) == 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO_ANY) == 0) goto clean_txd; ol_flags = mb->ol_flags; @@ -69,7 +69,7 @@ nfp_net_nfd3_tx_cksum(struct nfp_net_txq *txq, uint64_t ol_flags; struct nfp_net_hw *hw = txq->hw; - if ((hw->cap & NFP_NET_CFG_CTRL_TXCSUM) == 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_TXCSUM) == 0) return; ol_flags = mb->ol_flags; @@ -127,8 +127,8 @@ nfp_net_nfd3_tx_vlan(struct nfp_net_txq *txq, { struct nfp_net_hw *hw = txq->hw; - if ((hw->cap & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0 || - (hw->cap & NFP_NET_CFG_CTRL_TXVLAN) == 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0 || + (hw->super.cap & NFP_NET_CFG_CTRL_TXVLAN) == 0) return; if ((mb->ol_flags & RTE_MBUF_F_TX_VLAN) != 0) { @@ -151,7 +151,7 @@ nfp_net_nfd3_set_meta_data(struct nfp_net_meta_raw *meta_data, uint8_t ipsec_layer = 0; hw = txq->hw; - cap_extend = hw->cap_ext; + cap_extend = hw->super.cap_ext; if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) != 0 && (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { @@ -278,7 +278,7 @@ nfp_net_nfd3_xmit_pkts_common(void *tx_queue, } if (unlikely(pkt->nb_segs > 1 && - (hw->cap & NFP_NET_CFG_CTRL_GATHER) == 0)) { + (hw->super.cap & NFP_NET_CFG_CTRL_GATHER) == 0)) { PMD_TX_LOG(ERR, "Multisegment packet not supported"); goto xmit_end; } diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c index 259039964a..807666686f 100644 --- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c +++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c @@ -23,7 +23,7 @@ nfp_net_nfdk_tx_cksum(struct nfp_net_txq *txq, uint64_t ol_flags; struct nfp_net_hw *hw = txq->hw; - if ((hw->cap & NFP_NET_CFG_CTRL_TXCSUM) == 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_TXCSUM) == 0) return flags; ol_flags = mb->ol_flags; @@ -57,7 +57,7 @@ nfp_net_nfdk_tx_tso(struct nfp_net_txq *txq, txd.raw = 0; - if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) == 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO_ANY) == 0) return txd.raw; ol_flags = mb->ol_flags; @@ -146,7 +146,7 @@ nfp_net_nfdk_tx_maybe_close_block(struct nfp_net_txq *txq, return -EINVAL; /* Count TSO descriptor */ - if ((txq->hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0 && + if ((txq->hw->super.cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0 && (pkt->ol_flags & RTE_MBUF_F_TX_TCP_SEG) != 0) n_descs++; @@ -184,7 +184,7 @@ nfp_net_nfdk_set_meta_data(struct rte_mbuf *pkt, memset(&meta_data, 0, sizeof(meta_data)); hw = txq->hw; - cap_extend = hw->cap_ext; + cap_extend = hw->super.cap_ext; if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) != 0 && (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { @@ -322,7 +322,7 @@ nfp_net_nfdk_xmit_pkts_common(void *tx_queue, nfp_net_nfdk_set_meta_data(pkt, txq, &metadata); if (unlikely(pkt->nb_segs > 1 && - (hw->cap & NFP_NET_CFG_CTRL_GATHER) == 0)) { + (hw->super.cap & NFP_NET_CFG_CTRL_GATHER) == 0)) { PMD_TX_LOG(ERR, "Multisegment packet not supported"); goto xmit_end; } @@ -332,7 +332,7 @@ nfp_net_nfdk_xmit_pkts_common(void *tx_queue, * multisegment packet, but TSO info needs to be in all of them. */ dma_len = pkt->data_len; - if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0 && + if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0 && (pkt->ol_flags & RTE_MBUF_F_TX_TCP_SEG) != 0) { type = NFDK_DESC_TX_TYPE_TSO; } else if (pkt->next == NULL && dma_len <= NFDK_TX_MAX_DATA_PER_HEAD) { @@ -405,7 +405,7 @@ nfp_net_nfdk_xmit_pkts_common(void *tx_queue, ktxds->raw = rte_cpu_to_le_64(nfp_net_nfdk_tx_cksum(txq, temp_pkt, metadata)); ktxds++; - if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0 && + if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0 && (temp_pkt->ol_flags & RTE_MBUF_F_TX_TCP_SEG) != 0) { ktxds->raw = rte_cpu_to_le_64(nfp_net_nfdk_tx_tso(txq, temp_pkt)); ktxds++; diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index d32a82210c..8ac2acea7b 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -119,7 +119,7 @@ nfp_net_start(struct rte_eth_dev *dev) if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) != 0) { nfp_net_rss_config_default(dev); update |= NFP_NET_CFG_UPDATE_RSS; - new_ctrl |= nfp_net_cfg_ctrl_rss(hw->cap); + new_ctrl |= nfp_net_cfg_ctrl_rss(hw->super.cap); } /* Enable device */ @@ -128,19 +128,19 @@ nfp_net_start(struct rte_eth_dev *dev) update |= NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING; /* Enable vxlan */ - if ((hw->cap & NFP_NET_CFG_CTRL_VXLAN) != 0) { + if ((hw->super.cap & NFP_NET_CFG_CTRL_VXLAN) != 0) { new_ctrl |= NFP_NET_CFG_CTRL_VXLAN; update |= NFP_NET_CFG_UPDATE_VXLAN; } - if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; if (nfp_net_reconfig(hw, new_ctrl, update) != 0) return -EIO; /* Enable packet type offload by extend ctrl word1. */ - cap_extend = hw->cap_ext; + cap_extend = hw->super.cap_ext; if ((cap_extend & NFP_NET_CFG_CTRL_PKT_TYPE) != 0) ctrl_extend = NFP_NET_CFG_CTRL_PKT_TYPE; @@ -579,8 +579,8 @@ nfp_net_init(struct rte_eth_dev *eth_dev) hw->mtu = RTE_ETHER_MTU; /* VLAN insertion is incompatible with LSOv2 */ - if ((hw->cap & NFP_NET_CFG_CTRL_LSO2) != 0) - hw->cap &= ~NFP_NET_CFG_CTRL_TXVLAN; + if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO2) != 0) + hw->super.cap &= ~NFP_NET_CFG_CTRL_TXVLAN; nfp_net_log_device_information(hw); @@ -608,7 +608,7 @@ nfp_net_init(struct rte_eth_dev *eth_dev) /* Copying mac address to DPDK eth_dev struct */ rte_ether_addr_copy(&hw->mac_addr, eth_dev->data->mac_addrs); - if ((hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) eth_dev->data->dev_flags |= RTE_ETH_DEV_NOLIVE_MAC_ADDR; eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 51c474275e..293d1ed53c 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -86,7 +86,7 @@ nfp_netvf_start(struct rte_eth_dev *dev) if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) != 0) { nfp_net_rss_config_default(dev); update |= NFP_NET_CFG_UPDATE_RSS; - new_ctrl |= nfp_net_cfg_ctrl_rss(hw->cap); + new_ctrl |= nfp_net_cfg_ctrl_rss(hw->super.cap); } /* Enable device */ @@ -94,7 +94,7 @@ nfp_netvf_start(struct rte_eth_dev *dev) update |= NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING; - if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl); @@ -314,8 +314,8 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) hw->mtu = RTE_ETHER_MTU; /* VLAN insertion is incompatible with LSOv2 */ - if ((hw->cap & NFP_NET_CFG_CTRL_LSO2) != 0) - hw->cap &= ~NFP_NET_CFG_CTRL_TXVLAN; + if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO2) != 0) + hw->super.cap &= ~NFP_NET_CFG_CTRL_TXVLAN; nfp_net_log_device_information(hw); @@ -341,7 +341,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) /* Copying mac address to DPDK eth_dev struct */ rte_ether_addr_copy(&hw->mac_addr, eth_dev->data->mac_addrs); - if ((hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) eth_dev->data->dev_flags |= RTE_ETH_DEV_NOLIVE_MAC_ADDR; eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index af85e8575c..e080e71db2 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -1382,7 +1382,7 @@ nfp_ipsec_init(struct rte_eth_dev *dev) hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - cap_extend = hw->cap_ext; + cap_extend = hw->super.cap_ext; if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) == 0) { PMD_INIT_LOG(INFO, "Unsupported IPsec extend capability"); return 0; @@ -1429,7 +1429,7 @@ nfp_ipsec_uninit(struct rte_eth_dev *dev) hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - cap_extend = hw->cap_ext; + cap_extend = hw->super.cap_ext; if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) == 0) { PMD_INIT_LOG(INFO, "Unsupported IPsec extend capability"); return; diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 189f81bbb6..77c0652642 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -408,7 +408,7 @@ nfp_net_configure(struct rte_eth_dev *dev) /* Checking RX mode */ if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) != 0 && - (hw->cap & NFP_NET_CFG_CTRL_RSS_ANY) == 0) { + (hw->super.cap & NFP_NET_CFG_CTRL_RSS_ANY) == 0) { PMD_DRV_LOG(ERR, "RSS not supported"); return -EINVAL; } @@ -426,27 +426,29 @@ nfp_net_configure(struct rte_eth_dev *dev) void nfp_net_log_device_information(const struct nfp_net_hw *hw) { + uint32_t cap = hw->super.cap; + PMD_INIT_LOG(INFO, "VER: %u.%u, Maximum supported MTU: %d", hw->ver.major, hw->ver.minor, hw->max_mtu); - PMD_INIT_LOG(INFO, "CAP: %#x, %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", hw->cap, - hw->cap & NFP_NET_CFG_CTRL_PROMISC ? "PROMISC " : "", - hw->cap & NFP_NET_CFG_CTRL_L2BC ? "L2BCFILT " : "", - hw->cap & NFP_NET_CFG_CTRL_L2MC ? "L2MCFILT " : "", - hw->cap & NFP_NET_CFG_CTRL_RXCSUM ? "RXCSUM " : "", - hw->cap & NFP_NET_CFG_CTRL_TXCSUM ? "TXCSUM " : "", - hw->cap & NFP_NET_CFG_CTRL_RXVLAN ? "RXVLAN " : "", - hw->cap & NFP_NET_CFG_CTRL_TXVLAN ? "TXVLAN " : "", - hw->cap & NFP_NET_CFG_CTRL_RXVLAN_V2 ? "RXVLANv2 " : "", - hw->cap & NFP_NET_CFG_CTRL_TXVLAN_V2 ? "TXVLANv2 " : "", - hw->cap & NFP_NET_CFG_CTRL_RXQINQ ? "RXQINQ " : "", - hw->cap & NFP_NET_CFG_CTRL_SCATTER ? "SCATTER " : "", - hw->cap & NFP_NET_CFG_CTRL_GATHER ? "GATHER " : "", - hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR ? "LIVE_ADDR " : "", - hw->cap & NFP_NET_CFG_CTRL_LSO ? "TSO " : "", - hw->cap & NFP_NET_CFG_CTRL_LSO2 ? "TSOv2 " : "", - hw->cap & NFP_NET_CFG_CTRL_RSS ? "RSS " : "", - hw->cap & NFP_NET_CFG_CTRL_RSS2 ? "RSSv2 " : ""); + PMD_INIT_LOG(INFO, "CAP: %#x, %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", cap, + cap & NFP_NET_CFG_CTRL_PROMISC ? "PROMISC " : "", + cap & NFP_NET_CFG_CTRL_L2BC ? "L2BCFILT " : "", + cap & NFP_NET_CFG_CTRL_L2MC ? "L2MCFILT " : "", + cap & NFP_NET_CFG_CTRL_RXCSUM ? "RXCSUM " : "", + cap & NFP_NET_CFG_CTRL_TXCSUM ? "TXCSUM " : "", + cap & NFP_NET_CFG_CTRL_RXVLAN ? "RXVLAN " : "", + cap & NFP_NET_CFG_CTRL_TXVLAN ? "TXVLAN " : "", + cap & NFP_NET_CFG_CTRL_RXVLAN_V2 ? "RXVLANv2 " : "", + cap & NFP_NET_CFG_CTRL_TXVLAN_V2 ? "TXVLANv2 " : "", + cap & NFP_NET_CFG_CTRL_RXQINQ ? "RXQINQ " : "", + cap & NFP_NET_CFG_CTRL_SCATTER ? "SCATTER " : "", + cap & NFP_NET_CFG_CTRL_GATHER ? "GATHER " : "", + cap & NFP_NET_CFG_CTRL_LIVE_ADDR ? "LIVE_ADDR " : "", + cap & NFP_NET_CFG_CTRL_LSO ? "TSO " : "", + cap & NFP_NET_CFG_CTRL_LSO2 ? "TSOv2 " : "", + cap & NFP_NET_CFG_CTRL_RSS ? "RSS " : "", + cap & NFP_NET_CFG_CTRL_RSS2 ? "RSSv2 " : ""); PMD_INIT_LOG(INFO, "max_rx_queues: %u, max_tx_queues: %u", hw->max_rx_queues, hw->max_tx_queues); @@ -456,9 +458,9 @@ static inline void nfp_net_enable_rxvlan_cap(struct nfp_net_hw *hw, uint32_t *ctrl) { - if ((hw->cap & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) *ctrl |= NFP_NET_CFG_CTRL_RXVLAN_V2; - else if ((hw->cap & NFP_NET_CFG_CTRL_RXVLAN) != 0) + else if ((hw->super.cap & NFP_NET_CFG_CTRL_RXVLAN) != 0) *ctrl |= NFP_NET_CFG_CTRL_RXVLAN; } @@ -503,7 +505,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) NFP_NET_CFG_UPDATE_RING | NFP_NET_CFG_UPDATE_MSIX; - if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG; /* If an error when reconfig we avoid to change hw state */ @@ -552,7 +554,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && - (hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) { + (hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) { PMD_DRV_LOG(ERR, "MAC address unable to change when port enabled"); return -EBUSY; } @@ -563,7 +565,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, update = NFP_NET_CFG_UPDATE_MACADDR; ctrl = hw->ctrl; if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && - (hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) != 0) + (hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) != 0) ctrl |= NFP_NET_CFG_CTRL_LIVE_ADDR; /* Signal the NIC about the change */ @@ -631,7 +633,7 @@ nfp_check_offloads(struct rte_eth_dev *dev) tx_offload = dev_conf->txmode.offloads; if ((rx_offload & RTE_ETH_RX_OFFLOAD_IPV4_CKSUM) != 0) { - if ((hw->cap & NFP_NET_CFG_CTRL_RXCSUM) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RXCSUM) != 0) ctrl |= NFP_NET_CFG_CTRL_RXCSUM; } @@ -639,25 +641,25 @@ nfp_check_offloads(struct rte_eth_dev *dev) nfp_net_enable_rxvlan_cap(hw, &ctrl); if ((rx_offload & RTE_ETH_RX_OFFLOAD_QINQ_STRIP) != 0) { - if ((hw->cap & NFP_NET_CFG_CTRL_RXQINQ) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) != 0) ctrl |= NFP_NET_CFG_CTRL_RXQINQ; } hw->mtu = dev->data->mtu; if ((tx_offload & RTE_ETH_TX_OFFLOAD_VLAN_INSERT) != 0) { - if ((hw->cap & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) ctrl |= NFP_NET_CFG_CTRL_TXVLAN_V2; - else if ((hw->cap & NFP_NET_CFG_CTRL_TXVLAN) != 0) + else if ((hw->super.cap & NFP_NET_CFG_CTRL_TXVLAN) != 0) ctrl |= NFP_NET_CFG_CTRL_TXVLAN; } /* L2 broadcast */ - if ((hw->cap & NFP_NET_CFG_CTRL_L2BC) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_L2BC) != 0) ctrl |= NFP_NET_CFG_CTRL_L2BC; /* L2 multicast */ - if ((hw->cap & NFP_NET_CFG_CTRL_L2MC) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_L2MC) != 0) ctrl |= NFP_NET_CFG_CTRL_L2MC; /* TX checksum offload */ @@ -669,7 +671,7 @@ nfp_check_offloads(struct rte_eth_dev *dev) /* LSO offload */ if ((tx_offload & RTE_ETH_TX_OFFLOAD_TCP_TSO) != 0 || (tx_offload & RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO) != 0) { - if ((hw->cap & NFP_NET_CFG_CTRL_LSO) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO) != 0) ctrl |= NFP_NET_CFG_CTRL_LSO; else ctrl |= NFP_NET_CFG_CTRL_LSO2; @@ -698,7 +700,7 @@ nfp_net_promisc_enable(struct rte_eth_dev *dev) hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); } - if ((hw->cap & NFP_NET_CFG_CTRL_PROMISC) == 0) { + if ((hw->super.cap & NFP_NET_CFG_CTRL_PROMISC) == 0) { PMD_DRV_LOG(ERR, "Promiscuous mode not supported"); return -ENOTSUP; } @@ -1213,35 +1215,35 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) /* Next should change when PF support is implemented */ dev_info->max_mac_addrs = 1; - if ((hw->cap & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) != 0) + if ((hw->super.cap & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) != 0) dev_info->rx_offload_capa = RTE_ETH_RX_OFFLOAD_VLAN_STRIP; - if ((hw->cap & NFP_NET_CFG_CTRL_RXQINQ) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) != 0) dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_QINQ_STRIP; - if ((hw->cap & NFP_NET_CFG_CTRL_RXCSUM) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_RXCSUM) != 0) dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_IPV4_CKSUM | RTE_ETH_RX_OFFLOAD_UDP_CKSUM | RTE_ETH_RX_OFFLOAD_TCP_CKSUM; - if ((hw->cap & (NFP_NET_CFG_CTRL_TXVLAN | NFP_NET_CFG_CTRL_TXVLAN_V2)) != 0) + if ((hw->super.cap & (NFP_NET_CFG_CTRL_TXVLAN | NFP_NET_CFG_CTRL_TXVLAN_V2)) != 0) dev_info->tx_offload_capa = RTE_ETH_TX_OFFLOAD_VLAN_INSERT; - if ((hw->cap & NFP_NET_CFG_CTRL_TXCSUM) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_TXCSUM) != 0) dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | RTE_ETH_TX_OFFLOAD_UDP_CKSUM | RTE_ETH_TX_OFFLOAD_TCP_CKSUM; - if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0) { + if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0) { dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_TCP_TSO; - if ((hw->cap & NFP_NET_CFG_CTRL_VXLAN) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_VXLAN) != 0) dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO; } - if ((hw->cap & NFP_NET_CFG_CTRL_GATHER) != 0) + if ((hw->super.cap & NFP_NET_CFG_CTRL_GATHER) != 0) dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_MULTI_SEGS; - cap_extend = hw->cap_ext; + cap_extend = hw->super.cap_ext; if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) != 0) { dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_SECURITY; dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_SECURITY; @@ -1281,7 +1283,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) .nb_mtu_seg_max = NFP_TX_MAX_MTU_SEG, }; - if ((hw->cap & NFP_NET_CFG_CTRL_RSS_ANY) != 0) { + if ((hw->super.cap & NFP_NET_CFG_CTRL_RSS_ANY) != 0) { dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_RSS_HASH; dev_info->flow_type_rss_offloads = RTE_ETH_RSS_IPV4 | @@ -1334,8 +1336,8 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, return -ENODEV; /* Get some of the read-only fields from the config BAR */ - hw->cap = nn_cfg_readl(hw, NFP_NET_CFG_CAP); - hw->cap_ext = nn_cfg_readl(hw, NFP_NET_CFG_CAP_WORD1); + hw->super.cap = nn_cfg_readl(hw, NFP_NET_CFG_CAP); + hw->super.cap_ext = nn_cfg_readl(hw, NFP_NET_CFG_CAP_WORD1); hw->max_mtu = nn_cfg_readl(hw, NFP_NET_CFG_MAX_MTU); hw->flbufsz = DEFAULT_FLBUF_SIZE; @@ -2025,14 +2027,14 @@ nfp_net_init_metadata_format(struct nfp_net_hw *hw) */ if (hw->ver.major == 4) { hw->meta_format = NFP_NET_METAFORMAT_CHAINED; - } else if ((hw->cap & NFP_NET_CFG_CTRL_CHAIN_META) != 0) { + } else if ((hw->super.cap & NFP_NET_CFG_CTRL_CHAIN_META) != 0) { hw->meta_format = NFP_NET_METAFORMAT_CHAINED; /* - * RSS is incompatible with chained metadata. hw->cap just represents + * RSS is incompatible with chained metadata. hw->super.cap just represents * firmware's ability rather than the firmware's configuration. We decide - * to reduce the confusion to allow us can use hw->cap to identify RSS later. + * to reduce the confusion to allow us can use hw->super.cap to identify RSS later. */ - hw->cap &= ~NFP_NET_CFG_CTRL_RSS; + hw->super.cap &= ~NFP_NET_CFG_CTRL_RSS; } else { hw->meta_format = NFP_NET_METAFORMAT_SINGLE; } diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 8a02911c45..7bcdd9295f 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -112,7 +112,15 @@ struct nfp_app_fw_nic { uint8_t total_phyports; }; +struct nfp_hw { + uint32_t cap; + uint32_t cap_ext; +}; + struct nfp_net_hw { + /** The parent class */ + struct nfp_hw super; + /** Backpointer to the PF this port belongs to */ struct nfp_pf_dev *pf_dev; @@ -120,9 +128,7 @@ struct nfp_net_hw { struct rte_eth_dev *eth_dev; /** Info from the firmware */ - uint32_t cap_ext; struct nfp_net_fw_ver ver; - uint32_t cap; uint32_t max_mtu; uint32_t mtu; uint32_t rx_offset; diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index efdca7fccf..a0c7e0e9b5 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -386,7 +386,7 @@ nfp_net_parse_meta_qinq(const struct nfp_meta_parsed *meta, struct nfp_net_hw *hw = rxq->hw; if ((hw->ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || - (hw->cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) + (hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) return; if (meta->vlan_layer < NFP_META_MAX_VLANS) From patchwork Tue Oct 24 02:28:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133211 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 9BB8E431EB; Tue, 24 Oct 2023 04:30:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9D019410DD; Tue, 24 Oct 2023 04:29:53 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2091.outbound.protection.outlook.com [40.107.93.91]) by mails.dpdk.org (Postfix) with ESMTP id 26DF040EF0 for ; Tue, 24 Oct 2023 04:29:50 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hYRrHZGj7YXUmwjn4WMStNkLTffEpO5m3Jv8nUNyJl9OB5JAzpA+PCBcreVpJbIVo/07CBD+I4AYZW3Sk3a/duNW4Dm5uBZLW9DzbVFxB3WFTwyjqmy457MOuCKLgBoaPfiWWVQui2gucS5/x3A1sKvfLE8NXEW+qog8kTZlfD5rYuQYbbKmXeQIj1bM0tcXkWzNzY4ZOMM04/n4iQ2KbLEPwlDncicpBdlIAf2KaEXErgfWSRyBHz1qSRzLSKwbUSl3iNZ9lz3lLTgHGRjGa1XB5OBSKO25XrGFoPGWLN+/nRqgViwMZpzNqABqFW/sh/DnrLhbo7YByXwvdQ4WQQ== 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=R156Gls60QxOU7qWGoYnxXX00gHa1vcJCkb2LgmRnYg=; b=d/aSXN5lKGAxTM5v/9siFCxYHESuC29gT3zlxWdsMjReuRkPVz65uVhSlH2G+HJKk+c6d7E2mwiJp+4ncN+DoluT9ACM+WrDE3MBrvgyVVu3+bsES+mSdax32pE2+aEW/DcZVWh2UFs4rka1W+BaiaEqtPoWSMbXAgcweWnS77dalfw6Dxg+91hu8qLYCJ6XH5ZHBnHK4u48A+mnEVrvFNhsZeFUxQmiororUf3L5ulIGEubg0ORmY80DjSCV4xRJdU88pa8Wbz0xPOIKAuItgLFfwLEWoisIxc80dBfhiVcqzf1ZFiYffI/YRKc2SjB21Vry0diJabhQjzyswGwbw== 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=R156Gls60QxOU7qWGoYnxXX00gHa1vcJCkb2LgmRnYg=; b=mOiW28yefbq5TpRGLPjyP0xuPoHXoWZbHP4H3aAjGM9JoLtbbGzZKL8a2iEjxkOTdeuoo2Uqf55tBKai/efsAK4n33mMp5iEfETu99/4CukXM2WgMxshpj+l7sAevciuwQpVUtVDeL7h5Lvwybgcct2YygwxtcZBsOH7z9uNg4g= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:48 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:48 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 06/25] net/nfp: extract the qcp data field Date: Tue, 24 Oct 2023 10:28:30 +0800 Message-Id: <20231024022849.3092506-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: d4e68c95-bd3c-4233-a239-08dbd43917e9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zkyHV4P6K6y9nYy+jmnEnXTpS88t7AzIcQEfiE1ljQN3HFJn/3TzkLsJa9WNVMhrUmmFZYMbr7U7gGjXvldeX5kekoXEBRlvZWWlUws2V6VsYd707MF5u/ItrGIgVZoYKJrcfTZdv9Mc+8JBh4DYIaeOZ/y3sWMczdWY4qO5MoSsRMzIX68psRhbWV1hiznU8MRadLQtaA9TXLAcbUEJl6OMkCOy1RUGgZWiWVcj4yTIKGbpNMjZ88PcKJ5nk+2NDH92eRJjQWwOhfBziI8dtryh/EDgVOXj6EOkHKdTCKnH7YaOESaM8xCiEoxHF5XkHDeYlY4LjbOOVdOe+hQZ7RXQ9Egf/BC1qZ0g54jh98DUS1heOKFIQlsLlHyDKqnEL9dOyJoNWgLqL7oidktHzNvNbdQV8aAlc8UMK8uTc+Nbq00cNmSE+rMY2hmiyu118f02n0iTTGGXkXVsSyb7WDOBRdV8OppSqJqCNPxm7gRVI7Dg9Q9zfN9Q+y+yBhE1qTorZSHnmlAEntFcY3FcYKT2VWuMTiqdpIrwp2PTLUGwqxpT/8lLCQffmziLFXW5QCXyb0t94DMmNxl3QXnfwsI7bRuZZX9HtM3nrRJUWgZYmZunMxCZo3PRjS5qalAoKNTn2xlo5YK4nPIhThmUZWlnB6TSAM3PKpl+dFuxqLc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WXedteCpqF+LTmmrf8PlvMKiEPY2VOpXrtOBYUrpNEJoT3u4Q0c0AVUSaZvxB3FPh+OmIfWz9tNJAn47WF7NOSd3mnuF9zkL9y4yLkGPR3Xz3Q6im1snWBLA4Ib5Xm5CGObYhcMFGFPdOb7vaRkKpmmc4v6aNJXKOPaEfGp/0F4Ag6iKVFMJA5SNB9u61gF6jECXEPjUtf42Xl5B0GL6V0aM9I2VSOhy7p/+FR6B86rQYlHCyAJqNMR94gkKco6WC68VLVVKbA+8OkdIgklYl8plhM0H5hsS0qpyWPKJ6LUqPmbm57sgsbxYDHbzrP/Rttsou405uOhySmfztmJxysl8FxATLMMRtCZnBGLPWXp059512Ib7If1nljqditB4fI7e78Sxd5dQRw8NwzI3R2jTff3tuql5pTzhsX+Etd4hTQ8Gq2cqMA28rV8fYJ25r75VDnfygnVKVzONOxzhKvofF+IvPaocGMl8o0CLebjvCJgScbGjFPXTnS53FtN9KRKQpuPpEttXfy9Qa88I791QjxGWgp2eL0x2pwqlu5gsHIn5cM2IDrJAcm00NmmoqIXoYvPXQG87pBrjL6tadWXeJTKuS2FVPYtQPpUfVt0PJ2UZoSXduekRY7vUXCMnWYOk6MYG7QnJZWf4s1fxyd0K+guh09H0Yh+bQ9bbUxDMrYHeieEpOzq5VHE+VUMDt5lMTNJ1yuVt81rvZm2oZltKoHl19OprfMTWXtqgcomQiyoHj/XsLgAO+9j9QggNleHpdgcQHIeYob3SSeNVWpro+lQS2Nd3FbVca38cA0igG83UCjFfn7bks3wd8/2fPyjPOB31P2keduPPowVGr/FyKM/JwXAAjMIUnMi9n+/ZhWkeEKM8Yy+3e27aJMzYlhdGtz67O17U3rRLZHFvJ4fjsgMV3ZgMPODl5RbyL+RmGEVvAbKPLijBkQSMtJPe7Vy4XC9IfEC1/SFa9oV7/xJDFzOSegaDk4Y2hbH354h16tEXc4lPUTFFHOZ6e3baCt4SBoGzKS2J4p+vmBg7vV4PCcItPyJlj9RhJMAJcqHYaVYtHu6IG4XSa/f/6KpRpPUOoOzs7bStNe2R/AqjMBeMkFpLqCmscus5azC52PWpTCYMdm40zcewImsGnL7bBNpf6FtNnWKqt8CkKKVjfEKfjf15iYc+MvxjdWDbFr6wohy4cyxgpuQwqCxZXKiRriPcixLct6N4BZBv8TVk4Xzs914M9+hgke+AqJOWVT/2O5mED4To248cO4ESnCvaC0+s8DZP+wdvB7a0nf3NWmaixdx4DFf2kWgqwSYQVyPnwZcCSSGx6GfQj42EgV0NAJWb6kFchpdjriCR/b/Wye+dFWAb5yY346FXfhRhER5CrunAQADE6M5uA7/7sOYxKBnfYym8Cf1ji2Cfwn8y6da2dc5HF8j5iNWV4qCzZEZ6O0R88dm31FGeH/o0+tV0lQ1moCCGZlUMFnkxFp5kW6CeGa1t3yX/bRXVMIVeNU6odUukTP1z0554+lmY6Iiy9wcV2QYlgqm78j+TSnpSbxMmeWdTiUGRCDpr5+4kLSnlBZ1nNiUpWAudgda+G5+PIV3HkIDs6kcEe3vyeuadGQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4e68c95-bd3c-4233-a239-08dbd43917e9 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:48.5350 (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: Ssgm8gfP8X47MQEOqa0Ftyj1vEKKzaHlUmIAEHlkvBtRxrVrXWbiT9+j5zHfYG6KRjlfjg9HnBovH/NhYcN8c9fErKzul2fi0IGxpR45lZw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 Extract the 'qcp_cfg' data field into the super class, prepare for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_net_common.c | 8 ++++---- drivers/net/nfp/nfp_net_common.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 77c0652642..cb64fa13c5 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -206,14 +206,14 @@ __nfp_net_reconfig(struct nfp_net_hw *hw, struct timespec wait; PMD_DRV_LOG(DEBUG, "Writing to the configuration queue (%p)...", - hw->qcp_cfg); + hw->super.qcp_cfg); - if (hw->qcp_cfg == NULL) { + if (hw->super.qcp_cfg == NULL) { PMD_DRV_LOG(ERR, "Bad configuration queue pointer"); return -ENXIO; } - nfp_qcp_ptr_add(hw->qcp_cfg, NFP_QCP_WRITE_PTR, 1); + nfp_qcp_ptr_add(hw->super.qcp_cfg, NFP_QCP_WRITE_PTR, 1); wait.tv_sec = 0; wait.tv_nsec = 1000000; /* 1ms */ @@ -525,7 +525,7 @@ nfp_net_params_setup(struct nfp_net_hw *hw) void nfp_net_cfg_queue_setup(struct nfp_net_hw *hw) { - hw->qcp_cfg = hw->tx_bar + NFP_QCP_QUEUE_ADDR_SZ; + hw->super.qcp_cfg = hw->tx_bar + NFP_QCP_QUEUE_ADDR_SZ; } void diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 7bcdd9295f..4bfb3174b0 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -113,6 +113,7 @@ struct nfp_app_fw_nic { }; struct nfp_hw { + uint8_t *qcp_cfg; uint32_t cap; uint32_t cap_ext; }; @@ -150,7 +151,6 @@ struct nfp_net_hw { uint16_t vxlan_ports[NFP_NET_N_VXLAN_PORTS]; uint8_t vxlan_usecnt[NFP_NET_N_VXLAN_PORTS]; - uint8_t *qcp_cfg; rte_spinlock_t reconfig_lock; uint32_t max_tx_queues; From patchwork Tue Oct 24 02:28:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133212 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 A1DD8431EB; Tue, 24 Oct 2023 04:30:37 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CFA0240EE5; Tue, 24 Oct 2023 04:29:55 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2091.outbound.protection.outlook.com [40.107.93.91]) by mails.dpdk.org (Postfix) with ESMTP id 49AB44069F for ; Tue, 24 Oct 2023 04:29:52 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QXwjPTS9PjM2pTGJHr13brZVHEmWD8GSw/ttUZ3bhpKtT5H8vykO9m07F+y3LdG//ZzPpWVNb0T3eUe5V0A7Ob/aYOEBOIYCEMUDjJAk/8BkRN+8yhs9VElHNyiQxA3UKM6fk6/OXD0lWb01RtyHAUF2GyKTo+GqqtmYwglIegZYnGJPo3oj8EJt2hefDY2YaooN4pcKLUxzFhaL70ncRZvWdTm2Tzs4+kp/g7rR9mepxv0ydk7QQUl6vtCVd5rOn165SXoaw/p/nXgOopshPaXP/p4W/PAtuQ/WqlWGsvS9kbnfZCzDq4UgoWGS7ORnwARt5b03dFm7cJNbKKn6Ig== 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=8/kI7NU5TxyorUR8LL4wOEHqLzBegBRM7sjKPDePIOk=; b=CzfoqNOZQNdA3T7dvHM2HwA7Xgo3dkAC+SCwUHGDsgZJPScwCyQiu3mIc5bL+4fhU2tL9QavtYDXoSjVSC+uqFcBDJwc3xLAlO+YXOWeevpyhypk6aOVvFZtqcTIkQSovdAwKXXbLfigHP381BE7SB0MpeYBs1FiqgG18eYRUs0IYKeaqMb9P+cGqAiyf8vCTs74w+x+CeRQUFwYV3cX3b6l0e1xQ6T/95CFiGq3NGJ/ewSoN5J444tKVHRsS89Q1S3huRy37fTO34x12iB7kQTd+e7+whbfIrRfxD1RsXXo3+3Gc5cbR0T10VBogWa3UYSPDq0mAaqTbfYCgx3FIA== 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=8/kI7NU5TxyorUR8LL4wOEHqLzBegBRM7sjKPDePIOk=; b=NdPWlxg2LJBiOCS9NHifemzzIU9HzYbaizQt34h0TKJRVmdhIydHr6KguYpUij1Sl0E+FW915/U95O7Gw+1ltljjQVI41QsRigEI0RRcLcMuVI3BV4PKZW7dwDuFFJ1vDT2vpmA+T9NAsFRveH7arkU/q8CWuZrUDYLESA0MQCQ= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:50 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:50 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 07/25] net/nfp: extract the ctrl BAR data field Date: Tue, 24 Oct 2023 10:28:31 +0800 Message-Id: <20231024022849.3092506-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f29df0f-7f33-4694-5a0c-08dbd4391905 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Jx1LACcGFDAF37rcYyRX6koLMaJ7bklrMXEhIUBB0AY8f6GEBUUWREjFCIz5eVuajqCDSm5L/J3srrqM/6ws3Q4QikQ+f4OPowkAWd73pIpZzTRZxvaXJTFtVRxy+eZ8qILkO4RD7NPcqp8Jnx+yTpmBccJa4VvvRwQcwCqSF5ckG9PT6HOPayB1hWcpkb4st5mKMXa22tHcAxQxmkn8XB6apUi0XMTBYPRm0hzlexwNzi0Q5dXd7VLj0Z06ln4qnEflm+oGyeco31hf20J7L4hLdzHv8VtigWlehROBSSVbtKONqxWeMk3pQccd+XUm+TgJL28CL48qpiIUbJqmY4oo5mH2Qd9yDMQlAEWumfEsLTyf6A0vk804Cf2YSYHkYxp2v4QoO0K1WanIsx3sAb1BQ9OUR5DftvKS3TKZQXNVKs+54s2tO/QPtCibtLqA1nJVG4xCs5/s4+F3Tmkf+OcjT51Dy/qpBBHiYSeCq5DyAFc3mSI1jiSPQtynbIm60i17b09JIEvrFITqrEuk6MW82X263VkFvPMlQWP1JfqFeNyKgKybfBv1Y4GIMHLNoYevc48/U3HfIBOxJKi6BO4DkhYKySYc37OnLoIC5gY3GbNAYG7r0826FAth4ZJGhsSLEqphFb0pTxqa4vXvYgnw7kussLxN6K2o/6HNiuc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5guY5PTN1FrAXXhyz2YfMNsVdlgAytjACFIbnSUaCXSaH8eJwBTyGQ3SLb71oJLXRwF8ldFpWHM6T42SjaXH/+ku4ngjRGQVqDOgvgg5mqsLMHta+/ivLdP5grLRzaYVN6yoVspU8trliMgtoYUOBZCbGVJWqx3qKGSXSMdc3jFPbqXUh30mETzkRdt44rYZZVqV2H/AbqXbezPjo+CEcA3AFnUt9dBc9Djvb7vqTnh98AH0ITs18TBuayw4cx/zngvNJzVYruqu7bgeFuGNz+b/5hhf9U0qYXSrnGHgCXmR9MihDw2FvTAjzKJXBRZoClFKEX2A6DSBvb3vEDwLzfoiJY1QJtgkCtMKgY8W6ADwNJ88lwBeLhEZrrqUJrURLc4/4hYc4wS0/+elfcwD/R/bLQowMx1B+Gy3Ya+JwquKcxHzzJ/EvVXOmEToPuzb+MvmefPqnJNtQhlXc8doXdkTeVLzlzk6IWctZ25jvKnaeA2Uq8lAfGLgl1XvPjMhHOCbXP+zRxx6Wkm977F647EL//AZpZBpbMSt3ZRVTM9MYTysrkcZ/6yPcvbdxXhxjJG2OUt5Qwmli3QtrGwOI3zvCc14JbFJWQzgUOzNhTuw07o8tigvIaBu5zI+SEn6CbDas0oIWa8pLhZfMrLpYBaL8+qs/GfKpTkTuLHsKer6sQfA55sDGgckmiL4CJJBpJls3yfdAJVLQIleQY+1ilBiAIoasUIP3aqbjpXVgp1cvxWOwoGBVd3vbDIeAICcJtpMrIOT49N02xdkmxce5SHo113Y+QrqTANjnFhV03clelyh36771MgOWYw8nZ0dREvX0t8NPAX980+MyVwcePEbV7QZQNiodYTkaHjRFr9LVU2ohsfq8bChFQvRLziPIFwQ9vDwRQI5Sd1aF7EM3hA2DOQPnd86+8yHp5gjbbYYXRuCgaJlpTo6MFHblqItDZdPz8COa6u46VZnTQx7o5pZnJwoJerQcSPNyqeQPtx5Qb7r4RG5/CAxHn1UROJcwsyxCc9a98/JPwFVJ+I4tf+fP2yDUVVGJNGQqFWwEYwhA4e+dLl2Uqwd7sJKRLJymjCnTi9lKCAVDF3LnWtZWHe5VFmP9ZIM5rS4/Ffml4cYOwLVpDuvVneZfNs4BDJI0PJjlBU3sI9Q977O+rn7uksw2YmtQ2vZHF6spNMtyhdqgcl6Ue31+5G5gUbojCtowcxT9ROuwa12v2993ZEslPgJvCz9013oGsCbzpx9xwYdnWl0Uix/xeAG/7sj3H6/jSFeCY4PZ2GKHavRZ5WG14Zqu9ax7rt7Pnzzhvc7MjrpA7n/u3qFqigX9eBQXzOIOvVOMJ/e882YrGHx4gmvuirbJqzOVmVgAgFFoi/IWP3jITMlLPorvcyAs5R6T3z9RtZzJcqriOwJM9ti1GNghwlc77JKS50HMqbkIuP6tKJ5YCWlXPxVSET902LyYu5pwEohqitv/KgZ5fKqmnvjAcIOOjP+fAWsDwXmUDqESJylWIwtYAXXapgXKC+rUQ5b7jmKnRuaQI3zatfP9tAJtWZCXDaFwNhT1OSjvYNsAHHgUJY7wkXQ2YCP1h6ssrS2XQQykhrrChwqLt9UXeaV5g== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5f29df0f-7f33-4694-5a0c-08dbd4391905 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:50.3909 (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: e2JGOM+VGS6ZHQIxsxuOs0Fa5Fi1QaFwxw2MTsnecPwdXCCBMtpx21RMJzfkLzR/nx0h18JRredpJo7pTG+BUHE/N8QK58Xds9xIE39kcB4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 Extract the 'ctrl_bar' data filed into the super class, prepare for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.c | 8 ++++---- drivers/net/nfp/nfp_ethdev.c | 14 +++++++------- drivers/net/nfp/nfp_ethdev_vf.c | 10 +++++----- drivers/net/nfp/nfp_net_common.c | 4 ++-- drivers/net/nfp/nfp_net_common.h | 18 +++++++++--------- drivers/net/nfp/nfp_net_ctrl.c | 8 ++++---- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 453080f521..c8455e0241 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -349,7 +349,7 @@ nfp_flower_init_vnic_common(struct nfp_net_hw *hw, pf_dev = hw->pf_dev; pci_dev = hw->pf_dev->pci_dev; - PMD_INIT_LOG(DEBUG, "%s vNIC ctrl bar: %p", vnic_type, hw->ctrl_bar); + PMD_INIT_LOG(DEBUG, "%s vNIC ctrl bar: %p", vnic_type, hw->super.ctrl_bar); err = nfp_net_common_init(pci_dev, hw); if (err != 0) @@ -873,7 +873,7 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev, /* Fill in the PF vNIC and populate app struct */ app_fw_flower->pf_hw = pf_hw; - pf_hw->ctrl_bar = pf_dev->ctrl_bar; + pf_hw->super.ctrl_bar = pf_dev->ctrl_bar; pf_hw->pf_dev = pf_dev; pf_hw->cpp = pf_dev->cpp; pf_hw->dev_info = dev_info; @@ -891,9 +891,9 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev, ctrl_hw = app_fw_flower->ctrl_hw; /* Map the ctrl vNIC ctrl bar */ - ctrl_hw->ctrl_bar = nfp_rtsym_map(pf_dev->sym_tbl, "_pf0_net_ctrl_bar", + ctrl_hw->super.ctrl_bar = nfp_rtsym_map(pf_dev->sym_tbl, "_pf0_net_ctrl_bar", NFP_NET_CFG_BAR_SZ, &ctrl_hw->ctrl_area); - if (ctrl_hw->ctrl_bar == NULL) { + if (ctrl_hw->super.ctrl_bar == NULL) { PMD_INIT_LOG(ERR, "Cloud not map the ctrl vNIC ctrl bar"); ret = -ENODEV; goto pf_cpp_area_cleanup; diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 8ac2acea7b..b7c60b642f 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -506,16 +506,16 @@ nfp_net_init(struct rte_eth_dev *eth_dev) rte_eth_copy_pci_info(eth_dev, pci_dev); - hw->ctrl_bar = pci_dev->mem_resource[0].addr; - if (hw->ctrl_bar == NULL) { - PMD_DRV_LOG(ERR, "hw->ctrl_bar is NULL. BAR0 not configured"); + hw->super.ctrl_bar = pci_dev->mem_resource[0].addr; + if (hw->super.ctrl_bar == NULL) { + PMD_DRV_LOG(ERR, "hw->super.ctrl_bar is NULL. BAR0 not configured"); return -ENODEV; } if (port == 0) { uint32_t min_size; - hw->ctrl_bar = pf_dev->ctrl_bar; + hw->super.ctrl_bar = pf_dev->ctrl_bar; min_size = NFP_MAC_STATS_SIZE * hw->pf_dev->nfp_eth_table->max_index; hw->mac_stats_bar = nfp_rtsym_map(hw->pf_dev->sym_tbl, "_mac_stats", min_size, &hw->mac_stats_area); @@ -530,12 +530,12 @@ nfp_net_init(struct rte_eth_dev *eth_dev) return -ENODEV; /* Use port offset in pf ctrl_bar for this ports control bar */ - hw->ctrl_bar = pf_dev->ctrl_bar + (port * NFP_NET_CFG_BAR_SZ); + hw->super.ctrl_bar = pf_dev->ctrl_bar + (port * NFP_NET_CFG_BAR_SZ); hw->mac_stats = app_fw_nic->ports[0]->mac_stats_bar + (hw->nfp_idx * NFP_MAC_STATS_SIZE); } - PMD_INIT_LOG(DEBUG, "ctrl bar: %p", hw->ctrl_bar); + PMD_INIT_LOG(DEBUG, "ctrl bar: %p", hw->super.ctrl_bar); PMD_INIT_LOG(DEBUG, "MAC stats: %p", hw->mac_stats); err = nfp_net_common_init(pci_dev, hw); @@ -573,7 +573,7 @@ nfp_net_init(struct rte_eth_dev *eth_dev) eth_dev->data->dev_private = hw; PMD_INIT_LOG(DEBUG, "ctrl_bar: %p, tx_bar: %p, rx_bar: %p", - hw->ctrl_bar, hw->tx_bar, hw->rx_bar); + hw->super.ctrl_bar, hw->tx_bar, hw->rx_bar); nfp_net_cfg_queue_setup(hw); hw->mtu = RTE_ETHER_MTU; diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 293d1ed53c..641fed6fcf 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -270,13 +270,13 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); hw->dev_info = dev_info; - hw->ctrl_bar = pci_dev->mem_resource[0].addr; - if (hw->ctrl_bar == NULL) { - PMD_DRV_LOG(ERR, "hw->ctrl_bar is NULL. BAR0 not configured"); + hw->super.ctrl_bar = pci_dev->mem_resource[0].addr; + if (hw->super.ctrl_bar == NULL) { + PMD_DRV_LOG(ERR, "hw->super.ctrl_bar is NULL. BAR0 not configured"); return -ENODEV; } - PMD_INIT_LOG(DEBUG, "ctrl bar: %p", hw->ctrl_bar); + PMD_INIT_LOG(DEBUG, "ctrl bar: %p", hw->super.ctrl_bar); err = nfp_net_common_init(pci_dev, hw); if (err != 0) @@ -308,7 +308,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) hw->rx_bar = (uint8_t *)pci_dev->mem_resource[2].addr + rx_bar_off; PMD_INIT_LOG(DEBUG, "ctrl_bar: %p, tx_bar: %p, rx_bar: %p", - hw->ctrl_bar, hw->tx_bar, hw->rx_bar); + hw->super.ctrl_bar, hw->tx_bar, hw->rx_bar); nfp_net_cfg_queue_setup(hw); hw->mtu = RTE_ETHER_MTU; diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index cb64fa13c5..29f836c31e 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -536,12 +536,12 @@ nfp_net_write_mac(struct nfp_net_hw *hw, uint16_t mac1; mac0 = *(uint32_t *)mac; - nn_writel(rte_cpu_to_be_32(mac0), hw->ctrl_bar + NFP_NET_CFG_MACADDR); + nn_writel(rte_cpu_to_be_32(mac0), hw->super.ctrl_bar + NFP_NET_CFG_MACADDR); mac += 4; mac1 = *(uint16_t *)mac; nn_writew(rte_cpu_to_be_16(mac1), - hw->ctrl_bar + NFP_NET_CFG_MACADDR + 6); + hw->super.ctrl_bar + NFP_NET_CFG_MACADDR + 6); } int diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 4bfb3174b0..dd62ec6d83 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -113,6 +113,7 @@ struct nfp_app_fw_nic { }; struct nfp_hw { + uint8_t *ctrl_bar; uint8_t *qcp_cfg; uint32_t cap; uint32_t cap_ext; @@ -141,7 +142,6 @@ struct nfp_net_hw { /** Current values for control */ uint32_t ctrl; - uint8_t *ctrl_bar; uint8_t *tx_bar; uint8_t *rx_bar; @@ -251,7 +251,7 @@ static inline uint8_t nn_cfg_readb(struct nfp_net_hw *hw, uint32_t off) { - return nn_readb(hw->ctrl_bar + off); + return nn_readb(hw->super.ctrl_bar + off); } static inline void @@ -259,14 +259,14 @@ nn_cfg_writeb(struct nfp_net_hw *hw, uint32_t off, uint8_t val) { - nn_writeb(val, hw->ctrl_bar + off); + nn_writeb(val, hw->super.ctrl_bar + off); } static inline uint16_t nn_cfg_readw(struct nfp_net_hw *hw, uint32_t off) { - return rte_le_to_cpu_16(nn_readw(hw->ctrl_bar + off)); + return rte_le_to_cpu_16(nn_readw(hw->super.ctrl_bar + off)); } static inline void @@ -274,14 +274,14 @@ nn_cfg_writew(struct nfp_net_hw *hw, uint32_t off, uint16_t val) { - nn_writew(rte_cpu_to_le_16(val), hw->ctrl_bar + off); + nn_writew(rte_cpu_to_le_16(val), hw->super.ctrl_bar + off); } static inline uint32_t nn_cfg_readl(struct nfp_net_hw *hw, uint32_t off) { - return rte_le_to_cpu_32(nn_readl(hw->ctrl_bar + off)); + return rte_le_to_cpu_32(nn_readl(hw->super.ctrl_bar + off)); } static inline void @@ -289,14 +289,14 @@ nn_cfg_writel(struct nfp_net_hw *hw, uint32_t off, uint32_t val) { - nn_writel(rte_cpu_to_le_32(val), hw->ctrl_bar + off); + nn_writel(rte_cpu_to_le_32(val), hw->super.ctrl_bar + off); } static inline uint64_t nn_cfg_readq(struct nfp_net_hw *hw, uint32_t off) { - return rte_le_to_cpu_64(nn_readq(hw->ctrl_bar + off)); + return rte_le_to_cpu_64(nn_readq(hw->super.ctrl_bar + off)); } static inline void @@ -304,7 +304,7 @@ nn_cfg_writeq(struct nfp_net_hw *hw, uint32_t off, uint64_t val) { - nn_writeq(rte_cpu_to_le_64(val), hw->ctrl_bar + off); + nn_writeq(rte_cpu_to_le_64(val), hw->super.ctrl_bar + off); } /** diff --git a/drivers/net/nfp/nfp_net_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c index b0a427c98e..d469896a64 100644 --- a/drivers/net/nfp/nfp_net_ctrl.c +++ b/drivers/net/nfp/nfp_net_ctrl.c @@ -36,8 +36,8 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) caps = &hw->tlv_caps; nfp_net_tlv_caps_reset(caps); - data = hw->ctrl_bar + NFP_NET_CFG_TLV_BASE; - end = hw->ctrl_bar + NFP_NET_CFG_BAR_SZ; + data = hw->super.ctrl_bar + NFP_NET_CFG_TLV_BASE; + end = hw->super.ctrl_bar + NFP_NET_CFG_BAR_SZ; hdr = rte_read32(data); if (hdr == 0) { @@ -46,7 +46,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) } for (; ; data += length) { - offset = data - hw->ctrl_bar; + offset = data - hw->super.ctrl_bar; if (data + NFP_NET_CFG_TLV_VALUE > end) { PMD_DRV_LOG(ERR, "Reached end of BAR without END TLV"); @@ -87,7 +87,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) caps->mbox_len = length; if (length != 0) - caps->mbox_off = data - hw->ctrl_bar; + caps->mbox_off = data - hw->super.ctrl_bar; else caps->mbox_off = 0; break; From patchwork Tue Oct 24 02:28:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133213 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 A079D431EB; Tue, 24 Oct 2023 04:30:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E9ABF41148; Tue, 24 Oct 2023 04:29:56 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2093.outbound.protection.outlook.com [40.107.93.93]) by mails.dpdk.org (Postfix) with ESMTP id 30408410F6 for ; Tue, 24 Oct 2023 04:29:54 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jzm2zNcvJafY2ZX7PV635wSDgTOqBpzJZRurjTZgz1o7nEnpQb5Pio69h82/qwPd9LWw2OTy8FeyV1aguc6mqO4q39lOl8j6is1KhU6O+C8OSi3NXVPktxJg54bUR7rWpaNEeWDC++VUy7i7IaDgiV9uZZWXy890QS1bbS2l80N0fSvoXYEIl88dqFRl31+ksvrbJC8GGcaYUMdUlWJDGwGeDA0fk5LkScB3uX+pSMMr+nYTrmvuxPiTfJkOKos8dtopdSU2xVJ1R0qV3cv5m6J+NFxRaCTpSf3cgV82sEbNYDEDPzIEb3+RrUEMyPqvbUnN/FCZ2Z1NwgIpkD6tYA== 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=RRhMHhn0YXvamlaXgWH2i+WpWihtdLcmMZwtXwxDeso=; b=XLNVYdtPYfFC8/OcCfxZUAfRVGk/mX7zIWJrUTE5vW6ut1AlxrrtFaoaYTao+Fiy221eNa5iyaJjHxFu7XT8MAcxDodpRY5C6xiAjt7RDW4bsphrAWdjt5QSQLrV0CMmfOS0jUFmTbkeRBW/Lp16F0R2fgLLx657UJpc7om1zuHep8tPf9jFjnuSAMZ0kVlf6EFw9yvOrhCv2xPn3PsoojfVX0BubmE4hwbmlRrNIQQJWpBhMDFX8PLVpQdHdzDpVlh282CZAcICJb/HBxMcgG7mfwJHmQgbZd/u74pjLpWFWo5MBsoh2Abebn47otP1B6BZMMXlIrUTKxgQM6K2Bg== 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=RRhMHhn0YXvamlaXgWH2i+WpWihtdLcmMZwtXwxDeso=; b=oxI0laULTxQUaOKexymG30GCOPeq9xh2VkQYjit233cEDfWLq9JIwMZI9VD2DwowudfeyqNiO226hjoPSfW2cukT6tjHIr9nLhg83CiHw+9B5PRbcNeP3naVoaEq+aE97bU1xPmYoi1WUPA7YrLrFrRv2S56X0ztlxrKpf+nRfc= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:52 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:52 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 08/25] net/nfp: extract the ctrl data field Date: Tue, 24 Oct 2023 10:28:32 +0800 Message-Id: <20231024022849.3092506-9-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 21501d0b-7095-4d29-4d82-08dbd4391a1c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Cy18ynUggsTfbNE8zYDZs8qQbIJM53n7zJ5989VxoEwxFWrZOhmwWhalND2AP4eXcfW16bSsKfFH9vJ+50xhXrBgGQBkmQDKkyrGAivv154vV8jSI9QHXJNUl1INjDeGy0ZjD2vSvo/3gUvndpTiYZQ61kKW7GdPSl+tn3G0/9K6c/qxGrG6tWgG7QJ9pt+SUCSfIspVfSaf1/L4SX5MW9XEwxnnnOiF4IU8qFVH2paf0cWHlkEzpu6CPIWO8F3cX5hCHuLMfRNeGdU2AuycZEa8/pj08ergJwGXoTw7CIjktwdgv2i3gerJCYkxIaHOTH68XfkbWC2TzRsIY9CPD3zUslWTvKhQnWPJjDdcjnPhEJMWfvndVNvDGk/BPV1z0Aj5IhwZrCsSl2bpMqp44gLCrsFVMlA2hD/Ka77tz7FrcRg0B3tDKo9/GN13bLoJLQtM9s5rb49vjr4/qGTp8EQ8wIT9Mt6LNvS6RbVJomZnETiJLRW92F/UNaLt46S8HhUOHQ4eh2kjkAkK6HevUv9vijqRPkJpAP3s9Ibj3qSAEmkvKtCiQGNAUdSYQviL0kHA0rtAuagZjt2OOQv3GdLDd1VlAepC3dGqdy+hn64evBsfwHL/4wYBTcrb3u2vX29VR11deR6lmPcMc66s9wsJ+fBJBulKOpEnc5kMwqM= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: u5CrV9R3AVpvuyW9CCvBD00SMVCO7FfNaIQZBAAGK+SQrMbMit0yuKGItgULi19ib2x6n+eycWXAWmO7+q7GFpgM5vf1Bt1U8i+DQ1SGYF+/sHkMKD/nsHenOhaiMG2mw/qFboPWlGDl9/Kh9yyYmSRfSaAilV9LjnPfPEylS9g607dQ5X8ztQaCZuqk144NYJCqcFxXNV/hVB4D1vFNH1DMy01Qf5F6YVVmaz9f5Ks3mfXVOASV3OkwuD7B2vWWISN6Pk+EF2nZq6HNs1SyDCw4BsQ+ruTRwc9K+fEgqOtDFdZPYLdL5L8Q175/oBq9E2IeRRIDIvoWrTjuctxoyzdoF/pRa3cynNfDYW7pxZQn4FtDIwcSGFvbqv/RfHa+FAWFUY8A+6hD6XFz6FiBp5NnUmFaO/3a3JiKzgHNvyCyUxhAxiYKbUMkGf1O0q4TifbtpTugqiotv0X2LnYmiLrV+3YuPOC7jA0nTSf6b2zIqlwB9XmwKt8SH427WkLr+5s1Zg3QHB6PRB5pwNEd0pQJeAmTTjNB71Bp0Tc/Qkxv2h/zLd98iCBvGGELIzJ8uoRteEFPwUXEh56b5XyaCvBeB8kCY7Ju3yw7BrWz8++wFUPmHtUSmW6Ey5EF8P5SksividjoIdBMb+mCjtSk+AK2gSN5xOFFxxKAaX3X/u6dH41goD+wAD51OVd0gb7DZpygRv6t6Xm2mNthmTiH967uH+YNbJFDU+IfVWuYPZKVOhAn2uiLBf3l1WJRk/TIUBk+Ijz0AyOauJSpKi0XeXK9vmvLcwhzfPm03D5Zm8kApXC8KQTuHZA424z/zo1eXIVgDxy0E/bT0krfVZaUwWlLk/8Gc00HrT0Js/Ku8bmTaMuqWhji+H5HzisZunM4eRwgcn2ga5EfReS0UZ34IQ26lbNV3YsNtxGZFxgWo3mDZIts2/ideG/2PA5kD9spNlznsu7o8udXDZEsGmQOw3AFw/Or7yDpZh8/xthbzfaiUPb1fqbSn6pF4YJBdQ+hd9Sa5kWg5APFw5F0E/AlfGDV2SVjJSad0GjT60yuKiHQtxPtvxrgPcksyDSlo4jeNtb1kLs4Ai9PejnhX3CKuc3ns7Lufbgt6qMU5l3TgD8BalmFZCcEMdtyjLXeGLe43V4uuTsRaFSBb6dqlelNN3UZJncU8eMQBIBYVNuUize/dKS8c2wLSFCL7+xvx0IK9IJzfQTrpBjdy4V7JBS3/jpw/fr7M4Yy7HQq/MMWI3T6veMdku5ogr3JSvzPzkvqCNoRj/Y8onbQ2grSZe/eEK0txZu2++Rvw+KDRhMqBadKQjIFSOrZZu+qagU2PDSZ0CH3JHfEtHJSBOhO7EkaR7X7xKuM5cF14okLxDiev+w8RQ4eMKI7Juf8Ec/2fnD9+Oh0/wPIES69NY7q6pZgkLBfBN/r9AY/RIx+dkQC3tgefZ88R10/m4pYxa/m16TB1ULg9x27p+72nHkrL4LMAj13vqk++s42clHG9d9YvFxxim5UjIhulWKNIwvts+WwtbQESysBjGQpnevcUS2pYieqplBi8UCTSuZxAmFCeD4PQ961qg5mJX3mPe4wE6dyETwTcvy+ydl9juvGmiOCuw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 21501d0b-7095-4d29-4d82-08dbd4391a1c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:52.2192 (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: 6cm22xz9lG5LAcmlYtVUOyFkog7a0dMaxl5f08tRIHybwfkazJLwbihJEF8e3XJC5ui9t0/eo4pnJAj+FCCxmQNmTyziKZ5oPmGCMZjDcFY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 Extract the 'ctrl' data filed into the super class, prepare for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.c | 8 ++--- drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 2 +- drivers/net/nfp/nfdk/nfp_nfdk_dp.c | 2 +- drivers/net/nfp/nfp_ethdev.c | 4 ++- drivers/net/nfp/nfp_ethdev_vf.c | 2 +- drivers/net/nfp/nfp_net_common.c | 46 ++++++++++++++--------------- drivers/net/nfp/nfp_net_common.h | 5 ++-- drivers/net/nfp/nfp_rxtx.c | 12 ++++---- 8 files changed, 41 insertions(+), 40 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index c8455e0241..8bb5914888 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -61,7 +61,7 @@ nfp_pf_repr_disable_queues(struct rte_eth_dev *dev) nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; + new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | NFP_NET_CFG_UPDATE_MSIX; @@ -72,7 +72,7 @@ nfp_pf_repr_disable_queues(struct rte_eth_dev *dev) if (nfp_net_reconfig(hw, new_ctrl, update) != 0) return; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; } int @@ -123,7 +123,7 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) return -EIO; } - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; /* Setup the freelist ring */ ret = nfp_net_rx_freelist_setup(dev); @@ -721,7 +721,7 @@ nfp_flower_start_ctrl_vnic(struct nfp_net_hw *hw) return -EIO; } - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; /* Setup the freelist ring */ ret = nfp_net_rx_freelist_setup(dev); diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c index bbf4530ae9..3045533857 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c +++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c @@ -154,7 +154,7 @@ nfp_net_nfd3_set_meta_data(struct nfp_net_meta_raw *meta_data, cap_extend = hw->super.cap_ext; if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) != 0 && - (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { + (hw->super.ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { if (meta_data->length == 0) meta_data->length = NFP_NET_META_HEADER_SIZE; meta_data->length += NFP_NET_META_FIELD_SIZE; diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c index 807666686f..63421ba796 100644 --- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c +++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c @@ -187,7 +187,7 @@ nfp_net_nfdk_set_meta_data(struct rte_mbuf *pkt, cap_extend = hw->super.cap_ext; if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) != 0 && - (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { + (hw->super.ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { if (meta_data.length == 0) meta_data.length = NFP_NET_META_HEADER_SIZE; meta_data.length += NFP_NET_META_FIELD_SIZE; diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index b7c60b642f..0f6f97be8e 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -152,6 +152,8 @@ nfp_net_start(struct rte_eth_dev *dev) if (nfp_net_ext_reconfig(hw, ctrl_extend, update) != 0) return -EIO; + hw->super.ctrl_ext = ctrl_extend; + /* * Allocating rte mbufs for configured rx queues. * This requires queues being enabled before. @@ -167,7 +169,7 @@ nfp_net_start(struct rte_eth_dev *dev) else nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 1); - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; for (i = 0; i < dev->data->nb_rx_queues; i++) dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED; diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 641fed6fcf..684968903c 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -110,7 +110,7 @@ nfp_netvf_start(struct rte_eth_dev *dev) goto error; } - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; for (i = 0; i < dev->data->nb_rx_queues; i++) dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED; diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 29f836c31e..058260bda3 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -500,7 +500,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; + new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | NFP_NET_CFG_UPDATE_MSIX; @@ -512,7 +512,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) if (nfp_net_reconfig(hw, new_ctrl, update) != 0) return; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; } void @@ -553,7 +553,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, struct nfp_net_hw *hw; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && (hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) { PMD_DRV_LOG(ERR, "MAC address unable to change when port enabled"); return -EBUSY; @@ -563,8 +563,8 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, nfp_net_write_mac(hw, (uint8_t *)mac_addr); update = NFP_NET_CFG_UPDATE_MACADDR; - ctrl = hw->ctrl; - if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && + ctrl = hw->super.ctrl; + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && (hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) != 0) ctrl |= NFP_NET_CFG_CTRL_LIVE_ADDR; @@ -613,7 +613,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev, } /* Avoiding TX interrupts */ - hw->ctrl |= NFP_NET_CFG_CTRL_MSIX_TX_OFF; + hw->super.ctrl |= NFP_NET_CFG_CTRL_MSIX_TX_OFF; return 0; } @@ -705,19 +705,19 @@ nfp_net_promisc_enable(struct rte_eth_dev *dev) return -ENOTSUP; } - if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) != 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_PROMISC) != 0) { PMD_DRV_LOG(INFO, "Promiscuous mode already enabled"); return 0; } - new_ctrl = hw->ctrl | NFP_NET_CFG_CTRL_PROMISC; + new_ctrl = hw->super.ctrl | NFP_NET_CFG_CTRL_PROMISC; update = NFP_NET_CFG_UPDATE_GEN; ret = nfp_net_reconfig(hw, new_ctrl, update); if (ret != 0) return ret; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; return 0; } @@ -732,19 +732,19 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev) hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) { PMD_DRV_LOG(INFO, "Promiscuous mode already disabled"); return 0; } - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_PROMISC; + new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_PROMISC; update = NFP_NET_CFG_UPDATE_GEN; ret = nfp_net_reconfig(hw, new_ctrl, update); if (ret != 0) return ret; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; return 0; } @@ -1349,7 +1349,7 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, else hw->rx_offset = nn_cfg_readl(hw, NFP_NET_CFG_RX_OFFSET_ADDR); - hw->ctrl = 0; + hw->super.ctrl = 0; hw->stride_rx = stride; hw->stride_tx = stride; @@ -1453,7 +1453,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev) /* Make sure all updates are written before un-masking */ rte_wmb(); - if ((hw->ctrl & NFP_NET_CFG_CTRL_MSIXAUTO) != 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_MSIXAUTO) != 0) { /* If MSI-X auto-masking is used, clear the entry */ rte_intr_ack(pci_dev->intr_handle); } else { @@ -1559,7 +1559,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); rx_offload = dev->data->dev_conf.rxmode.offloads; - new_ctrl = hw->ctrl; + new_ctrl = hw->super.ctrl; /* VLAN stripping setting */ if ((mask & RTE_ETH_VLAN_STRIP_MASK) != 0) { @@ -1578,7 +1578,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, new_ctrl &= ~NFP_NET_CFG_CTRL_RXQINQ; } - if (new_ctrl == hw->ctrl) + if (new_ctrl == hw->super.ctrl) return 0; update = NFP_NET_CFG_UPDATE_GEN; @@ -1587,7 +1587,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, if (ret != 0) return ret; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; return 0; } @@ -1660,7 +1660,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev, struct nfp_net_hw *hw; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; ret = nfp_net_rss_reta_write(dev, reta_conf, reta_size); @@ -1669,7 +1669,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev, update = NFP_NET_CFG_UPDATE_RSS; - if (nfp_net_reconfig(hw, hw->ctrl, update) != 0) + if (nfp_net_reconfig(hw, hw->super.ctrl, update) != 0) return -EIO; return 0; @@ -1690,7 +1690,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev, struct nfp_net_hw *hw; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) { @@ -1795,7 +1795,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev, rss_hf = rss_conf->rss_hf; /* Checking if RSS is enabled */ - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) { if (rss_hf != 0) { PMD_DRV_LOG(ERR, "RSS unsupported"); return -EINVAL; @@ -1813,7 +1813,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev, update = NFP_NET_CFG_UPDATE_RSS; - if (nfp_net_reconfig(hw, hw->ctrl, update) != 0) + if (nfp_net_reconfig(hw, hw->super.ctrl, update) != 0) return -EIO; return 0; @@ -1831,7 +1831,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; rss_hf = rss_conf->rss_hf; diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index dd62ec6d83..3fb3b34613 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -117,6 +117,8 @@ struct nfp_hw { uint8_t *qcp_cfg; uint32_t cap; uint32_t cap_ext; + uint32_t ctrl; + uint32_t ctrl_ext; }; struct nfp_net_hw { @@ -139,9 +141,6 @@ struct nfp_net_hw { /** NFP ASIC params */ const struct nfp_dev_info *dev_info; - /** Current values for control */ - uint32_t ctrl; - uint8_t *tx_bar; uint8_t *rx_bar; diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index a0c7e0e9b5..a9dd464a6a 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -143,7 +143,7 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXCSUM) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXCSUM) == 0) return; /* If IPv4 and IP checksum error, fail */ @@ -307,7 +307,7 @@ nfp_net_parse_meta_hash(const struct nfp_meta_parsed *meta, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return; mbuf->hash.rss = meta->hash; @@ -339,7 +339,7 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, struct nfp_net_hw *hw = rxq->hw; /* Skip if firmware don't support setting vlan. */ - if ((hw->ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) + if ((hw->super.ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) return; /* @@ -347,12 +347,12 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, * 1. Using the metadata when NFP_NET_CFG_CTRL_RXVLAN_V2 is set, * 2. Using the descriptor when NFP_NET_CFG_CTRL_RXVLAN is set. */ - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { if (meta->vlan_layer > 0 && meta->vlan[0].offload != 0) { mb->vlan_tci = rte_cpu_to_le_32(meta->vlan[0].tci); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; } - } else if ((hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { + } else if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { if ((rxd->rxd.flags & PCIE_DESC_RX_VLAN) != 0) { mb->vlan_tci = rte_cpu_to_le_32(rxd->rxd.offload_info); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; @@ -385,7 +385,7 @@ nfp_net_parse_meta_qinq(const struct nfp_meta_parsed *meta, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || (hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) return; From patchwork Tue Oct 24 02:28:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133214 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 7FD47431EB; Tue, 24 Oct 2023 04:30:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0F9B5427E3; Tue, 24 Oct 2023 04:30:00 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2111.outbound.protection.outlook.com [40.107.93.111]) by mails.dpdk.org (Postfix) with ESMTP id 8553D41140 for ; Tue, 24 Oct 2023 04:29:56 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K/s0z5MLjpNsWFF2IZud6gHNfIYBDLbQns7OwIvaMp7AOVDrtMhK99jG3EIFod6QU2ujiX6MmF0F3jieEgVnTQ1Srubum8f+duI7EbMeu1xCkZLM6cWMVoi5FnysTU736SU5JTEqnNTL8X0yq6hzvBfEoK2KSh8IDnR7ShZoEb4Zvvy8OcFDP+iEOYs3kJ/hu8KA7e9sLJ+atz3ffY3zgj3FluVX5b5V9gp5IkjKB57B3TSYRBJTy1cXisZXm+HE2a+1EN4wGTL/DecIxdPsrxD4EjRJXOUgniE3Xhey5I4G2cJ4cb6epdl39C0gucDJBHfYDwn/Y3VAbscVXWv2Ig== 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=sNizU26KCgxiSonNKoeypW5/IWA+SPqNo20x+Kh3Z6M=; b=eqsK1l3Ruq5q0wGuOvLtAm3gs9fCU+jU5gGlyVvcwmdo6fOWW1OrCehJxYGfsU4jTI9U5U01Feg9WF7GpGRihBPEfDQEZAOvo/AWrjDK0uP19ACWVZ8ynsDVRkTiI4eg4aAhE0f+5223fPz4DCZghVnE9AvBZtyNvmYmZPgN6Ox2vi+41/r+6B0WsomZSQ6dr11ccoIwUWeTCpfcaDVCUuAA6QCP5xBOnc6rCB5U1bVPSHqOYSQaPu7qVEuTIoNenEb0QYps9Qvor4awuBcczj90ZBH9CHFnWyxNbkubprcu+CWe6A1wzvDm8spHRybaYB9s4jo6bcz95eDKbwD7+A== 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=sNizU26KCgxiSonNKoeypW5/IWA+SPqNo20x+Kh3Z6M=; b=DJcqKlueQyGLx5O9ymq82GjeiYyeyZGTc3gg+TzICUVQ+4hri0Iv9ZM1R/Y5DcP+EM/cf0OExJabyXobiZ3GYEQuTe45q5TO8KkHUqNV08l+I7/+ekKqmftYqYrz070xo1UIqRFFDlE5VIZZmuXGVLp/r5TJo7BBJ5aiItzwqIo= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:54 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:54 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 09/25] net/nfp: change the parameter of APIs Date: Tue, 24 Oct 2023 10:28:33 +0800 Message-Id: <20231024022849.3092506-10-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 856a9058-f06f-4dfe-67ef-08dbd4391b3a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RILNWsa2gNl8KQERL4OhyySfs3J7zLp7oD7mxXR0zRxCbSZEueu4RFAxHcekOl1qCOttTqnjqnnsYHYFYVJrVfhzEEGEYD8uLGJ+nOTAT3F4I4D4xT5GL8ajx0rTYawBdOU2AAgPwSY4Az6Eh3McGn7CObe7zY7t9xT6EiObUOWOmTAI26bN1WaHd57RIDwo8oxWKgKhnlwz8+Ggw1JOtobqmfAYHxY4if2hKWcAVHPSA1ybJnZZKkCdnoqvH0CIF28PNp7oBtHPCVLfCjE/XZNqPZeE+Xxo/Ahd3vEo16s5MRM5/H1mZtvmQ2fsTQln+bHLb3v+SK6l19ncFN32dKJLPMJFyUHjv1yQUwCvzMiLYOr/rjJ+x0aPtryafZv5NFoypACGNu0v1+mvuCR+ulfqQaUz5wxLkaeKOMNHWON3BBgA4mROk8VapdQRSgDEEJnFKNdQqEL+rUFM+TSkL6h8rmRciSZAjo+6/3XYzaDBwN7uqbbGoNLq2LRm+gvZtC2IU2qhxHqI5Gt989NfrLkkzdF14IM2oPrxutqC+AvDVUxmXYrK9jH/Ki2pPs85GJU5S0DLvjjNRtOf++VEGbskhSL0Tc/Jyy9X4KCROdjybypEHKDKxsyrfzaZnQl03hv4ryI3c8v4pN536vGgkPUR+PVxT56NItCUdBTSnEU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kTddR5RAdPmNbh6Uhq6+xuQHxMRaKjFMV5BHSp3uawvy7hB+Hn+lLpJictRd+aPIYO5/BFwK25pyXW4zehpcWqVks37BPJ9Rt8WApGWjAI0+n8vkSA6HqqkaARcetK3XehiF2MQuzoBi1CMhKSziBdosPixxcbB5qIokt/oBZFAGoonds0V5ieW/YJ2q+VdA1zhVqcwpYP/2F1Uc37okoSg3BMjasXigCMmPn6BZom7VGsl12d/dY8zRvQJT5Rt6FtkDJcq7Qmn8heFIzJW7kgKLQthttK+cMuJkgAwUZMHqbYus1CzfWxw+N+5nMdAP0FcqbjdnYO7qL3t21ll8MfsH2Q9BdYDpsYQTxI+BE05bGMqmGNUJ+kfpVIeYuj7PXzoHFwxj7QhUVKBvsSXGQTKLW4e1Dv5y2YyoZzWxzkAf8IXP205V5iYbLkImzR8sVZ4CtS9lDb13WRrBGeVenr4Iqf7GGTh9Wg+33dBCh4U1CWucXhh9273C/4sliRRYX7NLAGIXoVWN7LBd7/wEetpPlQMh2Z/kGCmAahtlBtqH3gFHu2XQKA7ueFcJTUVtSC+X50ya2LCCPhHYkt/nrZKX5G3lA/qQ/aMMsMPMuSbTFcG1osu0QvHixQ97U8NrCyM55FWkJc3cr9CyjVVnqtOCzk75+epDYEqfj4Q9gEguzwuhHd0wHU4G5kUkK6A6Qx0OAr/HkQcjakIFxz1wqZtigrpYu/9RzX5+YhhW50Ic83KhoPfQKgW9EjP3NmFh9+wDhd0RTtIZXFEF5BN7ERBFNj88sjVksH7BW0K2s6vcukrxVrXBlrniHrZ9hd7g0oMUXeMmdhljzeupvODRIMLco667hTwcrsTCtqbKgAOUTmKaQ+cXfvRLrH8tV++QBHA7SF2dOHp8TKaqCSPv2jm3/+vgGySB4wuh0HvMBpCn1rZyTkhosFJqPbaZOg4eGQ7H7HUV6aMv4MoYMYg7p+IENU3lpkiF89rw4SdOjtj8QBtNCxvWq+0i1K8Xqa0l3htAQ7luU6VAoarf6tQWxnjQYh3pF6bMgfvQG5BLvD+0MdBZcvBURINYug4UNV9i6eIzZ3TFnWAUNWOjSbpy87RbUUVSLr9W6+WgRyxxIcH5Wkg9mbxPBtWh4UQ2pLmsS1robY7nQvqldtD43BSn4sbk0JqIBqQjEQC6xtH8jmGDd9kIRfW4wfJtCXiEp98F8TgcUOtXdpqwm9x9nvM+jLuBjFf/QWlu4vRwVj4Lmkyco6ex6giIgDkrPzFd8z0xhW49Z/iG/ugLymjMWCp0Lj4UlmrNYoGDW/kcFkEdV4S6DfykeeSn71hOH8K3o8VPJIZszhNFUwH/nYc+4q4eW71e6Xeg2eeUtKjE7wJQlYrNF35K8AYdWHlwO/bnyTw4maoKNwK6XKqtvD8HpFYdWgBho/qpN8wqXt/mbzP8VYHBYyVCT2APeKe/jO3qjXqcm2BrAwGIMCTq8v83VxGgcNb/3vi3WRa1kbpdKMvEjl1F4CQ6w8CMZDuI7JpycdUbdvm9bExinV4m1g5jrV+MpVxDp5vILT7RLKfhIJyO7j6CvxQJtnpH0B7aLEH/Fp/rBxWwV63j4pEuEb3FEzINdQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 856a9058-f06f-4dfe-67ef-08dbd4391b3a X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:54.0981 (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: V1yFdyqaN4gyXT4zIRu/snsEdgRxnGGYqIVnNl1BdicYl9rfIs6Jkot5ZKCPSFsBJBcFgyEtNCIAaVS3szaBfKSvOAgEHi1Th6C4lZ8uPps= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 Change the parameter of some APIs from 'struct nfp_net_hw' into the super class 'struct nfp_hw', prepare for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.c | 24 ++-- .../net/nfp/flower/nfp_flower_representor.c | 10 +- drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 4 +- drivers/net/nfp/nfdk/nfp_nfdk_dp.c | 4 +- drivers/net/nfp/nfp_ethdev.c | 8 +- drivers/net/nfp/nfp_ethdev_vf.c | 12 +- drivers/net/nfp/nfp_ipsec.c | 4 +- drivers/net/nfp/nfp_net_common.c | 129 +++++++++--------- drivers/net/nfp/nfp_net_common.h | 32 ++--- drivers/net/nfp/nfp_rxtx.c | 4 +- 10 files changed, 116 insertions(+), 115 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 8bb5914888..ccb579541b 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -36,7 +36,7 @@ nfp_pf_repr_enable_queues(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_tx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); enabled_queues = 0; @@ -44,7 +44,7 @@ nfp_pf_repr_enable_queues(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_rx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); } static void @@ -58,8 +58,8 @@ nfp_pf_repr_disable_queues(struct rte_eth_dev *dev) repr = dev->data->dev_private; hw = repr->app_fw_flower->pf_hw; - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, 0); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, 0); new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | @@ -114,7 +114,7 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; - nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl); + nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, new_ctrl); /* If an error when reconfig we avoid to change hw state */ ret = nfp_net_reconfig(hw, new_ctrl, update); @@ -219,7 +219,7 @@ nfp_flower_pf_close(struct rte_eth_dev *dev) /* Cancel possible impending LSC work here before releasing the port */ rte_eal_alarm_cancel(nfp_net_dev_interrupt_delayed_handler, (void *)dev); - nn_cfg_writeb(hw, NFP_NET_CFG_LSC, 0xff); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, 0xff); /* Now it is safe to free all PF resources */ PMD_DRV_LOG(INFO, "Freeing PF resources"); @@ -356,9 +356,9 @@ nfp_flower_init_vnic_common(struct nfp_net_hw *hw, return err; /* Work out where in the BAR the queues start */ - start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); + start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_TXQ); tx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ; - start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); + start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_RXQ); rx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ; hw->tx_bar = pf_dev->qc_bar + tx_bar_off; @@ -543,8 +543,8 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) * Telling the HW about the physical address of the RX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(i), rxq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(i), rxq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); } snprintf(ctrl_txring_name, sizeof(ctrl_txring_name), "%s_cttx_ring", pci_name); @@ -608,8 +608,8 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) * Telling the HW about the physical address of the TX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(i), txq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(i), txq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); } return 0; diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index 650f09a475..b52c6f514a 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -97,8 +97,8 @@ nfp_pf_repr_rx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the RX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); return 0; } @@ -181,8 +181,8 @@ nfp_pf_repr_tx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the TX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(nb_desc)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(nb_desc)); return 0; } @@ -228,7 +228,7 @@ nfp_flower_repr_link_update(struct rte_eth_dev *dev, } } } else { - nn_link_status = nn_cfg_readw(pf_hw, NFP_NET_CFG_STS); + nn_link_status = nn_cfg_readw(&pf_hw->super, NFP_NET_CFG_STS); nn_link_status = (nn_link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) & NFP_NET_CFG_STS_LINK_RATE_MASK; diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c index 3045533857..c85fadc80d 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c +++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c @@ -465,8 +465,8 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the TX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count)); return 0; } diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c index 63421ba796..3f8d25aa29 100644 --- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c +++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c @@ -542,8 +542,8 @@ nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the TX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count)); return 0; } diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 0f6f97be8e..a773a81e55 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -286,7 +286,7 @@ nfp_net_close(struct rte_eth_dev *dev) /* Only free PF resources after all physical ports have been closed */ /* Mark this port as unused and free device priv resources */ - nn_cfg_writeb(hw, NFP_NET_CFG_LSC, 0xff); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, 0xff); app_fw_nic->ports[hw->idx] = NULL; for (i = 0; i < app_fw_nic->total_phyports; i++) { @@ -567,8 +567,8 @@ nfp_net_init(struct rte_eth_dev *eth_dev) } /* Work out where in the BAR the queues start. */ - tx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); - rx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); + tx_base = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_TXQ); + rx_base = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_RXQ); hw->tx_bar = pf_dev->qc_bar + tx_base * NFP_QCP_QUEUE_ADDR_SZ; hw->rx_bar = pf_dev->qc_bar + rx_base * NFP_QCP_QUEUE_ADDR_SZ; @@ -625,7 +625,7 @@ nfp_net_init(struct rte_eth_dev *eth_dev) rte_intr_callback_register(pci_dev->intr_handle, nfp_net_dev_interrupt_handler, (void *)eth_dev); /* Telling the firmware about the LSC interrupt entry */ - nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); /* Recording current stats counters values */ nfp_net_stats_reset(eth_dev); diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 684968903c..7fb2a3d378 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -20,10 +20,10 @@ nfp_netvf_read_mac(struct nfp_net_hw *hw) { uint32_t tmp; - tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR)); + tmp = rte_be_to_cpu_32(nn_cfg_readl(&hw->super, NFP_NET_CFG_MACADDR)); memcpy(&hw->mac_addr.addr_bytes[0], &tmp, 4); - tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR + 4)); + tmp = rte_be_to_cpu_32(nn_cfg_readl(&hw->super, NFP_NET_CFG_MACADDR + 4)); memcpy(&hw->mac_addr.addr_bytes[4], &tmp, 2); } @@ -97,7 +97,7 @@ nfp_netvf_start(struct rte_eth_dev *dev) if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; - nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl); + nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, new_ctrl); if (nfp_net_reconfig(hw, new_ctrl, update) != 0) return -EIO; @@ -299,9 +299,9 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) } /* Work out where in the BAR the queues start. */ - start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); + start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_TXQ); tx_bar_off = nfp_qcp_queue_offset(dev_info, start_q); - start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); + start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_RXQ); rx_bar_off = nfp_qcp_queue_offset(dev_info, start_q); hw->tx_bar = (uint8_t *)pci_dev->mem_resource[2].addr + tx_bar_off; @@ -357,7 +357,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) rte_intr_callback_register(pci_dev->intr_handle, nfp_net_dev_interrupt_handler, (void *)eth_dev); /* Telling the firmware about the LSC interrupt entry */ - nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); /* Recording current stats counters values */ nfp_net_stats_reset(eth_dev); } diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index e080e71db2..0da5c2a3d2 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -445,7 +445,7 @@ nfp_ipsec_cfg_cmd_issue(struct nfp_net_hw *hw, msg->rsp = NFP_IPSEC_CFG_MSG_OK; for (i = 0; i < msg_size; i++) - nn_cfg_writel(hw, NFP_NET_CFG_MBOX_VAL + 4 * i, msg->raw[i]); + nn_cfg_writel(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i, msg->raw[i]); ret = nfp_net_mbox_reconfig(hw, NFP_NET_CFG_MBOX_CMD_IPSEC); if (ret < 0) { @@ -459,7 +459,7 @@ nfp_ipsec_cfg_cmd_issue(struct nfp_net_hw *hw, * response. One example where the data is needed is for statistics. */ for (i = 0; i < msg_size; i++) - msg->raw[i] = nn_cfg_readl(hw, NFP_NET_CFG_MBOX_VAL + 4 * i); + msg->raw[i] = nn_cfg_readl(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i); switch (msg->rsp) { case NFP_IPSEC_CFG_MSG_OK: diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 058260bda3..2ab8d8fadd 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -182,7 +182,8 @@ nfp_net_notify_port_speed(struct nfp_net_hw *hw, * NFP_NET_CFG_STS_NSP_LINK_RATE. */ if (link->link_status == RTE_ETH_LINK_DOWN) { - nn_cfg_writew(hw, NFP_NET_CFG_STS_NSP_LINK_RATE, NFP_NET_CFG_STS_LINK_RATE_UNKNOWN); + nn_cfg_writew(&hw->super, NFP_NET_CFG_STS_NSP_LINK_RATE, + NFP_NET_CFG_STS_LINK_RATE_UNKNOWN); return; } @@ -190,7 +191,7 @@ nfp_net_notify_port_speed(struct nfp_net_hw *hw, * Link is up so write the link speed from the eth_table to * NFP_NET_CFG_STS_NSP_LINK_RATE. */ - nn_cfg_writew(hw, NFP_NET_CFG_STS_NSP_LINK_RATE, + nn_cfg_writew(&hw->super, NFP_NET_CFG_STS_NSP_LINK_RATE, nfp_net_link_speed_rte2nfp(link->link_speed)); } @@ -222,7 +223,7 @@ __nfp_net_reconfig(struct nfp_net_hw *hw, /* Poll update field, waiting for NFP to ack the config */ for (cnt = 0; ; cnt++) { - new = nn_cfg_readl(hw, NFP_NET_CFG_UPDATE); + new = nn_cfg_readl(&hw->super, NFP_NET_CFG_UPDATE); if (new == 0) break; @@ -270,8 +271,8 @@ nfp_net_reconfig(struct nfp_net_hw *hw, rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(hw, NFP_NET_CFG_CTRL, ctrl); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); + nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, ctrl); + nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, update); rte_wmb(); @@ -314,8 +315,8 @@ nfp_net_ext_reconfig(struct nfp_net_hw *hw, rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(hw, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); + nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); + nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, update); rte_wmb(); @@ -355,8 +356,8 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *hw, rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writeq(hw, mbox + NFP_NET_CFG_MBOX_SIMPLE_CMD, mbox_cmd); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_MBOX); + nn_cfg_writeq(&hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_CMD, mbox_cmd); + nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_MBOX); rte_wmb(); @@ -370,7 +371,7 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *hw, return -EIO; } - return nn_cfg_readl(hw, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET); + return nn_cfg_readl(&hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET); } /* @@ -478,14 +479,14 @@ nfp_net_enable_queues(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_tx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); /* Enabling the required RX queues in the device */ enabled_queues = 0; for (i = 0; i < dev->data->nb_rx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); } void @@ -497,8 +498,8 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, 0); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, 0); new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | @@ -518,8 +519,8 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) void nfp_net_params_setup(struct nfp_net_hw *hw) { - nn_cfg_writel(hw, NFP_NET_CFG_MTU, hw->mtu); - nn_cfg_writel(hw, NFP_NET_CFG_FLBUFSZ, hw->flbufsz); + nn_cfg_writel(&hw->super, NFP_NET_CFG_MTU, hw->mtu); + nn_cfg_writel(&hw->super, NFP_NET_CFG_FLBUFSZ, hw->flbufsz); } void @@ -596,7 +597,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev, if (rte_intr_type_get(intr_handle) == RTE_INTR_HANDLE_UIO) { PMD_DRV_LOG(INFO, "VF: enabling RX interrupt with UIO"); /* UIO just supports one queue and no LSC */ - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_VEC(0), 0); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_VEC(0), 0); if (rte_intr_vec_list_index_set(intr_handle, 0, 0) != 0) return -1; } else { @@ -606,7 +607,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev, * The first msix vector is reserved for non * efd interrupts. */ - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_VEC(i), i + 1); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_VEC(i), i + 1); if (rte_intr_vec_list_index_set(intr_handle, i, i + 1) != 0) return -1; } @@ -771,7 +772,7 @@ nfp_net_link_update(struct rte_eth_dev *dev, memset(&link, 0, sizeof(struct rte_eth_link)); /* Read link status */ - nn_link_status = nn_cfg_readw(hw, NFP_NET_CFG_STS); + nn_link_status = nn_cfg_readw(&hw->super, NFP_NET_CFG_STS); if ((nn_link_status & NFP_NET_CFG_STS_LINK) != 0) link.link_status = RTE_ETH_LINK_UP; @@ -842,12 +843,12 @@ nfp_net_stats_get(struct rte_eth_dev *dev, break; nfp_dev_stats.q_ipackets[i] = - nn_cfg_readq(hw, NFP_NET_CFG_RXR_STATS(i)); + nn_cfg_readq(&hw->super, NFP_NET_CFG_RXR_STATS(i)); nfp_dev_stats.q_ipackets[i] -= hw->eth_stats_base.q_ipackets[i]; nfp_dev_stats.q_ibytes[i] = - nn_cfg_readq(hw, NFP_NET_CFG_RXR_STATS(i) + 0x8); + nn_cfg_readq(&hw->super, NFP_NET_CFG_RXR_STATS(i) + 0x8); nfp_dev_stats.q_ibytes[i] -= hw->eth_stats_base.q_ibytes[i]; } @@ -858,42 +859,42 @@ nfp_net_stats_get(struct rte_eth_dev *dev, break; nfp_dev_stats.q_opackets[i] = - nn_cfg_readq(hw, NFP_NET_CFG_TXR_STATS(i)); + nn_cfg_readq(&hw->super, NFP_NET_CFG_TXR_STATS(i)); nfp_dev_stats.q_opackets[i] -= hw->eth_stats_base.q_opackets[i]; nfp_dev_stats.q_obytes[i] = - nn_cfg_readq(hw, NFP_NET_CFG_TXR_STATS(i) + 0x8); + nn_cfg_readq(&hw->super, NFP_NET_CFG_TXR_STATS(i) + 0x8); nfp_dev_stats.q_obytes[i] -= hw->eth_stats_base.q_obytes[i]; } - nfp_dev_stats.ipackets = nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_FRAMES); + nfp_dev_stats.ipackets = nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_FRAMES); nfp_dev_stats.ipackets -= hw->eth_stats_base.ipackets; - nfp_dev_stats.ibytes = nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_OCTETS); + nfp_dev_stats.ibytes = nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_OCTETS); nfp_dev_stats.ibytes -= hw->eth_stats_base.ibytes; nfp_dev_stats.opackets = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_FRAMES); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_FRAMES); nfp_dev_stats.opackets -= hw->eth_stats_base.opackets; nfp_dev_stats.obytes = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_OCTETS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_OCTETS); nfp_dev_stats.obytes -= hw->eth_stats_base.obytes; /* Reading general device stats */ nfp_dev_stats.ierrors = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_ERRORS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_ERRORS); nfp_dev_stats.ierrors -= hw->eth_stats_base.ierrors; nfp_dev_stats.oerrors = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_ERRORS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_ERRORS); nfp_dev_stats.oerrors -= hw->eth_stats_base.oerrors; /* RX ring mbuf allocation failures */ nfp_dev_stats.rx_nombuf = dev->data->rx_mbuf_alloc_failed; nfp_dev_stats.imissed = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_DISCARDS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_DISCARDS); nfp_dev_stats.imissed -= hw->eth_stats_base.imissed; memcpy(stats, &nfp_dev_stats, sizeof(*stats)); @@ -918,10 +919,10 @@ nfp_net_stats_reset(struct rte_eth_dev *dev) break; hw->eth_stats_base.q_ipackets[i] = - nn_cfg_readq(hw, NFP_NET_CFG_RXR_STATS(i)); + nn_cfg_readq(&hw->super, NFP_NET_CFG_RXR_STATS(i)); hw->eth_stats_base.q_ibytes[i] = - nn_cfg_readq(hw, NFP_NET_CFG_RXR_STATS(i) + 0x8); + nn_cfg_readq(&hw->super, NFP_NET_CFG_RXR_STATS(i) + 0x8); } /* Reading per TX ring stats */ @@ -930,36 +931,36 @@ nfp_net_stats_reset(struct rte_eth_dev *dev) break; hw->eth_stats_base.q_opackets[i] = - nn_cfg_readq(hw, NFP_NET_CFG_TXR_STATS(i)); + nn_cfg_readq(&hw->super, NFP_NET_CFG_TXR_STATS(i)); hw->eth_stats_base.q_obytes[i] = - nn_cfg_readq(hw, NFP_NET_CFG_TXR_STATS(i) + 0x8); + nn_cfg_readq(&hw->super, NFP_NET_CFG_TXR_STATS(i) + 0x8); } hw->eth_stats_base.ipackets = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_FRAMES); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_FRAMES); hw->eth_stats_base.ibytes = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_OCTETS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_OCTETS); hw->eth_stats_base.opackets = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_FRAMES); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_FRAMES); hw->eth_stats_base.obytes = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_OCTETS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_OCTETS); /* Reading general device stats */ hw->eth_stats_base.ierrors = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_ERRORS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_ERRORS); hw->eth_stats_base.oerrors = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_ERRORS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_ERRORS); /* RX ring mbuf allocation failures */ dev->data->rx_mbuf_alloc_failed = 0; hw->eth_stats_base.imissed = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_DISCARDS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_DISCARDS); return 0; } @@ -1012,7 +1013,7 @@ nfp_net_xstats_value(const struct rte_eth_dev *dev, if (xstat.group == NFP_XSTAT_GROUP_MAC) value = nn_readq(hw->mac_stats + xstat.offset); else - value = nn_cfg_readq(hw, xstat.offset); + value = nn_cfg_readq(&hw->super, xstat.offset); if (raw) return value; @@ -1320,8 +1321,8 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, hw->subsystem_device_id = pci_dev->id.subsystem_device_id; hw->subsystem_vendor_id = pci_dev->id.subsystem_vendor_id; - hw->max_rx_queues = nn_cfg_readl(hw, NFP_NET_CFG_MAX_RXRINGS); - hw->max_tx_queues = nn_cfg_readl(hw, NFP_NET_CFG_MAX_TXRINGS); + hw->max_rx_queues = nn_cfg_readl(&hw->super, NFP_NET_CFG_MAX_RXRINGS); + hw->max_tx_queues = nn_cfg_readl(&hw->super, NFP_NET_CFG_MAX_TXRINGS); if (hw->max_rx_queues == 0 || hw->max_tx_queues == 0) { PMD_INIT_LOG(ERR, "Device %s can not be used, there are no valid queue " "pairs for use", pci_dev->name); @@ -1336,9 +1337,9 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, return -ENODEV; /* Get some of the read-only fields from the config BAR */ - hw->super.cap = nn_cfg_readl(hw, NFP_NET_CFG_CAP); - hw->super.cap_ext = nn_cfg_readl(hw, NFP_NET_CFG_CAP_WORD1); - hw->max_mtu = nn_cfg_readl(hw, NFP_NET_CFG_MAX_MTU); + hw->super.cap = nn_cfg_readl(&hw->super, NFP_NET_CFG_CAP); + hw->super.cap_ext = nn_cfg_readl(&hw->super, NFP_NET_CFG_CAP_WORD1); + hw->max_mtu = nn_cfg_readl(&hw->super, NFP_NET_CFG_MAX_MTU); hw->flbufsz = DEFAULT_FLBUF_SIZE; nfp_net_init_metadata_format(hw); @@ -1347,7 +1348,7 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, if (hw->ver.major < 2) hw->rx_offset = NFP_NET_RX_OFFSET; else - hw->rx_offset = nn_cfg_readl(hw, NFP_NET_CFG_RX_OFFSET_ADDR); + hw->rx_offset = nn_cfg_readl(&hw->super, NFP_NET_CFG_RX_OFFSET_ADDR); hw->super.ctrl = 0; hw->stride_rx = stride; @@ -1389,7 +1390,7 @@ nfp_rx_queue_intr_enable(struct rte_eth_dev *dev, rte_wmb(); hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - nn_cfg_writeb(hw, NFP_NET_CFG_ICR(base + queue_id), + nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_UNMASKED); return 0; } @@ -1410,7 +1411,7 @@ nfp_rx_queue_intr_disable(struct rte_eth_dev *dev, rte_wmb(); hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - nn_cfg_writeb(hw, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX); return 0; } @@ -1457,7 +1458,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev) /* If MSI-X auto-masking is used, clear the entry */ rte_intr_ack(pci_dev->intr_handle); } else { - nn_cfg_writeb(hw, NFP_NET_CFG_ICR(NFP_NET_IRQ_LSC_IDX), + nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(NFP_NET_IRQ_LSC_IDX), NFP_NET_CFG_ICR_UNMASKED); } } @@ -1539,7 +1540,7 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev, } /* Writing to configuration space */ - nn_cfg_writel(hw, NFP_NET_CFG_MTU, mtu); + nn_cfg_writel(&hw->super, NFP_NET_CFG_MTU, mtu); hw->mtu = mtu; @@ -1630,7 +1631,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, /* If all 4 entries were set, don't need read RETA register */ if (mask != 0xF) - reta = nn_cfg_readl(hw, NFP_NET_CFG_RSS_ITBL + i); + reta = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_ITBL + i); for (j = 0; j < 4; j++) { if ((mask & (0x1 << j)) == 0) @@ -1643,7 +1644,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, reta |= reta_conf[idx].reta[shift + j] << (8 * j); } - nn_cfg_writel(hw, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift, reta); + nn_cfg_writel(&hw->super, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift, reta); } return 0; @@ -1713,7 +1714,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev, if (mask == 0) continue; - reta = nn_cfg_readl(hw, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift); + reta = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift); for (j = 0; j < 4; j++) { if ((mask & (0x1 << j)) == 0) continue; @@ -1741,7 +1742,7 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, /* Writing the key byte by byte */ for (i = 0; i < rss_conf->rss_key_len; i++) { memcpy(&key, &rss_conf->rss_key[i], 1); - nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY + i, key); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RSS_KEY + i, key); } rss_hf = rss_conf->rss_hf; @@ -1774,10 +1775,10 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ; /* Configuring where to apply the RSS hash */ - nn_cfg_writel(hw, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); + nn_cfg_writel(&hw->super, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); /* Writing the key size */ - nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len); return 0; } @@ -1835,7 +1836,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, return -EINVAL; rss_hf = rss_conf->rss_hf; - cfg_rss_ctrl = nn_cfg_readl(hw, NFP_NET_CFG_RSS_CTRL); + cfg_rss_ctrl = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_CTRL); if ((cfg_rss_ctrl & NFP_NET_CFG_RSS_IPV4) != 0) rss_hf |= RTE_ETH_RSS_IPV4; @@ -1865,11 +1866,11 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, rss_conf->rss_hf = rss_hf; /* Reading the key size */ - rss_conf->rss_key_len = nn_cfg_readl(hw, NFP_NET_CFG_RSS_KEY_SZ); + rss_conf->rss_key_len = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_KEY_SZ); /* Reading the key byte a byte */ for (i = 0; i < rss_conf->rss_key_len; i++) { - key = nn_cfg_readb(hw, NFP_NET_CFG_RSS_KEY + i); + key = nn_cfg_readb(&hw->super, NFP_NET_CFG_RSS_KEY + i); memcpy(&rss_conf->rss_key[i], &key, 1); } @@ -1983,13 +1984,13 @@ nfp_net_set_vxlan_port(struct nfp_net_hw *hw, hw->vxlan_ports[idx] = port; for (i = 0; i < NFP_NET_N_VXLAN_PORTS; i += 2) { - nn_cfg_writel(hw, NFP_NET_CFG_VXLAN_PORT + i * sizeof(port), + nn_cfg_writel(&hw->super, NFP_NET_CFG_VXLAN_PORT + i * sizeof(port), (hw->vxlan_ports[i + 1] << 16) | hw->vxlan_ports[i]); } rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_VXLAN); + nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_VXLAN); rte_wmb(); ret = __nfp_net_reconfig(hw, NFP_NET_CFG_UPDATE_VXLAN); @@ -2048,7 +2049,7 @@ nfp_net_cfg_read_version(struct nfp_net_hw *hw) struct nfp_net_fw_ver split; } version; - version.whole = nn_cfg_readl(hw, NFP_NET_CFG_VERSION); + version.whole = nn_cfg_readl(&hw->super, NFP_NET_CFG_VERSION); hw->ver = version.split; } diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 3fb3b34613..3fe3e96107 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -247,63 +247,63 @@ nn_writeq(uint64_t val, } static inline uint8_t -nn_cfg_readb(struct nfp_net_hw *hw, +nn_cfg_readb(struct nfp_hw *hw, uint32_t off) { - return nn_readb(hw->super.ctrl_bar + off); + return nn_readb(hw->ctrl_bar + off); } static inline void -nn_cfg_writeb(struct nfp_net_hw *hw, +nn_cfg_writeb(struct nfp_hw *hw, uint32_t off, uint8_t val) { - nn_writeb(val, hw->super.ctrl_bar + off); + nn_writeb(val, hw->ctrl_bar + off); } static inline uint16_t -nn_cfg_readw(struct nfp_net_hw *hw, +nn_cfg_readw(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_16(nn_readw(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_16(nn_readw(hw->ctrl_bar + off)); } static inline void -nn_cfg_writew(struct nfp_net_hw *hw, +nn_cfg_writew(struct nfp_hw *hw, uint32_t off, uint16_t val) { - nn_writew(rte_cpu_to_le_16(val), hw->super.ctrl_bar + off); + nn_writew(rte_cpu_to_le_16(val), hw->ctrl_bar + off); } static inline uint32_t -nn_cfg_readl(struct nfp_net_hw *hw, +nn_cfg_readl(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_32(nn_readl(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_32(nn_readl(hw->ctrl_bar + off)); } static inline void -nn_cfg_writel(struct nfp_net_hw *hw, +nn_cfg_writel(struct nfp_hw *hw, uint32_t off, uint32_t val) { - nn_writel(rte_cpu_to_le_32(val), hw->super.ctrl_bar + off); + nn_writel(rte_cpu_to_le_32(val), hw->ctrl_bar + off); } static inline uint64_t -nn_cfg_readq(struct nfp_net_hw *hw, +nn_cfg_readq(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_64(nn_readq(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_64(nn_readq(hw->ctrl_bar + off)); } static inline void -nn_cfg_writeq(struct nfp_net_hw *hw, +nn_cfg_writeq(struct nfp_hw *hw, uint32_t off, uint64_t val) { - nn_writeq(rte_cpu_to_le_64(val), hw->super.ctrl_bar + off); + nn_writeq(rte_cpu_to_le_64(val), hw->ctrl_bar + off); } /** diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index a9dd464a6a..f17cc13cc1 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -925,8 +925,8 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the RX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); return 0; } From patchwork Tue Oct 24 02:28:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133215 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 4FA53431EB; Tue, 24 Oct 2023 04:31:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2D67642831; Tue, 24 Oct 2023 04:30:01 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2108.outbound.protection.outlook.com [40.107.95.108]) by mails.dpdk.org (Postfix) with ESMTP id 80288427DF for ; Tue, 24 Oct 2023 04:29:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y8wbCbhB9bemrGR48+Cb/kyk8lcvVgIiWKakZUND7ad0TAX7n9V2gng/iBz0uI/BuDcBLkmRzBR8Wu84J4Q7ahybOky7l8bcKumTjFaXNOpIDd5eVBz62lRrY4I2gZuYzVTF9hFXj6pU0lyrYUxcNzHrQzeFqfzPSnokQhV2uOL6ij7Zr3EvYWa6jMZ4ojM76W9JfocLPUZlZnZ2ywvZ5+pLyuTsxeWw5d6Dj7h3/gHX5h7H/g6Z4NzPifnXx/IPQ17HG2STY6F+wsGEs2t/mwku+7Uk1dg/5B6gz7hy4l7RiHSaZeiYcVGPz/FVUeY0zw7r9Y5VqT9oJMHKcjPtpQ== 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=6l4RrTx+p2ORCx6/L0mC61f/C1QnDjSNY/xqbz1YhyU=; b=fiB+rsUWgz6asuj7LOilc7RcCTZk06lf3hIOaiPdJAVBEFTUC0ig7Xz30MkmARkxraAWShYzs7XhNff8V5ZP+ytM4GNOvByXPjsoKPFh91jxBpFaV4LDZIrVyrCT76j9X/rWDohreJxdklmQdP5fvXevyZGwqW0hAf+3VqkX2ihb6apr+s0NEt3yCoUtX/UbdxoiiUkhYtGuXheqCwWuo8lGz1ifPqI6FVTUnGB+aTGSaJiWKhxsZjIq/One8RUlZLg1xps3N6kxX5FuYfwx2yA1jkzclZf4oOIJmjzcdoOSrqEDOMUNNbLeTHmh1lFMkZhnq8LHRFwqmn3j1uPsVg== 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=6l4RrTx+p2ORCx6/L0mC61f/C1QnDjSNY/xqbz1YhyU=; b=m1TEEFq/4Tc46AwTMOYDSDU1vCJRkkKxv7G1kOQBtmbPTumgw15vfQfXmaz8t11F07eVBg0GxxLYlWR2bo/FKjOGHtmzAWNfiA5GeUgOD3I19RIkvY/a8ilHU5PNPmcOTJTSucypS5ii7d8iR8tIE649os66jGBCPNkURFxS7uE= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:56 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:56 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 10/25] net/nfp: change the parameter of reconfig Date: Tue, 24 Oct 2023 10:28:34 +0800 Message-Id: <20231024022849.3092506-11-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 4276bf1d-90ff-4124-8271-08dbd4391c58 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7Mp8YW2LOwWKy3692DcbRqgN60tf/9VTA1+wKdM4scRmPySmV6g3g00QlXOzh+VlB9GlFaYn9WOElbkSLdpLQxTQ6FDR5oRV7jGm0kEaFVNLTgF0ZK4sEjzGlSjk5bmrKHu6InZqraUt2iw4Li0vxdZtMQNMlV++JtTK3+0WxCKkLgGJZQky/1jGN9cTT/ZWG+FPVxOgT/MOKkacY6ojrY35jruhqnDL61czTboWcSjfX7LX5C5pSZ/YB+lrfK8scsM4gJP2xTOIflMqnPP5Wz6cCh0V5KT9ULhS2wJAePFxdgIs+0QF983sSB9iEG+Cyd1EA5Yi05c4bCLeysGumPi/HAhGVy3Fb6VFFeoh83vq6xmzmx/sx1KxoGI9M4s2KGlm/8FUs09ALTmhNXKgIwXo9d477V8/Eogsp1zfjLhKlhGH7vRyAvEm27EZjbNJYJ2P9dNvTWGhIG6/WOpvM3A1O+Si+Jpjj7/ydlVaO4hOdsDeabGMhbjKIapBmAeyt8+1hXRHDVPvW0epMHP4qoxDR+PYHAl6ooKBsmc55SUvZX84URcLuFtbedcGrrcrIItXR07+CVY6bYTwxNbzMOsWF4HPC/UeWOaRUsd5xtdG1UoliLaARjjwK5oNgW+dU86E4rA/lhhW+8VH+j5IL2op9k+vE6huXG/iDEnENOw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: O9qRam6NPPL7l9Qz5PS8QrjuFDeqMG0ag3uSB2TeCtSp2pn7eOIhe6q1iWern7EW7BCfTbw/RtdTXfg35BRMvYFSOdm1UZbkAbSg8EI8VbXIzbhnDcXw0jaIwaGS8yUp5uPAoWyT8+L/Km4RjQTg7LjHJw4BtORcdXwo4J6exUjwxeCN/AFuh9hR52hla6cpNTwkrHijRzweej616b2tJLdeW9HQFpUXNLH0a4EAnOnOVXouFTxHOayXi/tqQzKjOc1B7lwbv+3zQaP1VTQbt7Yt0nL/Ijvmzzd9k+D2QKtabPepew+Iho6z/OT3LwRtF7841qHpnY6blFkOnJEJfQfu7KSXICABKsvwHwFgtCxi5m3ECBm8Yg9DUIi+7gAruzjWuaDlMK4sexjD7ZZcdbjzj4p1Hem37C7m+NgoHLqPVZlSARdR+DBXBk2swlyEgouLFrsppfg3FPWaWRmV8bFj6A2uGGser5XaazjbIj9fsNY2dek3fTro7+FeUrmHZIp/cYiV+tagJsIujH00hQKF4WFA8AoeEHARzKaqs/bLmIj9AxtPjK+j3WQGkwgGGEFyDVSeRdb7CAQ4RWWRW+RyuMoZKH/k+hso9q6u3HbCBSYBkkGw40qn50YKx0kKMVPEW/AIaHb/kQKqDObTq2ipmStq8S8XeHGTQVCwSvIDxRb4tIlc5EmAJF7MV9U1QojyocJR3ZvSuqsJNyJZjpegjVqgYB115//Icn0onnKFkqtHQ/ByX94XL6vzKxoolINymfnZSLz8Sknf9ERuj8tnMY5qHRTs9qHvaqy2I2MdgH7Nnemu/FJzcDyYE7aPLlP519kgrZCgb+GmEpBeWLhjSdR2h0FEGfcDPfjIIuZlkahSTUvpcqehCTJ+5xXJLjtMpCdq86ZDPt1r6ZF+F1D46aJqSk57uE5IWEXCQkDsP5RYenfmr9Ixo3HpUVbQT7MHUDHmTaSVq5P01ePDA8Ai7ctnJ6Higcjn9bUX3moHbCggg1NcqKAha3Rgf+ajHMpS+TxC3G9i6Rt9ieK/FXhL4YianKzbviNylz3EsXcPziv4B/fGxbKEoqSl0Xq9n7scxvc6lzVXO0QIl90AZonjxzGZXl6sGNvSRmBzfM0nlPjPRzz+YynvZQFJR8qSWrA/a4nIhssiSwn2Tg+xsT7jjPdjyZEHH5ZpdOnh189xh+2t7zEBccLKMkE/61K7INJKbUDJZTN42eWy55RqN2CkyG9S9j2agaqxhlUcoC4Xxu3s3TIJjcT+ZyHUTyKdoHTvBdj0PQ5d/GI4s+8oOBWw/YV8Rz88F6ARzL2uXE9ugy7JyYxJ2sGRu3BPl78NilKFFeL+YX0HgyIvUjMF1EAJPvlbtzLMH9qnJXNCXPKDwZaX3FnEMCNSgnkHWOXgQ4abEkjqPjGRIjWptTQWfKHKeJmaiwdSNWIFvG9nlnP1JSCTMwjEZu7EuW8k1sDvtKK2/uxdZYZnDkLzitL54fy/w1AQI4a0CDnY4w93v1l1Bnwc57jbABx/mzlcX42Sj5F+HGXby2QyMmrZv5XFYpitTX7/TdKZ17vXodamP4C39RhkEJObHss+17MGVxtUnkUr8RdkyGs76nDLwNj97g== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4276bf1d-90ff-4124-8271-08dbd4391c58 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:55.9733 (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: PPchoa0XwMb61L2xVWusBqCtujxqxusAo/WYZ75EdSAP/7sHS6Xbifgs80lZcE5Ef/7gZREU/aFUdHxjO3K1NV8bYWo4kEdoj1bw8U9dlAY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 Extract the 'reconfig_lock' data field into the super class, also change the parameter of the related APIs, prepare for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.c | 50 +++++---- drivers/net/nfp/nfp_ethdev.c | 34 +++--- drivers/net/nfp/nfp_ethdev_vf.c | 20 ++-- drivers/net/nfp/nfp_net_common.c | 161 +++++++++++++++------------- drivers/net/nfp/nfp_net_common.h | 7 +- 5 files changed, 149 insertions(+), 123 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index ccb579541b..831f4a7265 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -52,27 +52,29 @@ nfp_pf_repr_disable_queues(struct rte_eth_dev *dev) { uint32_t update; uint32_t new_ctrl; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_flower_representor *repr; repr = dev->data->dev_private; - hw = repr->app_fw_flower->pf_hw; + net_hw = repr->app_fw_flower->pf_hw; + hw = &net_hw->super; - nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, 0); - nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, 0); + nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); + nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); - new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; + new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | NFP_NET_CFG_UPDATE_MSIX; - if (hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) + if (hw->cap & NFP_NET_CFG_CTRL_RINGCFG) new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG; /* If an error when reconfig we avoid to change hw state */ - if (nfp_net_reconfig(hw, new_ctrl, update) != 0) + if (nfp_reconfig(hw, new_ctrl, update) < 0) return; - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; } int @@ -80,13 +82,15 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) { int ret; uint16_t i; + struct nfp_hw *hw; uint32_t new_ctrl; uint32_t update = 0; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_flower_representor *repr; repr = dev->data->dev_private; - hw = repr->app_fw_flower->pf_hw; + net_hw = repr->app_fw_flower->pf_hw; + hw = &net_hw->super; /* Disabling queues just in case... */ nfp_pf_repr_disable_queues(dev); @@ -97,11 +101,11 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) new_ctrl = nfp_check_offloads(dev); /* Writing configuration parameters in the device */ - nfp_net_params_setup(hw); + nfp_net_params_setup(net_hw); update |= NFP_NET_CFG_UPDATE_RSS; - if ((hw->super.cap & NFP_NET_CFG_CTRL_RSS2) != 0) + if ((hw->cap & NFP_NET_CFG_CTRL_RSS2) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RSS2; else new_ctrl |= NFP_NET_CFG_CTRL_RSS; @@ -111,19 +115,19 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) update |= NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING; - if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; - nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, new_ctrl); + nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl); /* If an error when reconfig we avoid to change hw state */ - ret = nfp_net_reconfig(hw, new_ctrl, update); + ret = nfp_reconfig(hw, new_ctrl, update); if (ret != 0) { PMD_INIT_LOG(ERR, "Failed to reconfig PF vnic"); return -EIO; } - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; /* Setup the freelist ring */ ret = nfp_net_rx_freelist_setup(dev); @@ -374,7 +378,7 @@ nfp_flower_init_vnic_common(struct nfp_net_hw *hw, vnic_type, hw->max_rx_queues, hw->max_tx_queues); /* Initializing spinlock for reconfigs */ - rte_spinlock_init(&hw->reconfig_lock); + rte_spinlock_init(&hw->super.reconfig_lock); return 0; } @@ -690,14 +694,16 @@ nfp_flower_cleanup_ctrl_vnic(struct nfp_net_hw *hw) } static int -nfp_flower_start_ctrl_vnic(struct nfp_net_hw *hw) +nfp_flower_start_ctrl_vnic(struct nfp_net_hw *net_hw) { int ret; uint32_t update; uint32_t new_ctrl; + struct nfp_hw *hw; struct rte_eth_dev *dev; - dev = hw->eth_dev; + dev = net_hw->eth_dev; + hw = &net_hw->super; /* Disabling queues just in case... */ nfp_net_disable_queues(dev); @@ -706,7 +712,7 @@ nfp_flower_start_ctrl_vnic(struct nfp_net_hw *hw) nfp_net_enable_queues(dev); /* Writing configuration parameters in the device */ - nfp_net_params_setup(hw); + nfp_net_params_setup(net_hw); new_ctrl = NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | @@ -715,13 +721,13 @@ nfp_flower_start_ctrl_vnic(struct nfp_net_hw *hw) rte_wmb(); /* If an error when reconfig we avoid to change hw state */ - ret = nfp_net_reconfig(hw, new_ctrl, update); + ret = nfp_reconfig(hw, new_ctrl, update); if (ret != 0) { PMD_INIT_LOG(ERR, "Failed to reconfig ctrl vnic"); return -EIO; } - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; /* Setup the freelist ring */ ret = nfp_net_rx_freelist_setup(dev); diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index a773a81e55..1378545d22 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -45,12 +45,13 @@ nfp_net_start(struct rte_eth_dev *dev) { int ret; uint16_t i; + struct nfp_hw *hw; uint32_t new_ctrl; uint32_t update = 0; uint32_t cap_extend; uint32_t intr_vector; - struct nfp_net_hw *hw; uint32_t ctrl_extend = 0; + struct nfp_net_hw *net_hw; struct nfp_pf_dev *pf_dev; struct rte_eth_conf *dev_conf; struct rte_eth_rxmode *rxmode; @@ -58,9 +59,10 @@ nfp_net_start(struct rte_eth_dev *dev) struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = pci_dev->intr_handle; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private); app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv); + hw = &net_hw->super; /* Disabling queues just in case... */ nfp_net_disable_queues(dev); @@ -100,9 +102,9 @@ nfp_net_start(struct rte_eth_dev *dev) } /* Checking MTU set */ - if (dev->data->mtu > hw->flbufsz) { + if (dev->data->mtu > net_hw->flbufsz) { PMD_INIT_LOG(ERR, "MTU (%u) can't be larger than the current NFP_FRAME_SIZE (%u)", - dev->data->mtu, hw->flbufsz); + dev->data->mtu, net_hw->flbufsz); return -ERANGE; } @@ -111,7 +113,7 @@ nfp_net_start(struct rte_eth_dev *dev) new_ctrl = nfp_check_offloads(dev); /* Writing configuration parameters in the device */ - nfp_net_params_setup(hw); + nfp_net_params_setup(net_hw); dev_conf = &dev->data->dev_conf; rxmode = &dev_conf->rxmode; @@ -119,7 +121,7 @@ nfp_net_start(struct rte_eth_dev *dev) if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) != 0) { nfp_net_rss_config_default(dev); update |= NFP_NET_CFG_UPDATE_RSS; - new_ctrl |= nfp_net_cfg_ctrl_rss(hw->super.cap); + new_ctrl |= nfp_net_cfg_ctrl_rss(hw->cap); } /* Enable device */ @@ -128,19 +130,19 @@ nfp_net_start(struct rte_eth_dev *dev) update |= NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING; /* Enable vxlan */ - if ((hw->super.cap & NFP_NET_CFG_CTRL_VXLAN) != 0) { + if ((hw->cap & NFP_NET_CFG_CTRL_VXLAN) != 0) { new_ctrl |= NFP_NET_CFG_CTRL_VXLAN; update |= NFP_NET_CFG_UPDATE_VXLAN; } - if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; - if (nfp_net_reconfig(hw, new_ctrl, update) != 0) + if (nfp_reconfig(hw, new_ctrl, update) != 0) return -EIO; /* Enable packet type offload by extend ctrl word1. */ - cap_extend = hw->super.cap_ext; + cap_extend = hw->cap_ext; if ((cap_extend & NFP_NET_CFG_CTRL_PKT_TYPE) != 0) ctrl_extend = NFP_NET_CFG_CTRL_PKT_TYPE; @@ -149,10 +151,10 @@ nfp_net_start(struct rte_eth_dev *dev) | NFP_NET_CFG_CTRL_IPSEC_LM_LOOKUP; update = NFP_NET_CFG_UPDATE_GEN; - if (nfp_net_ext_reconfig(hw, ctrl_extend, update) != 0) + if (nfp_ext_reconfig(hw, ctrl_extend, update) != 0) return -EIO; - hw->super.ctrl_ext = ctrl_extend; + hw->ctrl_ext = ctrl_extend; /* * Allocating rte mbufs for configured rx queues. @@ -165,11 +167,11 @@ nfp_net_start(struct rte_eth_dev *dev) if (rte_eal_process_type() == RTE_PROC_PRIMARY) /* Configure the physical port up */ - nfp_eth_set_configured(hw->cpp, hw->nfp_idx, 1); + nfp_eth_set_configured(net_hw->cpp, net_hw->nfp_idx, 1); else - nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 1); + nfp_eth_set_configured(dev->process_private, net_hw->nfp_idx, 1); - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; for (i = 0; i < dev->data->nb_rx_queues; i++) dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED; @@ -587,7 +589,7 @@ nfp_net_init(struct rte_eth_dev *eth_dev) nfp_net_log_device_information(hw); /* Initializing spinlock for reconfigs */ - rte_spinlock_init(&hw->reconfig_lock); + rte_spinlock_init(&hw->super.reconfig_lock); /* Allocating memory for mac addr */ eth_dev->data->mac_addrs = rte_zmalloc("mac_addr", RTE_ETHER_ADDR_LEN, 0); diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 7fb2a3d378..6ead7e02b8 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -32,10 +32,11 @@ nfp_netvf_start(struct rte_eth_dev *dev) { int ret; uint16_t i; + struct nfp_hw *hw; uint32_t new_ctrl; uint32_t update = 0; uint32_t intr_vector; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct rte_eth_conf *dev_conf; struct rte_eth_rxmode *rxmode; struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); @@ -77,8 +78,9 @@ nfp_netvf_start(struct rte_eth_dev *dev) new_ctrl = nfp_check_offloads(dev); /* Writing configuration parameters in the device */ - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - nfp_net_params_setup(hw); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; + nfp_net_params_setup(net_hw); dev_conf = &dev->data->dev_conf; rxmode = &dev_conf->rxmode; @@ -86,7 +88,7 @@ nfp_netvf_start(struct rte_eth_dev *dev) if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) != 0) { nfp_net_rss_config_default(dev); update |= NFP_NET_CFG_UPDATE_RSS; - new_ctrl |= nfp_net_cfg_ctrl_rss(hw->super.cap); + new_ctrl |= nfp_net_cfg_ctrl_rss(hw->cap); } /* Enable device */ @@ -94,11 +96,11 @@ nfp_netvf_start(struct rte_eth_dev *dev) update |= NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING; - if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; - nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, new_ctrl); - if (nfp_net_reconfig(hw, new_ctrl, update) != 0) + nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl); + if (nfp_reconfig(hw, new_ctrl, update) != 0) return -EIO; /* @@ -110,7 +112,7 @@ nfp_netvf_start(struct rte_eth_dev *dev) goto error; } - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; for (i = 0; i < dev->data->nb_rx_queues; i++) dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED; @@ -320,7 +322,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) nfp_net_log_device_information(hw); /* Initializing spinlock for reconfigs */ - rte_spinlock_init(&hw->reconfig_lock); + rte_spinlock_init(&hw->super.reconfig_lock); /* Allocating memory for mac addr */ eth_dev->data->mac_addrs = rte_zmalloc("mac_addr", RTE_ETHER_ADDR_LEN, 0); diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 2ab8d8fadd..9e6d2fa490 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -199,7 +199,7 @@ nfp_net_notify_port_speed(struct nfp_net_hw *hw, #define FW_VER_LEN 32 static int -__nfp_net_reconfig(struct nfp_net_hw *hw, +nfp_reconfig_real(struct nfp_hw *hw, uint32_t update) { uint32_t cnt; @@ -207,14 +207,14 @@ __nfp_net_reconfig(struct nfp_net_hw *hw, struct timespec wait; PMD_DRV_LOG(DEBUG, "Writing to the configuration queue (%p)...", - hw->super.qcp_cfg); + hw->qcp_cfg); - if (hw->super.qcp_cfg == NULL) { + if (hw->qcp_cfg == NULL) { PMD_DRV_LOG(ERR, "Bad configuration queue pointer"); return -ENXIO; } - nfp_qcp_ptr_add(hw->super.qcp_cfg, NFP_QCP_WRITE_PTR, 1); + nfp_qcp_ptr_add(hw->qcp_cfg, NFP_QCP_WRITE_PTR, 1); wait.tv_sec = 0; wait.tv_nsec = 1000000; /* 1ms */ @@ -223,7 +223,7 @@ __nfp_net_reconfig(struct nfp_net_hw *hw, /* Poll update field, waiting for NFP to ack the config */ for (cnt = 0; ; cnt++) { - new = nn_cfg_readl(&hw->super, NFP_NET_CFG_UPDATE); + new = nn_cfg_readl(hw, NFP_NET_CFG_UPDATE); if (new == 0) break; @@ -263,7 +263,7 @@ __nfp_net_reconfig(struct nfp_net_hw *hw, * - (-EIO) if I/O err and fail to reconfigure the device. */ int -nfp_net_reconfig(struct nfp_net_hw *hw, +nfp_reconfig(struct nfp_hw *hw, uint32_t ctrl, uint32_t update) { @@ -271,17 +271,17 @@ nfp_net_reconfig(struct nfp_net_hw *hw, rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, ctrl); - nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, update); + nn_cfg_writel(hw, NFP_NET_CFG_CTRL, ctrl); + nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); rte_wmb(); - ret = __nfp_net_reconfig(hw, update); + ret = nfp_reconfig_real(hw, update); rte_spinlock_unlock(&hw->reconfig_lock); if (ret != 0) { - PMD_DRV_LOG(ERR, "Error nfp net reconfig: ctrl=%#08x update=%#08x", + PMD_DRV_LOG(ERR, "Error nfp reconfig: ctrl=%#08x update=%#08x", ctrl, update); return -EIO; } @@ -307,7 +307,7 @@ nfp_net_reconfig(struct nfp_net_hw *hw, * - (-EIO) if I/O err and fail to reconfigure the device. */ int -nfp_net_ext_reconfig(struct nfp_net_hw *hw, +nfp_ext_reconfig(struct nfp_hw *hw, uint32_t ctrl_ext, uint32_t update) { @@ -315,17 +315,17 @@ nfp_net_ext_reconfig(struct nfp_net_hw *hw, rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); - nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, update); + nn_cfg_writel(hw, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); + nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); rte_wmb(); - ret = __nfp_net_reconfig(hw, update); + ret = nfp_reconfig_real(hw, update); rte_spinlock_unlock(&hw->reconfig_lock); if (ret != 0) { - PMD_DRV_LOG(ERR, "Error nft net ext reconfig: ctrl_ext=%#08x update=%#08x", + PMD_DRV_LOG(ERR, "Error nfp ext reconfig: ctrl_ext=%#08x update=%#08x", ctrl_ext, update); return -EIO; } @@ -354,16 +354,16 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *hw, mbox = hw->tlv_caps.mbox_off; - rte_spinlock_lock(&hw->reconfig_lock); + rte_spinlock_lock(&hw->super.reconfig_lock); nn_cfg_writeq(&hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_CMD, mbox_cmd); nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_MBOX); rte_wmb(); - ret = __nfp_net_reconfig(hw, NFP_NET_CFG_UPDATE_MBOX); + ret = nfp_reconfig_real(&hw->super, NFP_NET_CFG_UPDATE_MBOX); - rte_spinlock_unlock(&hw->reconfig_lock); + rte_spinlock_unlock(&hw->super.reconfig_lock); if (ret != 0) { PMD_DRV_LOG(ERR, "Error nft net mailbox reconfig: mbox=%#08x update=%#08x", @@ -494,26 +494,28 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) { uint32_t update; uint32_t new_ctrl; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; - nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, 0); - nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, 0); + nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); + nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); - new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; + new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | NFP_NET_CFG_UPDATE_MSIX; - if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG; /* If an error when reconfig we avoid to change hw state */ - if (nfp_net_reconfig(hw, new_ctrl, update) != 0) + if (nfp_reconfig(hw, new_ctrl, update) != 0) return; - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; } void @@ -551,26 +553,28 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, { uint32_t ctrl; uint32_t update; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && - (hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) { + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; + if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && + (hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) { PMD_DRV_LOG(ERR, "MAC address unable to change when port enabled"); return -EBUSY; } /* Writing new MAC to the specific port BAR address */ - nfp_net_write_mac(hw, (uint8_t *)mac_addr); + nfp_net_write_mac(net_hw, (uint8_t *)mac_addr); update = NFP_NET_CFG_UPDATE_MACADDR; - ctrl = hw->super.ctrl; - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && - (hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) != 0) + ctrl = hw->ctrl; + if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && + (hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) != 0) ctrl |= NFP_NET_CFG_CTRL_LIVE_ADDR; /* Signal the NIC about the change */ - if (nfp_net_reconfig(hw, ctrl, update) != 0) { + if (nfp_reconfig(hw, ctrl, update) != 0) { PMD_DRV_LOG(ERR, "MAC address update failed"); return -EIO; } @@ -689,36 +693,38 @@ int nfp_net_promisc_enable(struct rte_eth_dev *dev) { int ret; + uint32_t update; uint32_t new_ctrl; - uint32_t update = 0; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_flower_representor *repr; if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) { repr = dev->data->dev_private; - hw = repr->app_fw_flower->pf_hw; + net_hw = repr->app_fw_flower->pf_hw; } else { - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); } - if ((hw->super.cap & NFP_NET_CFG_CTRL_PROMISC) == 0) { + hw = &net_hw->super; + if ((hw->cap & NFP_NET_CFG_CTRL_PROMISC) == 0) { PMD_DRV_LOG(ERR, "Promiscuous mode not supported"); return -ENOTSUP; } - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_PROMISC) != 0) { + if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) != 0) { PMD_DRV_LOG(INFO, "Promiscuous mode already enabled"); return 0; } - new_ctrl = hw->super.ctrl | NFP_NET_CFG_CTRL_PROMISC; + new_ctrl = hw->ctrl | NFP_NET_CFG_CTRL_PROMISC; update = NFP_NET_CFG_UPDATE_GEN; - ret = nfp_net_reconfig(hw, new_ctrl, update); + ret = nfp_reconfig(hw, new_ctrl, update); if (ret != 0) return ret; - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; return 0; } @@ -727,25 +733,27 @@ int nfp_net_promisc_disable(struct rte_eth_dev *dev) { int ret; + uint32_t update; uint32_t new_ctrl; - uint32_t update = 0; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) { + if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) { PMD_DRV_LOG(INFO, "Promiscuous mode already disabled"); return 0; } - new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_PROMISC; + new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_PROMISC; update = NFP_NET_CFG_UPDATE_GEN; - ret = nfp_net_reconfig(hw, new_ctrl, update); + ret = nfp_reconfig(hw, new_ctrl, update); if (ret != 0) return ret; - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; return 0; } @@ -1554,17 +1562,20 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, int ret; uint32_t update; uint32_t new_ctrl; + struct nfp_hw *hw; uint64_t rx_offload; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; uint32_t rxvlan_ctrl = 0; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; + rx_offload = dev->data->dev_conf.rxmode.offloads; - new_ctrl = hw->super.ctrl; + new_ctrl = hw->ctrl; /* VLAN stripping setting */ if ((mask & RTE_ETH_VLAN_STRIP_MASK) != 0) { - nfp_net_enable_rxvlan_cap(hw, &rxvlan_ctrl); + nfp_net_enable_rxvlan_cap(net_hw, &rxvlan_ctrl); if ((rx_offload & RTE_ETH_RX_OFFLOAD_VLAN_STRIP) != 0) new_ctrl |= rxvlan_ctrl; else @@ -1579,16 +1590,16 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, new_ctrl &= ~NFP_NET_CFG_CTRL_RXQINQ; } - if (new_ctrl == hw->super.ctrl) + if (new_ctrl == hw->ctrl) return 0; update = NFP_NET_CFG_UPDATE_GEN; - ret = nfp_net_reconfig(hw, new_ctrl, update); + ret = nfp_reconfig(hw, new_ctrl, update); if (ret != 0) return ret; - hw->super.ctrl = new_ctrl; + hw->ctrl = new_ctrl; return 0; } @@ -1658,10 +1669,13 @@ nfp_net_reta_update(struct rte_eth_dev *dev, { int ret; uint32_t update; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; + + if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; ret = nfp_net_rss_reta_write(dev, reta_conf, reta_size); @@ -1670,7 +1684,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev, update = NFP_NET_CFG_UPDATE_RSS; - if (nfp_net_reconfig(hw, hw->super.ctrl, update) != 0) + if (nfp_reconfig(hw, hw->ctrl, update) != 0) return -EIO; return 0; @@ -1789,14 +1803,16 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev, { uint32_t update; uint64_t rss_hf; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; rss_hf = rss_conf->rss_hf; /* Checking if RSS is enabled */ - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) { + if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) { if (rss_hf != 0) { PMD_DRV_LOG(ERR, "RSS unsupported"); return -EINVAL; @@ -1814,7 +1830,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev, update = NFP_NET_CFG_UPDATE_RSS; - if (nfp_net_reconfig(hw, hw->super.ctrl, update) != 0) + if (nfp_reconfig(hw, hw->ctrl, update) != 0) return -EIO; return 0; @@ -1969,31 +1985,32 @@ nfp_net_close_tx_queue(struct rte_eth_dev *dev) } int -nfp_net_set_vxlan_port(struct nfp_net_hw *hw, +nfp_net_set_vxlan_port(struct nfp_net_hw *net_hw, size_t idx, uint16_t port) { int ret; uint32_t i; + struct nfp_hw *hw = &net_hw->super; if (idx >= NFP_NET_N_VXLAN_PORTS) { PMD_DRV_LOG(ERR, "The idx value is out of range."); return -ERANGE; } - hw->vxlan_ports[idx] = port; + net_hw->vxlan_ports[idx] = port; for (i = 0; i < NFP_NET_N_VXLAN_PORTS; i += 2) { - nn_cfg_writel(&hw->super, NFP_NET_CFG_VXLAN_PORT + i * sizeof(port), - (hw->vxlan_ports[i + 1] << 16) | hw->vxlan_ports[i]); + nn_cfg_writel(hw, NFP_NET_CFG_VXLAN_PORT + i * sizeof(port), + (net_hw->vxlan_ports[i + 1] << 16) | net_hw->vxlan_ports[i]); } rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_VXLAN); + nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_VXLAN); rte_wmb(); - ret = __nfp_net_reconfig(hw, NFP_NET_CFG_UPDATE_VXLAN); + ret = nfp_reconfig_real(hw, NFP_NET_CFG_UPDATE_VXLAN); rte_spinlock_unlock(&hw->reconfig_lock); diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 3fe3e96107..d418cd2b99 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -119,6 +119,7 @@ struct nfp_hw { uint32_t cap_ext; uint32_t ctrl; uint32_t ctrl_ext; + rte_spinlock_t reconfig_lock; }; struct nfp_net_hw { @@ -150,8 +151,6 @@ struct nfp_net_hw { uint16_t vxlan_ports[NFP_NET_N_VXLAN_PORTS]; uint8_t vxlan_usecnt[NFP_NET_N_VXLAN_PORTS]; - rte_spinlock_t reconfig_lock; - uint32_t max_tx_queues; uint32_t max_rx_queues; uint16_t flbufsz; @@ -368,8 +367,8 @@ nfp_qcp_queue_offset(const struct nfp_dev_info *dev_info, } /* Prototypes for common NFP functions */ -int nfp_net_reconfig(struct nfp_net_hw *hw, uint32_t ctrl, uint32_t update); -int nfp_net_ext_reconfig(struct nfp_net_hw *hw, uint32_t ctrl_ext, uint32_t update); +int nfp_reconfig(struct nfp_hw *hw, uint32_t ctrl, uint32_t update); +int nfp_ext_reconfig(struct nfp_hw *hw, uint32_t ctrl_ext, uint32_t update); int nfp_net_mbox_reconfig(struct nfp_net_hw *hw, uint32_t mbox_cmd); int nfp_net_configure(struct rte_eth_dev *dev); int nfp_net_common_init(struct rte_pci_device *pci_dev, struct nfp_net_hw *hw); From patchwork Tue Oct 24 02:28:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133216 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 126CE431EB; Tue, 24 Oct 2023 04:31:19 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7E26F42DB1; Tue, 24 Oct 2023 04:30:05 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2100.outbound.protection.outlook.com [40.107.95.100]) by mails.dpdk.org (Postfix) with ESMTP id 90FDD427E0 for ; Tue, 24 Oct 2023 04:29:59 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RFe9fluDC9bI6p4GYMp/R6VgeiHWi4FYFvQzZcjDB4hCGLVmHNFS3cnLmRFLmcbdgGq9Gc0jVH2a/CLjAY8evWJJHGk7ZwOzsBtYVE4oa6mh5RGx30koi+oPXiSJCkzaOsFGG1seKPRrcy8MeauUr8W+KrwDW56Qnf639XNPxnDyLZ+vcNoqcYYqZUOXsZ0ry5M9O4fv1mJDw6dTexiNgFe+jAj2bNVnqIjJS93iDlafjkrouFhEYvbd42wWsrSVOncX708vqsHqxQwbNpI/UEUZ+WdONdKJeDoGFpRwJYoehSHU6X3dyF3yC6v/G5hOo8BoT/H+m5RvNdQybyP/qA== 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=H7hAf+/pkbIyxjDvIBT8qfYCUXfIH4HjN697mTJC6E8=; b=OyEmY5z/ikvsOcFxmAxGFjJuwFy5Dr5sUja+oRJPeU6GOCypZLoTDepyMclanjxvFoKgV8D1RpevI/wkJpdxSFDvzh+w7NFIhVadYN6ofipSUHa6qyVRgR55ejEElZUf8ElXkm0ngWl7H74u15cGHh5EBVMf2eLxNrgzyCQMESrelPVU6xMz6v0V6wfAl30Chdf/2ThGxWATllpmlvshBHStMWZUSt3putQMk1kzloP3CvdNIB4ZyjNabnh1limBEwUcYdw7vvmaKEJ2XQ1RneTgN0UiK1fUtwH0JU0H+s4Cb060xA+8yyeNMMugbr0e9D/Udmja7VruKfFWGXMStA== 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=H7hAf+/pkbIyxjDvIBT8qfYCUXfIH4HjN697mTJC6E8=; b=I1Bks6j9fy7CyNENg1aeVaKkhbEvk2Oqm54g264cAG9uW9mz29E5lVYoFGQ1hlLt/s59BWHbpvjb/KuB7bCQnsqSHfQOV8dzORxpgka5jpmcfs/pNCA89nHWHVBzYPrrJw3Q5VsuQ/GVo6r/Lw0LMHD59Is3rF1KSoFmk9JTEBc= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:57 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:57 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 11/25] net/nfp: extract the MAC address data field Date: Tue, 24 Oct 2023 10:28:35 +0800 Message-Id: <20231024022849.3092506-12-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 62e0d652-9cc4-47af-3a8a-08dbd4391d74 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: n2mYrfR84yZ1Hfm+82lYc9SmXpPdD2qCzI6xeJt47eaqMq6zPCIp53ZcAs97c1AvoyCNZNj5OC4zQN2NaqnG9djVi73y8AzZZsMalwq9s+GWkObYOxO7KgxEAILHFQLiSyCLDgKeGiO7zw1meMX99DoNBxNuGnbGVxu2Kto9xVmtOs/ew24VoswkjUOWZpoeB7jDfUjc7Udz4S8vCyFf2BGqbOe+T5ep3wKkzQGvWwnyEuP5mpO3czsv2meToiI49USYwineYN3rN8XUdSKbe6OOUtT9b4IauktNStVsICQiOrXtrsuj03UNFfAYm60p8Unr4trDUjxtDrtYrwh9SghdSENnBMNcg5XsDVX65RVsz1pyK4FlwXhn14IJxqQa9W8Iw2GJf6LWA0BcczPOf10rQf6FpZKRymtAiAzObNACjdEKHSSLUquGYhsp0r+IWXeyRJKjTB+NiLaTmlhkQSQ1DyO+3ANvkyYCceGlrpxvelCtbHVsD5vf+JCq2PUgpH3hkI+XTpKvzPoZTFYlWifTZ+B6iAxF+NWoaC9Ns/uaRr6chx4BzJMUiqtzczORBJSrBtzVjG5RtKw5F0ItDHTGc+DA9NxRSnBfY/20dbjbRDyBsss2CQTpwJ1Afo6SUw3o0EDlzCmTXhgMLrp7IyRrIJflFotUTaatpXBsFfE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Zvn5jgqZxXM6bGLloRbORaAMVXUlUg9QWXepoKmD15QmDx3E0NOgPzRVPM8n357NsTBHsLOIpVSoz1GJHhcN6U8F9bJL6lQzAei2oWATNI4XIVRZqZuH2ZTWPO22/Vgc542mhSkvqSRgVAS5OcKDwtekkt7VHNjnwISQIv2Reejbb9gwvclQXUmcRP4sGGBTR76YZ/3XtfdEJRbZb5N/Yd1wMUNSV+l0AEaj4cAuOlO1ZwIvvJq5KgZm0YQ9/MP24iS0m42VMZ+rktG8qM7Iva1vKk4FYj2rLY1agi4hSIwAa8MAf6FSdZ+cr/E71RDlERGnZSUBjYXfZMYrtAQBoBrVk/vrsTC9O+UaH2+f8zbbCtmm1n89UOn7LCQj4imj21UDV8o0lEIF+rUUXmjMjbZuUJi2xHqMjK3XuBEwLH/N6E/D90LtUzIlAlxOUepz9sVyz4BMK9slJ93bSnHhjaIkMzbNhnUNt9VH41pOl+hUxWzNrxcv//WBcf1JDuAsckkvPFJI9qwdhFGPkb1QyTsLFXTAvj74TQoQeU1/pthhy6PpdJ5+3nu7InQMI1zppP3Lu7I84ayOZuF5uej5cboLy3j4+GQHOXk9M5yHI6ZN6dNutOdYzp2HbTp8ycWo1YKQLQ+X3IarvTZovPjzjZkvwJiyeLnNcRhkpYdRwKPvh9yeiBcVBYTQMTmGk+JtGHwRvXKCtqv264IuJv2FFXMEFZqd9/FVlzxRcmJuyHiqEFfXCVJrwGBUDpUV/HBfuVNcBi4jM1kEvMJAf41T9FbPHogCkfWIz7Iu7LDW2JM3twQv5ZaIGCHV2gVVe0PdITr+Z6HZo/AyCrW+qTL0Mr6H0vdjnbB2ICfHsuzhJxfRQA7KdqZqcwElpdbygiNZ4YOD7YGV38Nz+tbiUwpbhOyz6NgYRWBMvW2j0Ry6LWzsEDpkbeRTVkDFGVkrg99QJyIdr+UbXaicFXJbVyUde7mpfyRIsBE0Jn3PWStQzjL2DpFio+0rNmip0MSvLAo3oqDDS1Hs8viXLbaj2fpbxaX+V0INCJVQ9+snI20XaEEWkLGvSdBgbputchtaqE4sKY8WgM7rh43bAuWT2VkBANJYkOBKf3uL/buoZOsXguzjxkiV15+NHy+JXCb4dJmQSKFSr4EH5zIWekoIcAseWO9isU+hs/OjG/jC7dsVXRIo+SaCwoS7ayObTgzZ8QoT8s5ib8ZaRuEx5W4I1fiGW7YWo/E3msydRTxQCtzd8MOJgzs9iBceL+mHoMLVFDk842htf/S2MW0f3ZQnOTMlsLFyV7+btf6mf/zSB9Qrg32L6V6EpMSn7+IaezDYgTAKF17sg9w6NGPLhVUa/HyNjqsUwiYCWdCsL51FMgeRoro0tzxSFT9DgvcU//33fJbanU3p3BKiJOSxpGNIuP9z9xT0YY2IkUEJrSM5q06lx6s5ByZcRYs7NBPwYENkgi2+p2xEoB8YHOdMpHL4U4J6h6mU3S8Li4yztT0zInz493f5tYR7tjKw1FL9+6VGI05IAWa9maxPUg0nRIwymP4k3xtk+pTsv7dL/u7XxDDORWjNYmg+sjL3lP9PE629O2UDdQa5GNPPOeen1qbbSWcHkQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62e0d652-9cc4-47af-3a8a-08dbd4391d74 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:57.8255 (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: i8DEQSStm3OSPuE8e8A4E6cNmgz2k4ddzbAZAjbJBJxMs5BKqwtzz0kulJ5IGwDdtlhpraEPPG26NpgeljoY+u7bcGtKrahXMjRlSoiTwJs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 Extract the 'mac_addr' data filed into the super class, prepare for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_ethdev.c | 14 +++++++------- drivers/net/nfp/nfp_ethdev_vf.c | 18 +++++++++--------- drivers/net/nfp/nfp_net_common.c | 8 ++++---- drivers/net/nfp/nfp_net_common.h | 5 ++--- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 1378545d22..a93742a205 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -33,7 +33,7 @@ nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic, nfp_eth_table = nfp_eth_read_ports(app_fw_nic->pf_dev->cpp); - rte_ether_addr_copy(&nfp_eth_table->ports[port].mac_addr, &hw->mac_addr); + rte_ether_addr_copy(&nfp_eth_table->ports[port].mac_addr, &hw->super.mac_addr); free(nfp_eth_table); @@ -599,18 +599,18 @@ nfp_net_init(struct rte_eth_dev *eth_dev) } nfp_net_pf_read_mac(app_fw_nic, port); - nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); + nfp_net_write_mac(&hw->super, &hw->super.mac_addr.addr_bytes[0]); - tmp_ether_addr = &hw->mac_addr; + tmp_ether_addr = &hw->super.mac_addr; if (rte_is_valid_assigned_ether_addr(tmp_ether_addr) == 0) { PMD_INIT_LOG(INFO, "Using random mac address for port %d", port); /* Using random mac addresses for VFs */ - rte_eth_random_addr(&hw->mac_addr.addr_bytes[0]); - nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); + rte_eth_random_addr(&hw->super.mac_addr.addr_bytes[0]); + nfp_net_write_mac(&hw->super, &hw->super.mac_addr.addr_bytes[0]); } /* Copying mac address to DPDK eth_dev struct */ - rte_ether_addr_copy(&hw->mac_addr, eth_dev->data->mac_addrs); + rte_ether_addr_copy(&hw->super.mac_addr, eth_dev->data->mac_addrs); if ((hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) eth_dev->data->dev_flags |= RTE_ETH_DEV_NOLIVE_MAC_ADDR; @@ -621,7 +621,7 @@ nfp_net_init(struct rte_eth_dev *eth_dev) "mac=" RTE_ETHER_ADDR_PRT_FMT, eth_dev->data->port_id, pci_dev->id.vendor_id, pci_dev->id.device_id, - RTE_ETHER_ADDR_BYTES(&hw->mac_addr)); + RTE_ETHER_ADDR_BYTES(&hw->super.mac_addr)); /* Registering LSC interrupt handler */ rte_intr_callback_register(pci_dev->intr_handle, diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 6ead7e02b8..dead6ca5ab 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -16,14 +16,14 @@ #include "nfp_net_common.h" static void -nfp_netvf_read_mac(struct nfp_net_hw *hw) +nfp_netvf_read_mac(struct nfp_hw *hw) { uint32_t tmp; - tmp = rte_be_to_cpu_32(nn_cfg_readl(&hw->super, NFP_NET_CFG_MACADDR)); + tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR)); memcpy(&hw->mac_addr.addr_bytes[0], &tmp, 4); - tmp = rte_be_to_cpu_32(nn_cfg_readl(&hw->super, NFP_NET_CFG_MACADDR + 4)); + tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR + 4)); memcpy(&hw->mac_addr.addr_bytes[4], &tmp, 2); } @@ -332,16 +332,16 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) goto dev_err_ctrl_map; } - nfp_netvf_read_mac(hw); - if (rte_is_valid_assigned_ether_addr(&hw->mac_addr) == 0) { + nfp_netvf_read_mac(&hw->super); + if (rte_is_valid_assigned_ether_addr(&hw->super.mac_addr) == 0) { PMD_INIT_LOG(INFO, "Using random mac address for port %hu", port); /* Using random mac addresses for VFs */ - rte_eth_random_addr(&hw->mac_addr.addr_bytes[0]); - nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); + rte_eth_random_addr(&hw->super.mac_addr.addr_bytes[0]); + nfp_net_write_mac(&hw->super, &hw->super.mac_addr.addr_bytes[0]); } /* Copying mac address to DPDK eth_dev struct */ - rte_ether_addr_copy(&hw->mac_addr, eth_dev->data->mac_addrs); + rte_ether_addr_copy(&hw->super.mac_addr, eth_dev->data->mac_addrs); if ((hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) eth_dev->data->dev_flags |= RTE_ETH_DEV_NOLIVE_MAC_ADDR; @@ -352,7 +352,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) "mac=" RTE_ETHER_ADDR_PRT_FMT, port, pci_dev->id.vendor_id, pci_dev->id.device_id, - RTE_ETHER_ADDR_BYTES(&hw->mac_addr)); + RTE_ETHER_ADDR_BYTES(&hw->super.mac_addr)); if (rte_eal_process_type() == RTE_PROC_PRIMARY) { /* Registering LSC interrupt handler */ diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 9e6d2fa490..a760fcf0d2 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -532,19 +532,19 @@ nfp_net_cfg_queue_setup(struct nfp_net_hw *hw) } void -nfp_net_write_mac(struct nfp_net_hw *hw, +nfp_net_write_mac(struct nfp_hw *hw, uint8_t *mac) { uint32_t mac0; uint16_t mac1; mac0 = *(uint32_t *)mac; - nn_writel(rte_cpu_to_be_32(mac0), hw->super.ctrl_bar + NFP_NET_CFG_MACADDR); + nn_writel(rte_cpu_to_be_32(mac0), hw->ctrl_bar + NFP_NET_CFG_MACADDR); mac += 4; mac1 = *(uint16_t *)mac; nn_writew(rte_cpu_to_be_16(mac1), - hw->super.ctrl_bar + NFP_NET_CFG_MACADDR + 6); + hw->ctrl_bar + NFP_NET_CFG_MACADDR + 6); } int @@ -565,7 +565,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, } /* Writing new MAC to the specific port BAR address */ - nfp_net_write_mac(net_hw, (uint8_t *)mac_addr); + nfp_net_write_mac(hw, (uint8_t *)mac_addr); update = NFP_NET_CFG_UPDATE_MACADDR; ctrl = hw->ctrl; diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index d418cd2b99..e997756091 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -120,6 +120,7 @@ struct nfp_hw { uint32_t ctrl; uint32_t ctrl_ext; rte_spinlock_t reconfig_lock; + struct rte_ether_addr mac_addr; }; struct nfp_net_hw { @@ -159,8 +160,6 @@ struct nfp_net_hw { uint16_t subsystem_device_id; uint16_t subsystem_vendor_id; - struct rte_ether_addr mac_addr; - /** Records starting point for counters */ struct rte_eth_stats eth_stats_base; struct rte_eth_xstat *eth_xstats_base; @@ -376,7 +375,7 @@ void nfp_net_log_device_information(const struct nfp_net_hw *hw); void nfp_net_enable_queues(struct rte_eth_dev *dev); void nfp_net_disable_queues(struct rte_eth_dev *dev); void nfp_net_params_setup(struct nfp_net_hw *hw); -void nfp_net_write_mac(struct nfp_net_hw *hw, uint8_t *mac); +void nfp_net_write_mac(struct nfp_hw *hw, uint8_t *mac); int nfp_net_set_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr); int nfp_configure_rx_interrupt(struct rte_eth_dev *dev, struct rte_intr_handle *intr_handle); From patchwork Tue Oct 24 02:28:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133217 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 1BE82431EB; Tue, 24 Oct 2023 04:31:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 819FE42DC1; Tue, 24 Oct 2023 04:30:06 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2094.outbound.protection.outlook.com [40.107.95.94]) by mails.dpdk.org (Postfix) with ESMTP id 4BB30427E9 for ; Tue, 24 Oct 2023 04:30:02 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lPX9Cj5rqD20ITMALfi9wk+nHPavVh0ZroKN8Dg5LsCmwPdLSqCCMbcv/CkbWKWxILRu3L7zoTxtu7p79e5oCVIb5kAPnLm4UMcET+jueZKEDZ7ysSvFrc6Wl64PAEjeH3rqY8n2laGxlPWBJ8kN2hZc30gCmwwV9ReNAEDpUr7PWw/m/aETPQTdQPOL6uNbIjl4onjccbsy2UpruehbkCeKAZdj7Q/Yk3dAp3mcLuuWxdL3dhhMEG2tqbx34rCYyFlAqB4nwAqneMsHx+P152vhZs/nAwIJA2uAYrK5mpnqgPWMRi1AmBZ+ViDvVqcilpdn+YAK1glvpYSy3Eo8ow== 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=KmTYxQOK7SEKsSa8yNnaw5vkg/LvZ3+NrMC0S+j/zrE=; b=TkF5lUkYcTFcDxbKw8Y3GTSirdOUQAtqXOSj2ygPI/1Nbc0dnfwD+Pn9nGCRVD/jZS9jTrlIpv4MoR0pXfO10+FFtKXcjhRliFHqgkUZkZRQH7SBATw/koBI7aShSKdQqfSe3fl5w3wMQeRvPZPWXL6w9GZt6/izlF7dJwpKyQSJ9F2jlacDvYnB6D/DXS15zxaFGg4A/NGako2c8BOyqLSbHT5embtLy4RJ96oDgL5jjqVP4PLT9Ca6X2y+DSevf3PeeIZnHb+Uph5Ksi6wk/JssFj9xKj+D3pyzHq8mr1d5vRkY5EyM5mwmnDjOU4b/+jVCDFXGMbRXfChzRRHhQ== 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=KmTYxQOK7SEKsSa8yNnaw5vkg/LvZ3+NrMC0S+j/zrE=; b=VHiXq2n+xFaHKHd1qDq7fXs6UnHuJPAoTe8v9QLfym8eHbbkvDMkcCqBd1R4HOi5oWwWQruMXLQqljtN4r7DJGyyXdo290isOoMUQ5lygBdG9YtXAqYSW26jWqOSJXscGkFQ9JE1bN/RHIRawFN0zLLLzzW5Pg5LTlLG0n2M1z8= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:59 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:59 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 12/25] net/nfp: rename parameter in related logic Date: Tue, 24 Oct 2023 10:28:36 +0800 Message-Id: <20231024022849.3092506-13-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 2e7470ed-6618-4cec-f29d-08dbd4391e8f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: s4g3bSY7MiYBAZcEH/b+5sgRLx/QbOi1Kl4hKwnrJKNTNFgZlP/SB6P9Z9/iiD/1B0vLOUR4liyiHPc0boGxxRdJjhoGY6jbYRsr8u7ijyCstNdav0CAv5+sLwvVVk8UO0dvbx1zWLqNf/t8NSDx2QmrJ9ltemPpvJW+rhF2QEGDd2Um5XKxCLMXlRZqpdJOYSbRg7UBRJV8BEbd3EF1zcW2A+QTWaQBmDvjjQWbWbgyx+A9FGgauNcCRPBhDGqHNqJ8tggOFzbKUMh3wMFR8wxkhtfIwXWBEZhA2aRYeHCf447j8oHMv0NzLLl8YHKERlB7XYardUbAYQZmOFxA9K75yD67oKycXVYiJ1zuRqoSH6FaR8eRU7kk7rZ0yDJQxbUVDpJrsb47x7B2PuvZpXSiuAjIt8ivNCkTfB0HoWgomuWvrpxUqbK8AoppAMD7yAN66KR4zpOU30JpRjOjACMfnzHCUEdCXdQzyVexzVaIVaLIW9j7DUEcKtBXWAcQpsbcCt/+cbCFMESfadqzltAOl8nwRWc7NANloF9DluGLtarI2nOppbmViE4CaUuPS4/IRioKzQs5WLO1Gw4ZnYgZMDbybcN2Poa1kWiAMtnfzk8zdKCQRM3g+2AX1EYjMk10vB5kNfSekOeKBhxFL9tEJ16A6iw+OBCj67EF22M= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2l+XIOjLJq+I6t6yonFmA/CIkVKk/I+FtsJIjL8uRUZdkxT1kM38xlyU9+3H0Xme8uP63Wv/N1EAZycXhJvdk7zp4kEbfgw/TmZpsru9btTO4zbjkArSQrPTBmZ5Vgz+TbA7wdTc7FAhfTGOmcLp41pPZbI4khROa7g03YC8CtDC2xw5T7uAfvaZE6UqFo8uRvzPGNWMRj8Etni4/TzUMFQA5brbqSRHIfe3bu54Y6PZfmuqMt+X0hJaIlqgJ62uNsh4/+ovXW93kjKinmrohPyTJ+ushp13Dipb7111CBOriHIdtMgRk8hfNcHRBo4PjcHbcaYDRY4R59CF9n269RbLCKNVb3gEHk0U0WN6UHp2ZaVYFqpra7h00/BR4WPfv3tWbBzX9vRBMhEQzCgz5ZINQRiOQFwJaPZdkcJLhYhOGJm/RdXr3X+P1y9Nh7SGhum0Ssv1PwWat93BDsK2OqypsTkCvqw0kVh5XLALIfKBNn2pHDdM8fSEqoLShnzdSwbdmtQwsHdXZtHka7tIkdCov3CiTQop4RuFNg+UvVAcHopl+Wby3ALxtpINxXMjDL8lBBXxp6CLGjpKvhTJkdAc+lPihLeq3zfD/V0uLteRhJqx80PtTID+JOqqEJMYNr1x7cyvsVWS24pg/hZf5kXrRVgQf0DuRDTpK2BUg4o0JxdfbaBNuOCqsTgsxbiJEbuLm4z5oAo/T2lMr0lrGSSZBoRhOWEmoNYEU9BoDr9UAs3vs/eSg6UqsdiQIfwzpmxpJV70EYXMZKEqwHQLFicD8Zvv+osGu2IcmbP9FdMacmf1fNzCflSR02ND9HL6l15DBngnSySELGxOkYxAO4+31+EiScJfpsPS40PFlkdjthd0IG70FIT7kgKPQQWFD4+8UhjYeM0zRrzMnGp1+K/Qp1/rqeM1E6jHWLGFwFD5ai6D9Lwe1qP0QJrHlBZiqx/wXkk92DC1sDQaDp/AvkHG1klRLA+dHxk6whW5d+oOUNVGasAp9PhpJVIU07pGhglkNr/ctyCHJEYpCBVGJMn58+MeVkNmu2si7xPE+hHd/HBcOxk6vLt/Wpx6bZNhPVQdsznzJytyUOa/cTUCNFqVyMLl1P7jDY/gZ88xTCbg0NZqG2ot+S3RYhdp35cBMwfiHrgb9egnadk+2puzgONSe7ck+Kd/Gn7lrO7uLy4m3fjKA0LWgf3pXKEQCATj/V7YPIiR2L9gf3eWIejPLxFuHHc6WttO2v+UNyF1cVgFP7lgEyvCndg0m9DMPseAQK/jqFmOyLGANKq+YSMkJc/CBw5sPxIy7hu/sFO1kpIxa5uhrJRyRPlpCRw10pd+rDRNnlqi4qg0n4KcjvDqNepx/7vrYwnSVxxKdDpvMrrmwzf7JZ9AeI1Mdf1udSbdvhV9be7wqxPr2MoLpv4oYJh/RnRSyXsYSEQ8MSboShMO79MyNSG8d6/S69IBNNP3LtSh9/A6/fURil2zI74AZIdf/ED0BpiqywvRNlfv1zHqmVVZBKI9fVExYC6uuSEkfTBhKyXLSOvlLlLVIMvE7bo5U3f1zzId+F2iuaeoN3hfxL9qU+lShp5TzCHkD79zOvToTMD+imZhG1TQYwKunA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2e7470ed-6618-4cec-f29d-08dbd4391e8f X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:59.6694 (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: wpL67Ue+HcjodTi40jFtGRXC0E2NrQtI3og2ndIBZ7rWZVb1tot3C2e38tBkiXFRv47BKza7V5HgqonYLfOudZSRm9YJr9SOjfLxeCN4Vrk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 parameter 'hw' into 'net_hw' in the related logic, to make the name more accurate. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.c | 8 +-- drivers/net/nfp/nfp_ethdev.c | 86 +++++++++++------------ drivers/net/nfp/nfp_ethdev_vf.c | 62 +++++++++-------- drivers/net/nfp/nfp_ipsec.c | 82 +++++++++++----------- drivers/net/nfp/nfp_net_common.c | 102 ++++++++++++++++------------ drivers/net/nfp/nfp_net_ctrl.c | 14 ++-- drivers/net/nfp/nfp_rxtx.c | 16 ++--- 7 files changed, 193 insertions(+), 177 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 831f4a7265..f3fedbf7e5 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -25,18 +25,18 @@ static void nfp_pf_repr_enable_queues(struct rte_eth_dev *dev) { uint16_t i; - struct nfp_net_hw *hw; + struct nfp_hw *hw; uint64_t enabled_queues = 0; struct nfp_flower_representor *repr; repr = dev->data->dev_private; - hw = repr->app_fw_flower->pf_hw; + hw = &repr->app_fw_flower->pf_hw->super; /* Enabling the required TX queues in the device */ for (i = 0; i < dev->data->nb_tx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); + nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); enabled_queues = 0; @@ -44,7 +44,7 @@ nfp_pf_repr_enable_queues(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_rx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); + nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); } static void diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index a93742a205..3d4b78fbf1 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -479,11 +479,11 @@ nfp_net_init(struct rte_eth_dev *eth_dev) uint16_t port; uint64_t rx_base; uint64_t tx_base; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_pf_dev *pf_dev; struct rte_pci_device *pci_dev; struct nfp_app_fw_nic *app_fw_nic; - struct rte_ether_addr *tmp_ether_addr; pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); @@ -503,46 +503,47 @@ nfp_net_init(struct rte_eth_dev *eth_dev) * Use PF array of physical ports to get pointer to * this specific port. */ - hw = app_fw_nic->ports[port]; + net_hw = app_fw_nic->ports[port]; + hw = &net_hw->super; PMD_INIT_LOG(DEBUG, "Working with physical port number: %hu, " - "NFP internal port number: %d", port, hw->nfp_idx); + "NFP internal port number: %d", port, net_hw->nfp_idx); rte_eth_copy_pci_info(eth_dev, pci_dev); - hw->super.ctrl_bar = pci_dev->mem_resource[0].addr; - if (hw->super.ctrl_bar == NULL) { - PMD_DRV_LOG(ERR, "hw->super.ctrl_bar is NULL. BAR0 not configured"); + hw->ctrl_bar = pci_dev->mem_resource[0].addr; + if (hw->ctrl_bar == NULL) { + PMD_DRV_LOG(ERR, "hw->ctrl_bar is NULL. BAR0 not configured"); return -ENODEV; } if (port == 0) { uint32_t min_size; - hw->super.ctrl_bar = pf_dev->ctrl_bar; - min_size = NFP_MAC_STATS_SIZE * hw->pf_dev->nfp_eth_table->max_index; - hw->mac_stats_bar = nfp_rtsym_map(hw->pf_dev->sym_tbl, "_mac_stats", - min_size, &hw->mac_stats_area); - if (hw->mac_stats_bar == NULL) { + hw->ctrl_bar = pf_dev->ctrl_bar; + min_size = NFP_MAC_STATS_SIZE * net_hw->pf_dev->nfp_eth_table->max_index; + net_hw->mac_stats_bar = nfp_rtsym_map(net_hw->pf_dev->sym_tbl, "_mac_stats", + min_size, &net_hw->mac_stats_area); + if (net_hw->mac_stats_bar == NULL) { PMD_INIT_LOG(ERR, "nfp_rtsym_map fails for _mac_stats_bar"); return -EIO; } - hw->mac_stats = hw->mac_stats_bar; + net_hw->mac_stats = net_hw->mac_stats_bar; } else { if (pf_dev->ctrl_bar == NULL) return -ENODEV; /* Use port offset in pf ctrl_bar for this ports control bar */ - hw->super.ctrl_bar = pf_dev->ctrl_bar + (port * NFP_NET_CFG_BAR_SZ); - hw->mac_stats = app_fw_nic->ports[0]->mac_stats_bar + - (hw->nfp_idx * NFP_MAC_STATS_SIZE); + hw->ctrl_bar = pf_dev->ctrl_bar + (port * NFP_NET_CFG_BAR_SZ); + net_hw->mac_stats = app_fw_nic->ports[0]->mac_stats_bar + + (net_hw->nfp_idx * NFP_MAC_STATS_SIZE); } - PMD_INIT_LOG(DEBUG, "ctrl bar: %p", hw->super.ctrl_bar); - PMD_INIT_LOG(DEBUG, "MAC stats: %p", hw->mac_stats); + PMD_INIT_LOG(DEBUG, "ctrl bar: %p", hw->ctrl_bar); + PMD_INIT_LOG(DEBUG, "MAC stats: %p", net_hw->mac_stats); - err = nfp_net_common_init(pci_dev, hw); + err = nfp_net_common_init(pci_dev, net_hw); if (err != 0) return err; @@ -558,38 +559,38 @@ nfp_net_init(struct rte_eth_dev *eth_dev) return err; } - nfp_net_ethdev_ops_mount(hw, eth_dev); + nfp_net_ethdev_ops_mount(net_hw, eth_dev); - hw->eth_xstats_base = rte_malloc("rte_eth_xstat", sizeof(struct rte_eth_xstat) * + net_hw->eth_xstats_base = rte_malloc("rte_eth_xstat", sizeof(struct rte_eth_xstat) * nfp_net_xstats_size(eth_dev), 0); - if (hw->eth_xstats_base == NULL) { + if (net_hw->eth_xstats_base == NULL) { PMD_INIT_LOG(ERR, "no memory for xstats base values on device %s!", pci_dev->device.name); return -ENOMEM; } /* Work out where in the BAR the queues start. */ - tx_base = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_TXQ); - rx_base = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_RXQ); + tx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); + rx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); - hw->tx_bar = pf_dev->qc_bar + tx_base * NFP_QCP_QUEUE_ADDR_SZ; - hw->rx_bar = pf_dev->qc_bar + rx_base * NFP_QCP_QUEUE_ADDR_SZ; - eth_dev->data->dev_private = hw; + net_hw->tx_bar = pf_dev->qc_bar + tx_base * NFP_QCP_QUEUE_ADDR_SZ; + net_hw->rx_bar = pf_dev->qc_bar + rx_base * NFP_QCP_QUEUE_ADDR_SZ; + eth_dev->data->dev_private = net_hw; PMD_INIT_LOG(DEBUG, "ctrl_bar: %p, tx_bar: %p, rx_bar: %p", - hw->super.ctrl_bar, hw->tx_bar, hw->rx_bar); + hw->ctrl_bar, net_hw->tx_bar, net_hw->rx_bar); - nfp_net_cfg_queue_setup(hw); - hw->mtu = RTE_ETHER_MTU; + nfp_net_cfg_queue_setup(net_hw); + net_hw->mtu = RTE_ETHER_MTU; /* VLAN insertion is incompatible with LSOv2 */ - if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO2) != 0) - hw->super.cap &= ~NFP_NET_CFG_CTRL_TXVLAN; + if ((hw->cap & NFP_NET_CFG_CTRL_LSO2) != 0) + hw->cap &= ~NFP_NET_CFG_CTRL_TXVLAN; - nfp_net_log_device_information(hw); + nfp_net_log_device_information(net_hw); /* Initializing spinlock for reconfigs */ - rte_spinlock_init(&hw->super.reconfig_lock); + rte_spinlock_init(&hw->reconfig_lock); /* Allocating memory for mac addr */ eth_dev->data->mac_addrs = rte_zmalloc("mac_addr", RTE_ETHER_ADDR_LEN, 0); @@ -599,20 +600,19 @@ nfp_net_init(struct rte_eth_dev *eth_dev) } nfp_net_pf_read_mac(app_fw_nic, port); - nfp_net_write_mac(&hw->super, &hw->super.mac_addr.addr_bytes[0]); + nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); - tmp_ether_addr = &hw->super.mac_addr; - if (rte_is_valid_assigned_ether_addr(tmp_ether_addr) == 0) { + if (rte_is_valid_assigned_ether_addr(&hw->mac_addr) == 0) { PMD_INIT_LOG(INFO, "Using random mac address for port %d", port); /* Using random mac addresses for VFs */ - rte_eth_random_addr(&hw->super.mac_addr.addr_bytes[0]); - nfp_net_write_mac(&hw->super, &hw->super.mac_addr.addr_bytes[0]); + rte_eth_random_addr(&hw->mac_addr.addr_bytes[0]); + nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); } /* Copying mac address to DPDK eth_dev struct */ - rte_ether_addr_copy(&hw->super.mac_addr, eth_dev->data->mac_addrs); + rte_ether_addr_copy(&hw->mac_addr, eth_dev->data->mac_addrs); - if ((hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) + if ((hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) eth_dev->data->dev_flags |= RTE_ETH_DEV_NOLIVE_MAC_ADDR; eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; @@ -621,13 +621,13 @@ nfp_net_init(struct rte_eth_dev *eth_dev) "mac=" RTE_ETHER_ADDR_PRT_FMT, eth_dev->data->port_id, pci_dev->id.vendor_id, pci_dev->id.device_id, - RTE_ETHER_ADDR_BYTES(&hw->super.mac_addr)); + RTE_ETHER_ADDR_BYTES(&hw->mac_addr)); /* Registering LSC interrupt handler */ rte_intr_callback_register(pci_dev->intr_handle, nfp_net_dev_interrupt_handler, (void *)eth_dev); /* Telling the firmware about the LSC interrupt entry */ - nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); + nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); /* Recording current stats counters values */ nfp_net_stats_reset(eth_dev); diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index dead6ca5ab..049728d30c 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -254,7 +254,8 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) int err; uint16_t port; uint32_t start_q; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; uint64_t tx_bar_off = 0; uint64_t rx_bar_off = 0; struct rte_pci_device *pci_dev; @@ -269,22 +270,23 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) return -ENODEV; } - hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); - hw->dev_info = dev_info; + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + net_hw->dev_info = dev_info; + hw = &net_hw->super; - hw->super.ctrl_bar = pci_dev->mem_resource[0].addr; - if (hw->super.ctrl_bar == NULL) { + hw->ctrl_bar = pci_dev->mem_resource[0].addr; + if (hw->ctrl_bar == NULL) { PMD_DRV_LOG(ERR, "hw->super.ctrl_bar is NULL. BAR0 not configured"); return -ENODEV; } - PMD_INIT_LOG(DEBUG, "ctrl bar: %p", hw->super.ctrl_bar); + PMD_INIT_LOG(DEBUG, "ctrl bar: %p", hw->ctrl_bar); - err = nfp_net_common_init(pci_dev, hw); + err = nfp_net_common_init(pci_dev, net_hw); if (err != 0) return err; - nfp_netvf_ethdev_ops_mount(hw, eth_dev); + nfp_netvf_ethdev_ops_mount(net_hw, eth_dev); /* For secondary processes, the primary has done all the work */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) @@ -292,37 +294,37 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) rte_eth_copy_pci_info(eth_dev, pci_dev); - hw->eth_xstats_base = rte_malloc("rte_eth_xstat", + net_hw->eth_xstats_base = rte_malloc("rte_eth_xstat", sizeof(struct rte_eth_xstat) * nfp_net_xstats_size(eth_dev), 0); - if (hw->eth_xstats_base == NULL) { + if (net_hw->eth_xstats_base == NULL) { PMD_INIT_LOG(ERR, "No memory for xstats base values on device %s!", pci_dev->device.name); return -ENOMEM; } /* Work out where in the BAR the queues start. */ - start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_TXQ); + start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); tx_bar_off = nfp_qcp_queue_offset(dev_info, start_q); - start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_RXQ); + start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); rx_bar_off = nfp_qcp_queue_offset(dev_info, start_q); - hw->tx_bar = (uint8_t *)pci_dev->mem_resource[2].addr + tx_bar_off; - hw->rx_bar = (uint8_t *)pci_dev->mem_resource[2].addr + rx_bar_off; + net_hw->tx_bar = (uint8_t *)pci_dev->mem_resource[2].addr + tx_bar_off; + net_hw->rx_bar = (uint8_t *)pci_dev->mem_resource[2].addr + rx_bar_off; PMD_INIT_LOG(DEBUG, "ctrl_bar: %p, tx_bar: %p, rx_bar: %p", - hw->super.ctrl_bar, hw->tx_bar, hw->rx_bar); + hw->ctrl_bar, net_hw->tx_bar, net_hw->rx_bar); - nfp_net_cfg_queue_setup(hw); - hw->mtu = RTE_ETHER_MTU; + nfp_net_cfg_queue_setup(net_hw); + net_hw->mtu = RTE_ETHER_MTU; /* VLAN insertion is incompatible with LSOv2 */ - if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO2) != 0) - hw->super.cap &= ~NFP_NET_CFG_CTRL_TXVLAN; + if ((hw->cap & NFP_NET_CFG_CTRL_LSO2) != 0) + hw->cap &= ~NFP_NET_CFG_CTRL_TXVLAN; - nfp_net_log_device_information(hw); + nfp_net_log_device_information(net_hw); /* Initializing spinlock for reconfigs */ - rte_spinlock_init(&hw->super.reconfig_lock); + rte_spinlock_init(&hw->reconfig_lock); /* Allocating memory for mac addr */ eth_dev->data->mac_addrs = rte_zmalloc("mac_addr", RTE_ETHER_ADDR_LEN, 0); @@ -332,18 +334,18 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) goto dev_err_ctrl_map; } - nfp_netvf_read_mac(&hw->super); - if (rte_is_valid_assigned_ether_addr(&hw->super.mac_addr) == 0) { + nfp_netvf_read_mac(hw); + if (rte_is_valid_assigned_ether_addr(&hw->mac_addr) == 0) { PMD_INIT_LOG(INFO, "Using random mac address for port %hu", port); /* Using random mac addresses for VFs */ - rte_eth_random_addr(&hw->super.mac_addr.addr_bytes[0]); - nfp_net_write_mac(&hw->super, &hw->super.mac_addr.addr_bytes[0]); + rte_eth_random_addr(&hw->mac_addr.addr_bytes[0]); + nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); } /* Copying mac address to DPDK eth_dev struct */ - rte_ether_addr_copy(&hw->super.mac_addr, eth_dev->data->mac_addrs); + rte_ether_addr_copy(&hw->mac_addr, eth_dev->data->mac_addrs); - if ((hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) + if ((hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) eth_dev->data->dev_flags |= RTE_ETH_DEV_NOLIVE_MAC_ADDR; eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; @@ -352,14 +354,14 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) "mac=" RTE_ETHER_ADDR_PRT_FMT, port, pci_dev->id.vendor_id, pci_dev->id.device_id, - RTE_ETHER_ADDR_BYTES(&hw->super.mac_addr)); + RTE_ETHER_ADDR_BYTES(&hw->mac_addr)); if (rte_eal_process_type() == RTE_PROC_PRIMARY) { /* Registering LSC interrupt handler */ rte_intr_callback_register(pci_dev->intr_handle, nfp_net_dev_interrupt_handler, (void *)eth_dev); /* Telling the firmware about the LSC interrupt entry */ - nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); + nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); /* Recording current stats counters values */ nfp_net_stats_reset(eth_dev); } @@ -367,7 +369,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) return 0; dev_err_ctrl_map: - nfp_cpp_area_free(hw->ctrl_area); + nfp_cpp_area_free(net_hw->ctrl_area); return err; } diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index 0da5c2a3d2..7e26977dc1 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -434,7 +434,7 @@ enum nfp_ipsec_df_type { }; static int -nfp_ipsec_cfg_cmd_issue(struct nfp_net_hw *hw, +nfp_ipsec_cfg_cmd_issue(struct nfp_net_hw *net_hw, struct nfp_ipsec_msg *msg) { int ret; @@ -445,9 +445,9 @@ nfp_ipsec_cfg_cmd_issue(struct nfp_net_hw *hw, msg->rsp = NFP_IPSEC_CFG_MSG_OK; for (i = 0; i < msg_size; i++) - nn_cfg_writel(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i, msg->raw[i]); + nn_cfg_writel(&net_hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i, msg->raw[i]); - ret = nfp_net_mbox_reconfig(hw, NFP_NET_CFG_MBOX_CMD_IPSEC); + ret = nfp_net_mbox_reconfig(net_hw, NFP_NET_CFG_MBOX_CMD_IPSEC); if (ret < 0) { PMD_DRV_LOG(ERR, "Failed to IPsec reconfig mbox"); return ret; @@ -459,7 +459,7 @@ nfp_ipsec_cfg_cmd_issue(struct nfp_net_hw *hw, * response. One example where the data is needed is for statistics. */ for (i = 0; i < msg_size; i++) - msg->raw[i] = nn_cfg_readl(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i); + msg->raw[i] = nn_cfg_readl(&net_hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i); switch (msg->rsp) { case NFP_IPSEC_CFG_MSG_OK: @@ -577,10 +577,10 @@ nfp_aead_map(struct rte_eth_dev *eth_dev, uint32_t device_id; const char *iv_str; const uint32_t *key; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); - device_id = hw->device_id; + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + device_id = net_hw->device_id; offset = 0; switch (aead->algo) { @@ -665,10 +665,10 @@ nfp_cipher_map(struct rte_eth_dev *eth_dev, uint32_t i; uint32_t device_id; const uint32_t *key; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); - device_id = hw->device_id; + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + device_id = net_hw->device_id; switch (cipher->algo) { case RTE_CRYPTO_CIPHER_NULL: @@ -801,15 +801,15 @@ nfp_auth_map(struct rte_eth_dev *eth_dev, uint8_t key_length; uint32_t device_id; const uint32_t *key; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; if (digest_length == 0) { PMD_DRV_LOG(ERR, "Auth digest length is illegal!"); return -EINVAL; } - hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); - device_id = hw->device_id; + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + device_id = net_hw->device_id; digest_length = digest_length << 3; switch (auth->algo) { @@ -1068,7 +1068,7 @@ nfp_crypto_create_session(void *device, { int ret; int sa_idx; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_ipsec_msg msg; struct rte_eth_dev *eth_dev; struct nfp_ipsec_session *priv_session; @@ -1082,14 +1082,14 @@ nfp_crypto_create_session(void *device, sa_idx = -1; eth_dev = device; priv_session = SECURITY_GET_SESS_PRIV(session); - hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); - if (hw->ipsec_data->sa_free_cnt == 0) { + if (net_hw->ipsec_data->sa_free_cnt == 0) { PMD_DRV_LOG(ERR, "No space in SA table, spi: %d", conf->ipsec.spi); return -EINVAL; } - nfp_get_sa_entry(hw->ipsec_data, &sa_idx); + nfp_get_sa_entry(net_hw->ipsec_data, &sa_idx); if (sa_idx < 0) { PMD_DRV_LOG(ERR, "Failed to get SA entry!"); @@ -1105,7 +1105,7 @@ nfp_crypto_create_session(void *device, msg.cmd = NFP_IPSEC_CFG_MSG_ADD_SA; msg.sa_idx = sa_idx; - ret = nfp_ipsec_cfg_cmd_issue(hw, &msg); + ret = nfp_ipsec_cfg_cmd_issue(net_hw, &msg); if (ret < 0) { PMD_DRV_LOG(ERR, "Failed to add SA to nic"); return -EINVAL; @@ -1118,8 +1118,8 @@ nfp_crypto_create_session(void *device, priv_session->dev = eth_dev; priv_session->user_data = conf->userdata; - hw->ipsec_data->sa_free_cnt--; - hw->ipsec_data->sa_entries[sa_idx] = priv_session; + net_hw->ipsec_data->sa_free_cnt--; + net_hw->ipsec_data->sa_entries[sa_idx] = priv_session; return 0; } @@ -1156,19 +1156,19 @@ nfp_security_set_pkt_metadata(void *device, { int offset; uint64_t *sqn; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct rte_eth_dev *eth_dev; struct nfp_ipsec_session *priv_session; sqn = params; eth_dev = device; priv_session = SECURITY_GET_SESS_PRIV(session); - hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); if (priv_session->ipsec.direction == RTE_SECURITY_IPSEC_SA_DIR_EGRESS) { struct nfp_tx_ipsec_desc_msg *desc_md; - offset = hw->ipsec_data->pkt_dynfield_offset; + offset = net_hw->ipsec_data->pkt_dynfield_offset; desc_md = RTE_MBUF_DYNFIELD(m, offset, struct nfp_tx_ipsec_desc_msg *); if (priv_session->msg.ctrl_word.ext_seq != 0 && sqn != NULL) { @@ -1223,7 +1223,7 @@ nfp_security_session_get_stats(void *device, struct rte_security_stats *stats) { int ret; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_ipsec_msg msg; struct rte_eth_dev *eth_dev; struct ipsec_get_sa_stats *cfg_s; @@ -1236,9 +1236,9 @@ nfp_security_session_get_stats(void *device, memset(&msg, 0, sizeof(msg)); msg.cmd = NFP_IPSEC_CFG_MSG_GET_SA_STATS; msg.sa_idx = priv_session->sa_index; - hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); - ret = nfp_ipsec_cfg_cmd_issue(hw, &msg); + ret = nfp_ipsec_cfg_cmd_issue(net_hw, &msg); if (ret < 0) { PMD_DRV_LOG(ERR, "Failed to get SA stats"); return ret; @@ -1284,22 +1284,22 @@ nfp_crypto_remove_sa(struct rte_eth_dev *eth_dev, { int ret; uint32_t sa_index; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_ipsec_msg cfg; sa_index = priv_session->sa_index; - hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); cfg.cmd = NFP_IPSEC_CFG_MSG_INV_SA; cfg.sa_idx = sa_index; - ret = nfp_ipsec_cfg_cmd_issue(hw, &cfg); + ret = nfp_ipsec_cfg_cmd_issue(net_hw, &cfg); if (ret < 0) { PMD_DRV_LOG(ERR, "Failed to remove SA!"); return -EINVAL; } - hw->ipsec_data->sa_free_cnt++; - hw->ipsec_data->sa_entries[sa_index] = NULL; + net_hw->ipsec_data->sa_free_cnt++; + net_hw->ipsec_data->sa_entries[sa_index] = NULL; return 0; } @@ -1377,12 +1377,12 @@ nfp_ipsec_init(struct rte_eth_dev *dev) { int ret; uint32_t cap_extend; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_net_ipsec_data *data; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - cap_extend = hw->super.cap_ext; + cap_extend = net_hw->super.cap_ext; if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) == 0) { PMD_INIT_LOG(INFO, "Unsupported IPsec extend capability"); return 0; @@ -1396,7 +1396,7 @@ nfp_ipsec_init(struct rte_eth_dev *dev) data->pkt_dynfield_offset = -1; data->sa_free_cnt = NFP_NET_IPSEC_MAX_SA_CNT; - hw->ipsec_data = data; + net_hw->ipsec_data = data; ret = nfp_ipsec_ctx_create(dev, data); if (ret != 0) { @@ -1424,12 +1424,12 @@ nfp_ipsec_uninit(struct rte_eth_dev *dev) { uint16_t i; uint32_t cap_extend; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_ipsec_session *priv_session; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - cap_extend = hw->super.cap_ext; + cap_extend = net_hw->super.cap_ext; if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) == 0) { PMD_INIT_LOG(INFO, "Unsupported IPsec extend capability"); return; @@ -1437,17 +1437,17 @@ nfp_ipsec_uninit(struct rte_eth_dev *dev) nfp_ipsec_ctx_destroy(dev); - if (hw->ipsec_data == NULL) { + if (net_hw->ipsec_data == NULL) { PMD_INIT_LOG(INFO, "IPsec data is NULL!"); return; } for (i = 0; i < NFP_NET_IPSEC_MAX_SA_CNT; i++) { - priv_session = hw->ipsec_data->sa_entries[i]; + priv_session = net_hw->ipsec_data->sa_entries[i]; if (priv_session != NULL) memset(priv_session, 0, sizeof(struct nfp_ipsec_session)); } - rte_free(hw->ipsec_data); + rte_free(net_hw->ipsec_data); } diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index a760fcf0d2..01574de963 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -336,7 +336,7 @@ nfp_ext_reconfig(struct nfp_hw *hw, /** * Reconfigure the firmware via the mailbox * - * @param hw + * @param net_hw * Device to reconfigure * @param mbox_cmd * The value for the mailbox command @@ -346,24 +346,24 @@ nfp_ext_reconfig(struct nfp_hw *hw, * - (-EIO) if I/O err and fail to reconfigure by the mailbox */ int -nfp_net_mbox_reconfig(struct nfp_net_hw *hw, +nfp_net_mbox_reconfig(struct nfp_net_hw *net_hw, uint32_t mbox_cmd) { int ret; uint32_t mbox; - mbox = hw->tlv_caps.mbox_off; + mbox = net_hw->tlv_caps.mbox_off; - rte_spinlock_lock(&hw->super.reconfig_lock); + rte_spinlock_lock(&net_hw->super.reconfig_lock); - nn_cfg_writeq(&hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_CMD, mbox_cmd); - nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_MBOX); + nn_cfg_writeq(&net_hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_CMD, mbox_cmd); + nn_cfg_writel(&net_hw->super, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_MBOX); rte_wmb(); - ret = nfp_reconfig_real(&hw->super, NFP_NET_CFG_UPDATE_MBOX); + ret = nfp_reconfig_real(&net_hw->super, NFP_NET_CFG_UPDATE_MBOX); - rte_spinlock_unlock(&hw->super.reconfig_lock); + rte_spinlock_unlock(&net_hw->super.reconfig_lock); if (ret != 0) { PMD_DRV_LOG(ERR, "Error nft net mailbox reconfig: mbox=%#08x update=%#08x", @@ -371,7 +371,7 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *hw, return -EIO; } - return nn_cfg_readl(&hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET); + return nn_cfg_readl(&net_hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET); } /* @@ -625,6 +625,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev, uint32_t nfp_check_offloads(struct rte_eth_dev *dev) { + uint32_t cap; uint32_t ctrl = 0; uint64_t rx_offload; uint64_t tx_offload; @@ -632,13 +633,14 @@ nfp_check_offloads(struct rte_eth_dev *dev) struct rte_eth_conf *dev_conf; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + cap = hw->super.cap; dev_conf = &dev->data->dev_conf; rx_offload = dev_conf->rxmode.offloads; tx_offload = dev_conf->txmode.offloads; if ((rx_offload & RTE_ETH_RX_OFFLOAD_IPV4_CKSUM) != 0) { - if ((hw->super.cap & NFP_NET_CFG_CTRL_RXCSUM) != 0) + if ((cap & NFP_NET_CFG_CTRL_RXCSUM) != 0) ctrl |= NFP_NET_CFG_CTRL_RXCSUM; } @@ -646,25 +648,25 @@ nfp_check_offloads(struct rte_eth_dev *dev) nfp_net_enable_rxvlan_cap(hw, &ctrl); if ((rx_offload & RTE_ETH_RX_OFFLOAD_QINQ_STRIP) != 0) { - if ((hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) != 0) + if ((cap & NFP_NET_CFG_CTRL_RXQINQ) != 0) ctrl |= NFP_NET_CFG_CTRL_RXQINQ; } hw->mtu = dev->data->mtu; if ((tx_offload & RTE_ETH_TX_OFFLOAD_VLAN_INSERT) != 0) { - if ((hw->super.cap & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) + if ((cap & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) ctrl |= NFP_NET_CFG_CTRL_TXVLAN_V2; - else if ((hw->super.cap & NFP_NET_CFG_CTRL_TXVLAN) != 0) + else if ((cap & NFP_NET_CFG_CTRL_TXVLAN) != 0) ctrl |= NFP_NET_CFG_CTRL_TXVLAN; } /* L2 broadcast */ - if ((hw->super.cap & NFP_NET_CFG_CTRL_L2BC) != 0) + if ((cap & NFP_NET_CFG_CTRL_L2BC) != 0) ctrl |= NFP_NET_CFG_CTRL_L2BC; /* L2 multicast */ - if ((hw->super.cap & NFP_NET_CFG_CTRL_L2MC) != 0) + if ((cap & NFP_NET_CFG_CTRL_L2MC) != 0) ctrl |= NFP_NET_CFG_CTRL_L2MC; /* TX checksum offload */ @@ -676,7 +678,7 @@ nfp_check_offloads(struct rte_eth_dev *dev) /* LSO offload */ if ((tx_offload & RTE_ETH_TX_OFFLOAD_TCP_TSO) != 0 || (tx_offload & RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO) != 0) { - if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO) != 0) + if ((cap & NFP_NET_CFG_CTRL_LSO) != 0) ctrl |= NFP_NET_CFG_CTRL_LSO; else ctrl |= NFP_NET_CFG_CTRL_LSO2; @@ -1194,6 +1196,7 @@ nfp_net_tx_desc_limits(struct nfp_net_hw *hw, int nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { + uint32_t cap; uint32_t cap_extend; uint16_t min_rx_desc; uint16_t max_rx_desc; @@ -1224,32 +1227,34 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) /* Next should change when PF support is implemented */ dev_info->max_mac_addrs = 1; - if ((hw->super.cap & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) != 0) + cap = hw->super.cap; + + if ((cap & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) != 0) dev_info->rx_offload_capa = RTE_ETH_RX_OFFLOAD_VLAN_STRIP; - if ((hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) != 0) + if ((cap & NFP_NET_CFG_CTRL_RXQINQ) != 0) dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_QINQ_STRIP; - if ((hw->super.cap & NFP_NET_CFG_CTRL_RXCSUM) != 0) + if ((cap & NFP_NET_CFG_CTRL_RXCSUM) != 0) dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_IPV4_CKSUM | RTE_ETH_RX_OFFLOAD_UDP_CKSUM | RTE_ETH_RX_OFFLOAD_TCP_CKSUM; - if ((hw->super.cap & (NFP_NET_CFG_CTRL_TXVLAN | NFP_NET_CFG_CTRL_TXVLAN_V2)) != 0) + if ((cap & (NFP_NET_CFG_CTRL_TXVLAN | NFP_NET_CFG_CTRL_TXVLAN_V2)) != 0) dev_info->tx_offload_capa = RTE_ETH_TX_OFFLOAD_VLAN_INSERT; - if ((hw->super.cap & NFP_NET_CFG_CTRL_TXCSUM) != 0) + if ((cap & NFP_NET_CFG_CTRL_TXCSUM) != 0) dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | RTE_ETH_TX_OFFLOAD_UDP_CKSUM | RTE_ETH_TX_OFFLOAD_TCP_CKSUM; - if ((hw->super.cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0) { + if ((cap & NFP_NET_CFG_CTRL_LSO_ANY) != 0) { dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_TCP_TSO; - if ((hw->super.cap & NFP_NET_CFG_CTRL_VXLAN) != 0) + if ((cap & NFP_NET_CFG_CTRL_VXLAN) != 0) dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO; } - if ((hw->super.cap & NFP_NET_CFG_CTRL_GATHER) != 0) + if ((cap & NFP_NET_CFG_CTRL_GATHER) != 0) dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_MULTI_SEGS; cap_extend = hw->super.cap_ext; @@ -1292,7 +1297,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) .nb_mtu_seg_max = NFP_TX_MAX_MTU_SEG, }; - if ((hw->super.cap & NFP_NET_CFG_CTRL_RSS_ANY) != 0) { + if ((cap & NFP_NET_CFG_CTRL_RSS_ANY) != 0) { dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_RSS_HASH; dev_info->flow_type_rss_offloads = RTE_ETH_RSS_IPV4 | @@ -1615,9 +1620,11 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, uint8_t mask; uint32_t reta; uint16_t shift; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) { PMD_DRV_LOG(ERR, "The size of hash lookup table configured (%hu)" @@ -1642,7 +1649,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, /* If all 4 entries were set, don't need read RETA register */ if (mask != 0xF) - reta = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_ITBL + i); + reta = nn_cfg_readl(hw, NFP_NET_CFG_RSS_ITBL + i); for (j = 0; j < 4; j++) { if ((mask & (0x1 << j)) == 0) @@ -1655,7 +1662,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, reta |= reta_conf[idx].reta[shift + j] << (8 * j); } - nn_cfg_writel(&hw->super, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift, reta); + nn_cfg_writel(hw, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift, reta); } return 0; @@ -1702,10 +1709,13 @@ nfp_net_reta_query(struct rte_eth_dev *dev, uint8_t mask; uint32_t reta; uint16_t shift; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; + + if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) { @@ -1728,7 +1738,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev, if (mask == 0) continue; - reta = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift); + reta = nn_cfg_readl(hw, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift); for (j = 0; j < 4; j++) { if ((mask & (0x1 << j)) == 0) continue; @@ -1748,15 +1758,17 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, uint8_t i; uint8_t key; uint64_t rss_hf; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; uint32_t cfg_rss_ctrl = 0; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; /* Writing the key byte by byte */ for (i = 0; i < rss_conf->rss_key_len; i++) { memcpy(&key, &rss_conf->rss_key[i], 1); - nn_cfg_writeb(&hw->super, NFP_NET_CFG_RSS_KEY + i, key); + nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY + i, key); } rss_hf = rss_conf->rss_hf; @@ -1789,10 +1801,10 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ; /* Configuring where to apply the RSS hash */ - nn_cfg_writel(&hw->super, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); + nn_cfg_writel(hw, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); /* Writing the key size */ - nn_cfg_writeb(&hw->super, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len); + nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len); return 0; } @@ -1843,16 +1855,18 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, uint8_t i; uint8_t key; uint64_t rss_hf; + struct nfp_hw *hw; uint32_t cfg_rss_ctrl; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; rss_hf = rss_conf->rss_hf; - cfg_rss_ctrl = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_CTRL); + cfg_rss_ctrl = nn_cfg_readl(hw, NFP_NET_CFG_RSS_CTRL); if ((cfg_rss_ctrl & NFP_NET_CFG_RSS_IPV4) != 0) rss_hf |= RTE_ETH_RSS_IPV4; @@ -1882,11 +1896,11 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, rss_conf->rss_hf = rss_hf; /* Reading the key size */ - rss_conf->rss_key_len = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_KEY_SZ); + rss_conf->rss_key_len = nn_cfg_readl(hw, NFP_NET_CFG_RSS_KEY_SZ); /* Reading the key byte a byte */ for (i = 0; i < rss_conf->rss_key_len; i++) { - key = nn_cfg_readb(&hw->super, NFP_NET_CFG_RSS_KEY + i); + key = nn_cfg_readb(hw, NFP_NET_CFG_RSS_KEY + i); memcpy(&rss_conf->rss_key[i], &key, 1); } diff --git a/drivers/net/nfp/nfp_net_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c index d469896a64..8848fa38fe 100644 --- a/drivers/net/nfp/nfp_net_ctrl.c +++ b/drivers/net/nfp/nfp_net_ctrl.c @@ -29,15 +29,15 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) uint32_t length; uint32_t offset; uint32_t tlv_type; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_net_tlv_caps *caps; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - caps = &hw->tlv_caps; + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + caps = &net_hw->tlv_caps; nfp_net_tlv_caps_reset(caps); - data = hw->super.ctrl_bar + NFP_NET_CFG_TLV_BASE; - end = hw->super.ctrl_bar + NFP_NET_CFG_BAR_SZ; + data = net_hw->super.ctrl_bar + NFP_NET_CFG_TLV_BASE; + end = net_hw->super.ctrl_bar + NFP_NET_CFG_BAR_SZ; hdr = rte_read32(data); if (hdr == 0) { @@ -46,7 +46,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) } for (; ; data += length) { - offset = data - hw->super.ctrl_bar; + offset = data - net_hw->super.ctrl_bar; if (data + NFP_NET_CFG_TLV_VALUE > end) { PMD_DRV_LOG(ERR, "Reached end of BAR without END TLV"); @@ -87,7 +87,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) caps->mbox_len = length; if (length != 0) - caps->mbox_off = data - hw->super.ctrl_bar; + caps->mbox_off = data - net_hw->super.ctrl_bar; else caps->mbox_off = 0; break; diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index f17cc13cc1..fc94e5f0b9 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -336,10 +336,10 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, struct nfp_net_rxq *rxq, struct rte_mbuf *mb) { - struct nfp_net_hw *hw = rxq->hw; + uint32_t ctrl = rxq->hw->super.ctrl; - /* Skip if firmware don't support setting vlan. */ - if ((hw->super.ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) + /* Skip if hardware don't support setting vlan. */ + if ((ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) return; /* @@ -347,12 +347,12 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, * 1. Using the metadata when NFP_NET_CFG_CTRL_RXVLAN_V2 is set, * 2. Using the descriptor when NFP_NET_CFG_CTRL_RXVLAN is set. */ - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { + if ((ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { if (meta->vlan_layer > 0 && meta->vlan[0].offload != 0) { mb->vlan_tci = rte_cpu_to_le_32(meta->vlan[0].tci); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; } - } else if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { + } else if ((ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { if ((rxd->rxd.flags & PCIE_DESC_RX_VLAN) != 0) { mb->vlan_tci = rte_cpu_to_le_32(rxd->rxd.offload_info); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; @@ -383,10 +383,10 @@ nfp_net_parse_meta_qinq(const struct nfp_meta_parsed *meta, struct nfp_net_rxq *rxq, struct rte_mbuf *mb) { - struct nfp_net_hw *hw = rxq->hw; + struct nfp_hw *hw = &rxq->hw->super; - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || - (hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) + if ((hw->ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || + (hw->cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) return; if (meta->vlan_layer < NFP_META_MAX_VLANS) From patchwork Tue Oct 24 02:28:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133218 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 1A02C431EB; Tue, 24 Oct 2023 04:31:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0AA2142DD0; Tue, 24 Oct 2023 04:30:08 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2104.outbound.protection.outlook.com [40.107.95.104]) by mails.dpdk.org (Postfix) with ESMTP id 6D2CE42D45 for ; Tue, 24 Oct 2023 04:30:04 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=USPZe40VOvh0ZTzvLqZeVr2wi4rw9EQWMfSbmAaL2pbsKZa80GVYig6qoAratjEsg0giPDNlppSYd9lo4Jxb7G4StHyHKjHYAzocEZSt+gIcXzkPaYZuGCYs32oesdyfeyceJTkFnaJNI/x2tuyVVC2w9sTByP+3KtdCqKsU3SPOYSfi7AtyWACl0qz5//BehRnfWje1cc8H8WT25cN7AtfyY61d9yw0lMbh2Ct/larMBl9xp53MukC7qvT8q1FgIHOBSnQdnKgot3YCg40fyvbHq01i3uOIhG4Ukf5gruBUTS5RVrZzqxKxQQvmCLtMO9ueqBXZ8HLL1bLp+ulLeg== 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=VurLmWw7RRuoSkPAT2ZrwuAsXMtvx/F0by1o5PEQd7s=; b=kjLH27aJL2bFJFI2LyLVkf0lKFbXihvX3LpFoxSK/UEVMwP9kKw1GSJvqtpDbXwP0SqiBS9LAz22zFSVVYyosouSbmGQ+6SQ1Ghl5uoq5esLk8ytsWuJE/2fBNh8rnl3kbFROaSftsjoycleHwcbrUv/cDnnU63wn4zfOM5R1ay8LvXGydrNrl4akkpj2BMCQgL7epRyHGiuGcYbF99INwB6WoQZsPKEsn+D/sM+EYTYE44/m0MMBrzUC5xYVDZOcKT0hmFjfTydSraZmcr6XM6OYUkkgAB+h3F2TrJC84/2K9gZwXs+fCdcZtH+W9mv7Od9B4lxCRNiL6brmrIByw== 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=VurLmWw7RRuoSkPAT2ZrwuAsXMtvx/F0by1o5PEQd7s=; b=QwrYyGruZvNA+3qAHm/s94Fkja3YcFLLPv03wVOlH5NVqxFHJYN9mMWrL7MMsz8zp4uemu2oxK5+3oTkiu3OJfRHzfgsaqf+BUFvhUzTEaTt4dRjS0mcOkaChV2wQE1hEiKZZcni+vrGtd/LZYsFcbVb8yqOAJXHD+NNhsuRE0M= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:30:01 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:01 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 13/25] drivers: add the common ctrl module Date: Tue, 24 Oct 2023 10:28:37 +0800 Message-Id: <20231024022849.3092506-14-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 31ae5bc0-b8cb-4e18-4860-08dbd4391fa9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: spXWwdrlD4IezchsRt96xh2N/kl4YcaVPLVA5fSlTCQWMLMZ7MqdMOMe8R8vF/otEWc1hObRa8RbC15QI9d075EBbK+TSxU5bp0qf2bdOyeOeCU7GzovFEiF0slbU3DPeWPPh1FPkSyiQZ08RZaJXeeSDdjypiDFolrDpis91lRfjoM7g6NjiWoADZvZqV2CISAQDellM6yWweFR8NWpkhyv8X1ym1ncb60tu/x7haJfHD52Vne467aovPNn7Pkes1N7SbMHb5GmDZdQ843puE7/MqgUddd09MfgIGx93DdOtisx86RSRMI2OPCLTrdjL7scE2SZi1QeZfoby+I6qOXA43buNHYxuqNsyddBiTw0MIbAypHQaYdi4J1sxhVVnouGYdF15CoEU/F0czRPe5S7AyUTQX9K95NgH6G5aDOnHgi9bD22ApQozWY09jybyjJvFZHi7aEhiYYR9RqfhnybZVlYrtwMuB8OAPcLNMl4kusxEg/iaaYPORwRrsTJh4RPctg79j2pBl92EFLGm/qM52eoZ53TdKH42mWsTYTC1hpeH1venvQzN00HhY3ag3iZdFLftOV5EKTHCJDcxQze8TmZnKvx+cqfsOPRhnkbBKJqhQODGKOiFrajCSCYozH0Xr0Lw85pz5avvATtCHQrXtYhgCvwnexRvgQqCI0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 74QbwTQGK0VuuB4GhOWBDnYdfPi8bOHOq6QIkWu/oBUn93rtGfdGL9DPeq+AXKbbnN0JcPe3Z7cR3hKdMqs1pSvXrhN6oK31bQR23dx5mypEMmW3KmFDQjucgY2IfMfqCjBf/IzMla+vSep4FpTQKW/KAC67N1TBdW4n5K2hjrXXdIzLicqio883VKsseu656GoQfvD4tBoaBG2fGqTxPMG9FIZKJ9ANYM6u1FlJ/N32OeUTTgIgXaJX3VSiQbRgFd6sZTAzp9dXy625Jse+imqV+aMMvaPEf5jIZ2xSOt3Z/c4bDbD5RMVqDRTPoy98XsqfjZzPMuwgqM9kA6ZWJqQTe7tUSNm+Fpfcn/27Pjd3ymfSq04cWd8VHrdreIl8wPrWgFUU+qEJkDrQ0GpGSBNef7hcOcORlnOPaoOOJlPYGm7cO461tanP2dYrTvrAbywF5CtlsgxrmOdL3XA/ogviO2YPz01xn4FnmgmYn0dQ19ZnwTEDzDnngAx+HYqsdHfeMIsUjoE1U83a0WuwT22HTwolpD+bPBNKvBTq0BZdNtt23AmYlfwdVCxb2iSb7hbdopUYtwgXztdXAj3RBLvhsof5eBrefDd2A/gbVKDuaqT4WJcx31gbPxwpl325MUj5qmcMZlDc7S4yvmkntkqAsMwAnvfDVBND3r4mVP++k9o1USJV1kI6g/GsZOKfMo/pkbodeT65sWzuPET78DBSLCrjVP8JCWyR0PrAczl4Nl5e9FbKzFNmRNy2JcgTPYjHIqONa25GEKBJXxEkwCDpZb7H9v4I4NmuVJz8Hm/F8gw36TGfdchG361k1mWShOrtFwTD/TmcdUYYhqDeMd06zotV/1mjR1Ybp48yGAzH2Za7sV8mz7nenoh38nr9bog9Ywb3B/5map4ZdUm7/CUZiHdZPlT/CemweviHg5K2R5X1Z5RSQedJIfHikMJHHDnudRQm7H2kYqrMMEXbcI6EacFX9+kJoo+3gGimwFlMqM1OnKRfAoASgehAd1CPTy6nP0vyVpTdvi0RbaQiBQA7TWOtxw5s7QsQa26+M6ICNywODmih8/NlAu3WGAz8HgaOmtD27N3CT8yH6ZbV3fdTtEg4NlYuZaFnUf9Ugevjl9ixd16/YW3hxOf/4QdQ8pvJIJvXtfDI8XNzsuxAR3GQH367kee2dg6+0Xx7RhDgs4jIsU4M2aFn2I+/bLlTCvYxwK4Op0ui8tjuy8aPwBE9iZ28GnJXdUvUPeY4ISRKv3frn2wH7mDxZ5yuxCg6Nwk5+NEY4dbxCtM1tFi2cLlm3MTkPbHrcDHK9I6Ia+iZpnAh4wl0sXKsvziweV2u7/J+wgZrGcuIqPe07KI3z/Ip0Zooth5MBiKsNFrY1rf1IjZ1X0RVNmdV/84XAnXJODxFcxpErhjFtQfZ5qzN8trMEdlDwIhiXUg5mRRRatDsowyxg4wcc/Ot19eNHIaAOVNrIExDkpxEbdNNwxzIcaaU016qDHM+8X6hAbDegwfpc1VPvr8tz4y2W29BVDHCOpGudqE5AqHhO0bIGYq200T9lFDt2iG3vDJc8a2Tx8gK9f9J4ToKz/80C8n51SIjwdVFDZ4oSWe1bVP9SpZUFQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 31ae5bc0-b8cb-4e18-4860-08dbd4391fa9 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:01.5135 (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: FGLGI1RXcfdk69MtmhOeRMfJPttOyka+5QVVg+a7a7NAEXPomG8e387bEAbiSomp3MD3K2PpyQNInau4/IiztjTv+wr5cyiT77055y4ywAs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 common ctrl module. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_ctrl.h | 374 +++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_ctrl.h | 365 +------------------------- 2 files changed, 375 insertions(+), 364 deletions(-) create mode 100644 drivers/common/nfp/nfp_common_ctrl.h diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h new file mode 100644 index 0000000000..3c8cd916cf --- /dev/null +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -0,0 +1,374 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_COMMON_CTRL_H__ +#define __NFP_COMMON_CTRL_H__ + +/* + * Configuration BAR size. + * + * On the NFP6000, due to THB-350, the configuration BAR is 32K in size. + */ +#define NFP_NET_CFG_BAR_SZ (32 * 1024) + +/* Offset in Freelist buffer where packet starts on RX */ +#define NFP_NET_RX_OFFSET 32 + +/* Working with metadata api (NFD version > 3.0) */ +#define NFP_NET_META_FIELD_SIZE 4 +#define NFP_NET_META_FIELD_MASK ((1 << NFP_NET_META_FIELD_SIZE) - 1) +#define NFP_NET_META_HEADER_SIZE 4 +#define NFP_NET_META_NFDK_LENGTH 8 + +/* Working with metadata vlan api (NFD version >= 2.0) */ +#define NFP_NET_META_VLAN_INFO 16 +#define NFP_NET_META_VLAN_OFFLOAD 31 +#define NFP_NET_META_VLAN_TPID 3 +#define NFP_NET_META_VLAN_MASK ((1 << NFP_NET_META_VLAN_INFO) - 1) +#define NFP_NET_META_VLAN_TPID_MASK ((1 << NFP_NET_META_VLAN_TPID) - 1) +#define NFP_NET_META_TPID(d) (((d) >> NFP_NET_META_VLAN_INFO) & \ + NFP_NET_META_VLAN_TPID_MASK) + +/* Prepend field types */ +#define NFP_NET_META_HASH 1 /* Next field carries hash type */ +#define NFP_NET_META_VLAN 4 +#define NFP_NET_META_PORTID 5 +#define NFP_NET_META_IPSEC 9 + +#define NFP_META_PORT_ID_CTRL ~0U + +/* Hash type prepended when a RSS hash was computed */ +#define NFP_NET_RSS_NONE 0 +#define NFP_NET_RSS_IPV4 1 +#define NFP_NET_RSS_IPV6 2 +#define NFP_NET_RSS_IPV6_EX 3 +#define NFP_NET_RSS_IPV4_TCP 4 +#define NFP_NET_RSS_IPV6_TCP 5 +#define NFP_NET_RSS_IPV6_EX_TCP 6 +#define NFP_NET_RSS_IPV4_UDP 7 +#define NFP_NET_RSS_IPV6_UDP 8 +#define NFP_NET_RSS_IPV6_EX_UDP 9 +#define NFP_NET_RSS_IPV4_SCTP 10 +#define NFP_NET_RSS_IPV6_SCTP 11 + +/* + * @NFP_NET_TXR_MAX: Maximum number of TX rings + * @NFP_NET_TXR_MASK: Mask for TX rings + * @NFP_NET_RXR_MAX: Maximum number of RX rings + * @NFP_NET_RXR_MASK: Mask for RX rings + */ +#define NFP_NET_TXR_MAX 64 +#define NFP_NET_TXR_MASK (NFP_NET_TXR_MAX - 1) +#define NFP_NET_RXR_MAX 64 +#define NFP_NET_RXR_MASK (NFP_NET_RXR_MAX - 1) + +/* + * Read/Write config words (0x0000 - 0x002c) + * @NFP_NET_CFG_CTRL: Global control + * @NFP_NET_CFG_UPDATE: Indicate which fields are updated + * @NFP_NET_CFG_TXRS_ENABLE: Bitmask of enabled TX rings + * @NFP_NET_CFG_RXRS_ENABLE: Bitmask of enabled RX rings + * @NFP_NET_CFG_MTU: Set MTU size + * @NFP_NET_CFG_FLBUFSZ: Set freelist buffer size (must be larger than MTU) + * @NFP_NET_CFG_EXN: MSI-X table entry for exceptions + * @NFP_NET_CFG_LSC: MSI-X table entry for link state changes + * @NFP_NET_CFG_MACADDR: MAC address + * + * TODO: + * - define Error details in UPDATE + */ +#define NFP_NET_CFG_CTRL 0x0000 +#define NFP_NET_CFG_CTRL_ENABLE (0x1 << 0) /* Global enable */ +#define NFP_NET_CFG_CTRL_PROMISC (0x1 << 1) /* Enable Promisc mode */ +#define NFP_NET_CFG_CTRL_L2BC (0x1 << 2) /* Allow L2 Broadcast */ +#define NFP_NET_CFG_CTRL_L2MC (0x1 << 3) /* Allow L2 Multicast */ +#define NFP_NET_CFG_CTRL_RXCSUM (0x1 << 4) /* Enable RX Checksum */ +#define NFP_NET_CFG_CTRL_TXCSUM (0x1 << 5) /* Enable TX Checksum */ +#define NFP_NET_CFG_CTRL_RXVLAN (0x1 << 6) /* Enable VLAN strip */ +#define NFP_NET_CFG_CTRL_TXVLAN (0x1 << 7) /* Enable VLAN insert */ +#define NFP_NET_CFG_CTRL_SCATTER (0x1 << 8) /* Scatter DMA */ +#define NFP_NET_CFG_CTRL_GATHER (0x1 << 9) /* Gather DMA */ +#define NFP_NET_CFG_CTRL_LSO (0x1 << 10) /* LSO/TSO */ +#define NFP_NET_CFG_CTRL_RXQINQ (0x1 << 13) /* Enable QINQ strip */ +#define NFP_NET_CFG_CTRL_RXVLAN_V2 (0x1 << 15) /* Enable VLAN strip with metadata */ +#define NFP_NET_CFG_CTRL_RINGCFG (0x1 << 16) /* Ring runtime changes */ +#define NFP_NET_CFG_CTRL_RSS (0x1 << 17) /* RSS */ +#define NFP_NET_CFG_CTRL_IRQMOD (0x1 << 18) /* Interrupt moderation */ +#define NFP_NET_CFG_CTRL_RINGPRIO (0x1 << 19) /* Ring priorities */ +#define NFP_NET_CFG_CTRL_MSIXAUTO (0x1 << 20) /* MSI-X auto-masking */ +#define NFP_NET_CFG_CTRL_TXRWB (0x1 << 21) /* Write-back of TX ring */ +#define NFP_NET_CFG_CTRL_L2SWITCH (0x1 << 22) /* L2 Switch */ +#define NFP_NET_CFG_CTRL_TXVLAN_V2 (0x1 << 23) /* Enable VLAN insert with metadata */ +#define NFP_NET_CFG_CTRL_VXLAN (0x1 << 24) /* Enable VXLAN */ +#define NFP_NET_CFG_CTRL_NVGRE (0x1 << 25) /* Enable NVGRE */ +#define NFP_NET_CFG_CTRL_MSIX_TX_OFF (0x1 << 26) /* Disable MSIX for TX */ +#define NFP_NET_CFG_CTRL_LSO2 (0x1 << 28) /* LSO/TSO (version 2) */ +#define NFP_NET_CFG_CTRL_RSS2 (0x1 << 29) /* RSS (version 2) */ +#define NFP_NET_CFG_CTRL_CSUM_COMPLETE (0x1 << 30) /* Checksum complete */ +#define NFP_NET_CFG_CTRL_LIVE_ADDR (0x1U << 31) /* Live MAC addr change */ +#define NFP_NET_CFG_UPDATE 0x0004 +#define NFP_NET_CFG_UPDATE_GEN (0x1 << 0) /* General update */ +#define NFP_NET_CFG_UPDATE_RING (0x1 << 1) /* Ring config change */ +#define NFP_NET_CFG_UPDATE_RSS (0x1 << 2) /* RSS config change */ +#define NFP_NET_CFG_UPDATE_TXRPRIO (0x1 << 3) /* TX Ring prio change */ +#define NFP_NET_CFG_UPDATE_RXRPRIO (0x1 << 4) /* RX Ring prio change */ +#define NFP_NET_CFG_UPDATE_MSIX (0x1 << 5) /* MSI-X change */ +#define NFP_NET_CFG_UPDATE_L2SWITCH (0x1 << 6) /* Switch changes */ +#define NFP_NET_CFG_UPDATE_RESET (0x1 << 7) /* Update due to FLR */ +#define NFP_NET_CFG_UPDATE_IRQMOD (0x1 << 8) /* IRQ mod change */ +#define NFP_NET_CFG_UPDATE_VXLAN (0x1 << 9) /* VXLAN port change */ +#define NFP_NET_CFG_UPDATE_MACADDR (0x1 << 11) /* MAC address change */ +#define NFP_NET_CFG_UPDATE_MBOX (0x1 << 12) /* Mailbox update */ +#define NFP_NET_CFG_UPDATE_ERR (0x1U << 31) /* A error occurred */ +#define NFP_NET_CFG_TXRS_ENABLE 0x0008 +#define NFP_NET_CFG_RXRS_ENABLE 0x0010 +#define NFP_NET_CFG_MTU 0x0018 +#define NFP_NET_CFG_FLBUFSZ 0x001c +#define NFP_NET_CFG_EXN 0x001f +#define NFP_NET_CFG_LSC 0x0020 +#define NFP_NET_CFG_MACADDR 0x0024 + +#define NFP_NET_CFG_CTRL_LSO_ANY (NFP_NET_CFG_CTRL_LSO | NFP_NET_CFG_CTRL_LSO2) +#define NFP_NET_CFG_CTRL_RSS_ANY (NFP_NET_CFG_CTRL_RSS | NFP_NET_CFG_CTRL_RSS2) + +#define NFP_NET_CFG_CTRL_CHAIN_META (NFP_NET_CFG_CTRL_RSS2 | \ + NFP_NET_CFG_CTRL_CSUM_COMPLETE) + +/* Version number helper defines */ +struct nfp_net_fw_ver { + uint8_t minor; + uint8_t major; + uint8_t class; + /** + * This byte can be extended for more use. + * BIT0: NFD dp type, refer NFP_NET_CFG_VERSION_DP_NFDx + * BIT[7:1]: reserved + */ + uint8_t extend; +}; + +/* + * Read-only words (0x0030 - 0x0050): + * @NFP_NET_CFG_VERSION: Firmware version number + * @NFP_NET_CFG_STS: Status + * @NFP_NET_CFG_CAP: Capabilities (same bits as @NFP_NET_CFG_CTRL) + * @NFP_NET_MAX_TXRINGS: Maximum number of TX rings + * @NFP_NET_MAX_RXRINGS: Maximum number of RX rings + * @NFP_NET_MAX_MTU: Maximum support MTU + * @NFP_NET_CFG_START_TXQ: Start Queue Control Queue to use for TX (PF only) + * @NFP_NET_CFG_START_RXQ: Start Queue Control Queue to use for RX (PF only) + * + * TODO: + * - define more STS bits + */ +#define NFP_NET_CFG_VERSION 0x0030 +#define NFP_NET_CFG_VERSION_DP_NFD3 0 +#define NFP_NET_CFG_VERSION_DP_NFDK 1 +#define NFP_NET_CFG_STS 0x0034 +#define NFP_NET_CFG_STS_LINK (0x1 << 0) /* Link up or down */ +/* Link rate */ +#define NFP_NET_CFG_STS_LINK_RATE_SHIFT 1 +#define NFP_NET_CFG_STS_LINK_RATE_MASK 0xF +#define NFP_NET_CFG_STS_LINK_RATE_UNSUPPORTED 0 +#define NFP_NET_CFG_STS_LINK_RATE_UNKNOWN 1 +#define NFP_NET_CFG_STS_LINK_RATE_1G 2 +#define NFP_NET_CFG_STS_LINK_RATE_10G 3 +#define NFP_NET_CFG_STS_LINK_RATE_25G 4 +#define NFP_NET_CFG_STS_LINK_RATE_40G 5 +#define NFP_NET_CFG_STS_LINK_RATE_50G 6 +#define NFP_NET_CFG_STS_LINK_RATE_100G 7 + +/* + * NSP Link rate is a 16-bit word. It is no longer determined by + * firmware, instead it is read from the nfp_eth_table of the + * associated pf_dev and written to the NFP_NET_CFG_STS_NSP_LINK_RATE + * address by the PMD each time the port is reconfigured. + */ +#define NFP_NET_CFG_STS_NSP_LINK_RATE 0x0036 + +#define NFP_NET_CFG_CAP 0x0038 +#define NFP_NET_CFG_MAX_TXRINGS 0x003c +#define NFP_NET_CFG_MAX_RXRINGS 0x0040 +#define NFP_NET_CFG_MAX_MTU 0x0044 +/* Next two words are being used by VFs for solving THB350 issue */ +#define NFP_NET_CFG_START_TXQ 0x0048 +#define NFP_NET_CFG_START_RXQ 0x004c + +/* + * NFP-3200 workaround (0x0050 - 0x0058) + * @NFP_NET_CFG_SPARE_ADDR: DMA address for ME code to use (e.g. YDS-155 fix) + */ +#define NFP_NET_CFG_SPARE_ADDR 0x0050 +/* + * NFP6000/NFP4000 - Prepend configuration + */ +#define NFP_NET_CFG_RX_OFFSET 0x0050 +#define NFP_NET_CFG_RX_OFFSET_DYNAMIC 0 /* Prepend mode */ + +/* Start anchor of the TLV area */ +#define NFP_NET_CFG_TLV_BASE 0x0058 + +/** + * Reuse spare address to contain the offset from the start of + * the host buffer where the first byte of the received frame + * will land. Any metadata will come prior to that offset. If the + * value in this field is 0, it means that the metadata will + * always land starting at the first byte of the host buffer and + * packet data will immediately follow the metadata. As always, + * the RX descriptor indicates the presence or absence of metadata + * along with the length thereof. + */ +#define NFP_NET_CFG_RX_OFFSET_ADDR 0x0050 + +#define NFP_NET_CFG_VXLAN_PORT 0x0060 +#define NFP_NET_CFG_VXLAN_SZ 0x0008 + +/* Offload definitions */ +#define NFP_NET_N_VXLAN_PORTS (NFP_NET_CFG_VXLAN_SZ / sizeof(uint16_t)) + +/* + * 3 words reserved for extended ctrl words (0x0098 - 0x00a4) + * 3 words reserved for extended cap words (0x00a4 - 0x00b0) + * Currently only one word is used, can be extended in future. + */ +#define NFP_NET_CFG_CTRL_WORD1 0x0098 +#define NFP_NET_CFG_CTRL_PKT_TYPE (0x1 << 0) +#define NFP_NET_CFG_CTRL_IPSEC (0x1 << 1) /**< IPsec offload */ +#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_CAP_WORD1 0x00a4 + +/* 16B reserved for future use (0x00b0 - 0x00c0). */ +#define NFP_NET_CFG_RESERVED 0x00b0 +#define NFP_NET_CFG_RESERVED_SZ 0x0010 + +/* + * RSS configuration (0x0100 - 0x01ac): + * Used only when NFP_NET_CFG_CTRL_RSS_ANY is enabled + * @NFP_NET_CFG_RSS_CFG: RSS configuration word + * @NFP_NET_CFG_RSS_KEY: RSS "secret" key + * @NFP_NET_CFG_RSS_ITBL: RSS indirection table + */ +#define NFP_NET_CFG_RSS_BASE 0x0100 +#define NFP_NET_CFG_RSS_CTRL NFP_NET_CFG_RSS_BASE +#define NFP_NET_CFG_RSS_MASK (0x7f) +#define NFP_NET_CFG_RSS_MASK_of(_x) ((_x) & 0x7f) +#define NFP_NET_CFG_RSS_IPV4 (1 << 8) /* RSS for IPv4 */ +#define NFP_NET_CFG_RSS_IPV6 (1 << 9) /* RSS for IPv6 */ +#define NFP_NET_CFG_RSS_IPV4_TCP (1 << 10) /* RSS for IPv4/TCP */ +#define NFP_NET_CFG_RSS_IPV4_UDP (1 << 11) /* RSS for IPv4/UDP */ +#define NFP_NET_CFG_RSS_IPV6_TCP (1 << 12) /* RSS for IPv6/TCP */ +#define NFP_NET_CFG_RSS_IPV6_UDP (1 << 13) /* RSS for IPv6/UDP */ +#define NFP_NET_CFG_RSS_IPV4_SCTP (1 << 14) /* RSS for IPv4/SCTP */ +#define NFP_NET_CFG_RSS_IPV6_SCTP (1 << 15) /* RSS for IPv6/SCTP */ +#define NFP_NET_CFG_RSS_TOEPLITZ (1 << 24) /* Use Toeplitz hash */ +#define NFP_NET_CFG_RSS_KEY (NFP_NET_CFG_RSS_BASE + 0x4) +#define NFP_NET_CFG_RSS_KEY_SZ 0x28 +#define NFP_NET_CFG_RSS_ITBL (NFP_NET_CFG_RSS_BASE + 0x4 + \ + NFP_NET_CFG_RSS_KEY_SZ) +#define NFP_NET_CFG_RSS_ITBL_SZ 0x80 + +/* + * TX ring configuration (0x200 - 0x800) + * @NFP_NET_CFG_TXR_BASE: Base offset for TX ring configuration + * @NFP_NET_CFG_TXR_ADDR: Per TX ring DMA address (8B entries) + * @NFP_NET_CFG_TXR_WB_ADDR: Per TX ring write back DMA address (8B entries) + * @NFP_NET_CFG_TXR_SZ: Per TX ring size (1B entries) + * @NFP_NET_CFG_TXR_VEC: Per TX ring MSI-X table entry (1B entries) + * @NFP_NET_CFG_TXR_PRIO: Per TX ring priority (1B entries) + * @NFP_NET_CFG_TXR_IRQ_MOD: Per TX ring interrupt moderation (4B entries) + */ +#define NFP_NET_CFG_TXR_BASE 0x0200 +#define NFP_NET_CFG_TXR_ADDR(_x) (NFP_NET_CFG_TXR_BASE + ((_x) * 0x8)) +#define NFP_NET_CFG_TXR_WB_ADDR(_x) (NFP_NET_CFG_TXR_BASE + 0x200 + \ + ((_x) * 0x8)) +#define NFP_NET_CFG_TXR_SZ(_x) (NFP_NET_CFG_TXR_BASE + 0x400 + (_x)) +#define NFP_NET_CFG_TXR_VEC(_x) (NFP_NET_CFG_TXR_BASE + 0x440 + (_x)) +#define NFP_NET_CFG_TXR_PRIO(_x) (NFP_NET_CFG_TXR_BASE + 0x480 + (_x)) +#define NFP_NET_CFG_TXR_IRQ_MOD(_x) (NFP_NET_CFG_TXR_BASE + 0x500 + \ + ((_x) * 0x4)) + +/* + * RX ring configuration (0x0800 - 0x0c00) + * @NFP_NET_CFG_RXR_BASE: Base offset for RX ring configuration + * @NFP_NET_CFG_RXR_ADDR: Per TX ring DMA address (8B entries) + * @NFP_NET_CFG_RXR_SZ: Per TX ring size (1B entries) + * @NFP_NET_CFG_RXR_VEC: Per TX ring MSI-X table entry (1B entries) + * @NFP_NET_CFG_RXR_PRIO: Per TX ring priority (1B entries) + * @NFP_NET_CFG_RXR_IRQ_MOD: Per TX ring interrupt moderation (4B entries) + */ +#define NFP_NET_CFG_RXR_BASE 0x0800 +#define NFP_NET_CFG_RXR_ADDR(_x) (NFP_NET_CFG_RXR_BASE + ((_x) * 0x8)) +#define NFP_NET_CFG_RXR_SZ(_x) (NFP_NET_CFG_RXR_BASE + 0x200 + (_x)) +#define NFP_NET_CFG_RXR_VEC(_x) (NFP_NET_CFG_RXR_BASE + 0x240 + (_x)) +#define NFP_NET_CFG_RXR_PRIO(_x) (NFP_NET_CFG_RXR_BASE + 0x280 + (_x)) +#define NFP_NET_CFG_RXR_IRQ_MOD(_x) (NFP_NET_CFG_RXR_BASE + 0x300 + \ + ((_x) * 0x4)) + +/* + * Interrupt Control/Cause registers (0x0c00 - 0x0d00) + * These registers are only used when MSI-X auto-masking is not + * enabled (@NFP_NET_CFG_CTRL_MSIXAUTO not set). The array is index + * by MSI-X entry and are 1B in size. If an entry is zero, the + * corresponding entry is enabled. If the FW generates an interrupt, + * it writes a cause into the corresponding field. This also masks + * the MSI-X entry and the host driver must clear the register to + * re-enable the interrupt. + */ +#define NFP_NET_CFG_ICR_BASE 0x0c00 +#define NFP_NET_CFG_ICR(_x) (NFP_NET_CFG_ICR_BASE + (_x)) +#define NFP_NET_CFG_ICR_UNMASKED 0x0 +#define NFP_NET_CFG_ICR_RXTX 0x1 +#define NFP_NET_CFG_ICR_LSC 0x2 + +/* + * General device stats (0x0d00 - 0x0d90) + * All counters are 64bit. + */ +#define NFP_NET_CFG_STATS_BASE 0x0d00 +#define NFP_NET_CFG_STATS_RX_DISCARDS (NFP_NET_CFG_STATS_BASE + 0x00) +#define NFP_NET_CFG_STATS_RX_ERRORS (NFP_NET_CFG_STATS_BASE + 0x08) +#define NFP_NET_CFG_STATS_RX_OCTETS (NFP_NET_CFG_STATS_BASE + 0x10) +#define NFP_NET_CFG_STATS_RX_UC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x18) +#define NFP_NET_CFG_STATS_RX_MC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x20) +#define NFP_NET_CFG_STATS_RX_BC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x28) +#define NFP_NET_CFG_STATS_RX_FRAMES (NFP_NET_CFG_STATS_BASE + 0x30) +#define NFP_NET_CFG_STATS_RX_MC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x38) +#define NFP_NET_CFG_STATS_RX_BC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x40) + +#define NFP_NET_CFG_STATS_TX_DISCARDS (NFP_NET_CFG_STATS_BASE + 0x48) +#define NFP_NET_CFG_STATS_TX_ERRORS (NFP_NET_CFG_STATS_BASE + 0x50) +#define NFP_NET_CFG_STATS_TX_OCTETS (NFP_NET_CFG_STATS_BASE + 0x58) +#define NFP_NET_CFG_STATS_TX_UC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x60) +#define NFP_NET_CFG_STATS_TX_MC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x68) +#define NFP_NET_CFG_STATS_TX_BC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x70) +#define NFP_NET_CFG_STATS_TX_FRAMES (NFP_NET_CFG_STATS_BASE + 0x78) +#define NFP_NET_CFG_STATS_TX_MC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x80) +#define NFP_NET_CFG_STATS_TX_BC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x88) + +#define NFP_NET_CFG_STATS_APP0_FRAMES (NFP_NET_CFG_STATS_BASE + 0x90) +#define NFP_NET_CFG_STATS_APP0_BYTES (NFP_NET_CFG_STATS_BASE + 0x98) +#define NFP_NET_CFG_STATS_APP1_FRAMES (NFP_NET_CFG_STATS_BASE + 0xa0) +#define NFP_NET_CFG_STATS_APP1_BYTES (NFP_NET_CFG_STATS_BASE + 0xa8) +#define NFP_NET_CFG_STATS_APP2_FRAMES (NFP_NET_CFG_STATS_BASE + 0xb0) +#define NFP_NET_CFG_STATS_APP2_BYTES (NFP_NET_CFG_STATS_BASE + 0xb8) +#define NFP_NET_CFG_STATS_APP3_FRAMES (NFP_NET_CFG_STATS_BASE + 0xc0) +#define NFP_NET_CFG_STATS_APP3_BYTES (NFP_NET_CFG_STATS_BASE + 0xc8) + +/* + * Per ring stats (0x1000 - 0x1800) + * Options, 64bit per entry + * @NFP_NET_CFG_TXR_STATS: TX ring statistics (Packet and Byte count) + * @NFP_NET_CFG_RXR_STATS: RX ring statistics (Packet and Byte count) + */ +#define NFP_NET_CFG_TXR_STATS_BASE 0x1000 +#define NFP_NET_CFG_TXR_STATS(_x) (NFP_NET_CFG_TXR_STATS_BASE + \ + ((_x) * 0x10)) +#define NFP_NET_CFG_RXR_STATS_BASE 0x1400 +#define NFP_NET_CFG_RXR_STATS(_x) (NFP_NET_CFG_RXR_STATS_BASE + \ + ((_x) * 0x10)) + +#endif /* __NFP_COMMON_CTRL_H__ */ diff --git a/drivers/net/nfp/nfp_net_ctrl.h b/drivers/net/nfp/nfp_net_ctrl.h index 3772b28a66..ee1b784bb1 100644 --- a/drivers/net/nfp/nfp_net_ctrl.h +++ b/drivers/net/nfp/nfp_net_ctrl.h @@ -10,370 +10,7 @@ #include -/* - * Configuration BAR size. - * - * On the NFP6000, due to THB-350, the configuration BAR is 32K in size. - */ -#define NFP_NET_CFG_BAR_SZ (32 * 1024) - -/* Offset in Freelist buffer where packet starts on RX */ -#define NFP_NET_RX_OFFSET 32 - -/* Working with metadata api (NFD version > 3.0) */ -#define NFP_NET_META_FIELD_SIZE 4 -#define NFP_NET_META_FIELD_MASK ((1 << NFP_NET_META_FIELD_SIZE) - 1) -#define NFP_NET_META_HEADER_SIZE 4 -#define NFP_NET_META_NFDK_LENGTH 8 - -/* Working with metadata vlan api (NFD version >= 2.0) */ -#define NFP_NET_META_VLAN_INFO 16 -#define NFP_NET_META_VLAN_OFFLOAD 31 -#define NFP_NET_META_VLAN_TPID 3 -#define NFP_NET_META_VLAN_MASK ((1 << NFP_NET_META_VLAN_INFO) - 1) -#define NFP_NET_META_VLAN_TPID_MASK ((1 << NFP_NET_META_VLAN_TPID) - 1) -#define NFP_NET_META_TPID(d) (((d) >> NFP_NET_META_VLAN_INFO) & \ - NFP_NET_META_VLAN_TPID_MASK) - -/* Prepend field types */ -#define NFP_NET_META_HASH 1 /* Next field carries hash type */ -#define NFP_NET_META_VLAN 4 -#define NFP_NET_META_PORTID 5 -#define NFP_NET_META_IPSEC 9 - -#define NFP_META_PORT_ID_CTRL ~0U - -/* Hash type prepended when a RSS hash was computed */ -#define NFP_NET_RSS_NONE 0 -#define NFP_NET_RSS_IPV4 1 -#define NFP_NET_RSS_IPV6 2 -#define NFP_NET_RSS_IPV6_EX 3 -#define NFP_NET_RSS_IPV4_TCP 4 -#define NFP_NET_RSS_IPV6_TCP 5 -#define NFP_NET_RSS_IPV6_EX_TCP 6 -#define NFP_NET_RSS_IPV4_UDP 7 -#define NFP_NET_RSS_IPV6_UDP 8 -#define NFP_NET_RSS_IPV6_EX_UDP 9 -#define NFP_NET_RSS_IPV4_SCTP 10 -#define NFP_NET_RSS_IPV6_SCTP 11 - -/* - * @NFP_NET_TXR_MAX: Maximum number of TX rings - * @NFP_NET_TXR_MASK: Mask for TX rings - * @NFP_NET_RXR_MAX: Maximum number of RX rings - * @NFP_NET_RXR_MASK: Mask for RX rings - */ -#define NFP_NET_TXR_MAX 64 -#define NFP_NET_TXR_MASK (NFP_NET_TXR_MAX - 1) -#define NFP_NET_RXR_MAX 64 -#define NFP_NET_RXR_MASK (NFP_NET_RXR_MAX - 1) - -/* - * Read/Write config words (0x0000 - 0x002c) - * @NFP_NET_CFG_CTRL: Global control - * @NFP_NET_CFG_UPDATE: Indicate which fields are updated - * @NFP_NET_CFG_TXRS_ENABLE: Bitmask of enabled TX rings - * @NFP_NET_CFG_RXRS_ENABLE: Bitmask of enabled RX rings - * @NFP_NET_CFG_MTU: Set MTU size - * @NFP_NET_CFG_FLBUFSZ: Set freelist buffer size (must be larger than MTU) - * @NFP_NET_CFG_EXN: MSI-X table entry for exceptions - * @NFP_NET_CFG_LSC: MSI-X table entry for link state changes - * @NFP_NET_CFG_MACADDR: MAC address - * - * TODO: - * - define Error details in UPDATE - */ -#define NFP_NET_CFG_CTRL 0x0000 -#define NFP_NET_CFG_CTRL_ENABLE (0x1 << 0) /* Global enable */ -#define NFP_NET_CFG_CTRL_PROMISC (0x1 << 1) /* Enable Promisc mode */ -#define NFP_NET_CFG_CTRL_L2BC (0x1 << 2) /* Allow L2 Broadcast */ -#define NFP_NET_CFG_CTRL_L2MC (0x1 << 3) /* Allow L2 Multicast */ -#define NFP_NET_CFG_CTRL_RXCSUM (0x1 << 4) /* Enable RX Checksum */ -#define NFP_NET_CFG_CTRL_TXCSUM (0x1 << 5) /* Enable TX Checksum */ -#define NFP_NET_CFG_CTRL_RXVLAN (0x1 << 6) /* Enable VLAN strip */ -#define NFP_NET_CFG_CTRL_TXVLAN (0x1 << 7) /* Enable VLAN insert */ -#define NFP_NET_CFG_CTRL_SCATTER (0x1 << 8) /* Scatter DMA */ -#define NFP_NET_CFG_CTRL_GATHER (0x1 << 9) /* Gather DMA */ -#define NFP_NET_CFG_CTRL_LSO (0x1 << 10) /* LSO/TSO */ -#define NFP_NET_CFG_CTRL_RXQINQ (0x1 << 13) /* Enable QINQ strip */ -#define NFP_NET_CFG_CTRL_RXVLAN_V2 (0x1 << 15) /* Enable VLAN strip with metadata */ -#define NFP_NET_CFG_CTRL_RINGCFG (0x1 << 16) /* Ring runtime changes */ -#define NFP_NET_CFG_CTRL_RSS (0x1 << 17) /* RSS */ -#define NFP_NET_CFG_CTRL_IRQMOD (0x1 << 18) /* Interrupt moderation */ -#define NFP_NET_CFG_CTRL_RINGPRIO (0x1 << 19) /* Ring priorities */ -#define NFP_NET_CFG_CTRL_MSIXAUTO (0x1 << 20) /* MSI-X auto-masking */ -#define NFP_NET_CFG_CTRL_TXRWB (0x1 << 21) /* Write-back of TX ring */ -#define NFP_NET_CFG_CTRL_L2SWITCH (0x1 << 22) /* L2 Switch */ -#define NFP_NET_CFG_CTRL_TXVLAN_V2 (0x1 << 23) /* Enable VLAN insert with metadata */ -#define NFP_NET_CFG_CTRL_VXLAN (0x1 << 24) /* Enable VXLAN */ -#define NFP_NET_CFG_CTRL_NVGRE (0x1 << 25) /* Enable NVGRE */ -#define NFP_NET_CFG_CTRL_MSIX_TX_OFF (0x1 << 26) /* Disable MSIX for TX */ -#define NFP_NET_CFG_CTRL_LSO2 (0x1 << 28) /* LSO/TSO (version 2) */ -#define NFP_NET_CFG_CTRL_RSS2 (0x1 << 29) /* RSS (version 2) */ -#define NFP_NET_CFG_CTRL_CSUM_COMPLETE (0x1 << 30) /* Checksum complete */ -#define NFP_NET_CFG_CTRL_LIVE_ADDR (0x1U << 31) /* Live MAC addr change */ -#define NFP_NET_CFG_UPDATE 0x0004 -#define NFP_NET_CFG_UPDATE_GEN (0x1 << 0) /* General update */ -#define NFP_NET_CFG_UPDATE_RING (0x1 << 1) /* Ring config change */ -#define NFP_NET_CFG_UPDATE_RSS (0x1 << 2) /* RSS config change */ -#define NFP_NET_CFG_UPDATE_TXRPRIO (0x1 << 3) /* TX Ring prio change */ -#define NFP_NET_CFG_UPDATE_RXRPRIO (0x1 << 4) /* RX Ring prio change */ -#define NFP_NET_CFG_UPDATE_MSIX (0x1 << 5) /* MSI-X change */ -#define NFP_NET_CFG_UPDATE_L2SWITCH (0x1 << 6) /* Switch changes */ -#define NFP_NET_CFG_UPDATE_RESET (0x1 << 7) /* Update due to FLR */ -#define NFP_NET_CFG_UPDATE_IRQMOD (0x1 << 8) /* IRQ mod change */ -#define NFP_NET_CFG_UPDATE_VXLAN (0x1 << 9) /* VXLAN port change */ -#define NFP_NET_CFG_UPDATE_MACADDR (0x1 << 11) /* MAC address change */ -#define NFP_NET_CFG_UPDATE_MBOX (0x1 << 12) /* Mailbox update */ -#define NFP_NET_CFG_UPDATE_ERR (0x1U << 31) /* A error occurred */ -#define NFP_NET_CFG_TXRS_ENABLE 0x0008 -#define NFP_NET_CFG_RXRS_ENABLE 0x0010 -#define NFP_NET_CFG_MTU 0x0018 -#define NFP_NET_CFG_FLBUFSZ 0x001c -#define NFP_NET_CFG_EXN 0x001f -#define NFP_NET_CFG_LSC 0x0020 -#define NFP_NET_CFG_MACADDR 0x0024 - -#define NFP_NET_CFG_CTRL_LSO_ANY (NFP_NET_CFG_CTRL_LSO | NFP_NET_CFG_CTRL_LSO2) -#define NFP_NET_CFG_CTRL_RSS_ANY (NFP_NET_CFG_CTRL_RSS | NFP_NET_CFG_CTRL_RSS2) - -#define NFP_NET_CFG_CTRL_CHAIN_META (NFP_NET_CFG_CTRL_RSS2 | \ - NFP_NET_CFG_CTRL_CSUM_COMPLETE) - -/* Version number helper defines */ -struct nfp_net_fw_ver { - uint8_t minor; - uint8_t major; - uint8_t class; - /** - * This byte can be extended for more use. - * BIT0: NFD dp type, refer NFP_NET_CFG_VERSION_DP_NFDx - * BIT[7:1]: reserved - */ - uint8_t extend; -}; - -/* - * Read-only words (0x0030 - 0x0050): - * @NFP_NET_CFG_VERSION: Firmware version number - * @NFP_NET_CFG_STS: Status - * @NFP_NET_CFG_CAP: Capabilities (same bits as @NFP_NET_CFG_CTRL) - * @NFP_NET_MAX_TXRINGS: Maximum number of TX rings - * @NFP_NET_MAX_RXRINGS: Maximum number of RX rings - * @NFP_NET_MAX_MTU: Maximum support MTU - * @NFP_NET_CFG_START_TXQ: Start Queue Control Queue to use for TX (PF only) - * @NFP_NET_CFG_START_RXQ: Start Queue Control Queue to use for RX (PF only) - * - * TODO: - * - define more STS bits - */ -#define NFP_NET_CFG_VERSION 0x0030 -#define NFP_NET_CFG_VERSION_DP_NFD3 0 -#define NFP_NET_CFG_VERSION_DP_NFDK 1 -#define NFP_NET_CFG_STS 0x0034 -#define NFP_NET_CFG_STS_LINK (0x1 << 0) /* Link up or down */ -/* Link rate */ -#define NFP_NET_CFG_STS_LINK_RATE_SHIFT 1 -#define NFP_NET_CFG_STS_LINK_RATE_MASK 0xF -#define NFP_NET_CFG_STS_LINK_RATE_UNSUPPORTED 0 -#define NFP_NET_CFG_STS_LINK_RATE_UNKNOWN 1 -#define NFP_NET_CFG_STS_LINK_RATE_1G 2 -#define NFP_NET_CFG_STS_LINK_RATE_10G 3 -#define NFP_NET_CFG_STS_LINK_RATE_25G 4 -#define NFP_NET_CFG_STS_LINK_RATE_40G 5 -#define NFP_NET_CFG_STS_LINK_RATE_50G 6 -#define NFP_NET_CFG_STS_LINK_RATE_100G 7 - -/* - * NSP Link rate is a 16-bit word. It is no longer determined by - * firmware, instead it is read from the nfp_eth_table of the - * associated pf_dev and written to the NFP_NET_CFG_STS_NSP_LINK_RATE - * address by the PMD each time the port is reconfigured. - */ -#define NFP_NET_CFG_STS_NSP_LINK_RATE 0x0036 - -#define NFP_NET_CFG_CAP 0x0038 -#define NFP_NET_CFG_MAX_TXRINGS 0x003c -#define NFP_NET_CFG_MAX_RXRINGS 0x0040 -#define NFP_NET_CFG_MAX_MTU 0x0044 -/* Next two words are being used by VFs for solving THB350 issue */ -#define NFP_NET_CFG_START_TXQ 0x0048 -#define NFP_NET_CFG_START_RXQ 0x004c - -/* - * NFP-3200 workaround (0x0050 - 0x0058) - * @NFP_NET_CFG_SPARE_ADDR: DMA address for ME code to use (e.g. YDS-155 fix) - */ -#define NFP_NET_CFG_SPARE_ADDR 0x0050 -/* - * NFP6000/NFP4000 - Prepend configuration - */ -#define NFP_NET_CFG_RX_OFFSET 0x0050 -#define NFP_NET_CFG_RX_OFFSET_DYNAMIC 0 /* Prepend mode */ - -/* Start anchor of the TLV area */ -#define NFP_NET_CFG_TLV_BASE 0x0058 - -/** - * Reuse spare address to contain the offset from the start of - * the host buffer where the first byte of the received frame - * will land. Any metadata will come prior to that offset. If the - * value in this field is 0, it means that the metadata will - * always land starting at the first byte of the host buffer and - * packet data will immediately follow the metadata. As always, - * the RX descriptor indicates the presence or absence of metadata - * along with the length thereof. - */ -#define NFP_NET_CFG_RX_OFFSET_ADDR 0x0050 - -#define NFP_NET_CFG_VXLAN_PORT 0x0060 -#define NFP_NET_CFG_VXLAN_SZ 0x0008 - -/* Offload definitions */ -#define NFP_NET_N_VXLAN_PORTS (NFP_NET_CFG_VXLAN_SZ / sizeof(uint16_t)) - -/* - * 3 words reserved for extended ctrl words (0x0098 - 0x00a4) - * 3 words reserved for extended cap words (0x00a4 - 0x00b0) - * Currently only one word is used, can be extended in future. - */ -#define NFP_NET_CFG_CTRL_WORD1 0x0098 -#define NFP_NET_CFG_CTRL_PKT_TYPE (0x1 << 0) -#define NFP_NET_CFG_CTRL_IPSEC (0x1 << 1) /**< IPsec offload */ -#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_CAP_WORD1 0x00a4 - -/* 16B reserved for future use (0x00b0 - 0x00c0). */ -#define NFP_NET_CFG_RESERVED 0x00b0 -#define NFP_NET_CFG_RESERVED_SZ 0x0010 - -/* - * RSS configuration (0x0100 - 0x01ac): - * Used only when NFP_NET_CFG_CTRL_RSS_ANY is enabled - * @NFP_NET_CFG_RSS_CFG: RSS configuration word - * @NFP_NET_CFG_RSS_KEY: RSS "secret" key - * @NFP_NET_CFG_RSS_ITBL: RSS indirection table - */ -#define NFP_NET_CFG_RSS_BASE 0x0100 -#define NFP_NET_CFG_RSS_CTRL NFP_NET_CFG_RSS_BASE -#define NFP_NET_CFG_RSS_MASK (0x7f) -#define NFP_NET_CFG_RSS_MASK_of(_x) ((_x) & 0x7f) -#define NFP_NET_CFG_RSS_IPV4 (1 << 8) /* RSS for IPv4 */ -#define NFP_NET_CFG_RSS_IPV6 (1 << 9) /* RSS for IPv6 */ -#define NFP_NET_CFG_RSS_IPV4_TCP (1 << 10) /* RSS for IPv4/TCP */ -#define NFP_NET_CFG_RSS_IPV4_UDP (1 << 11) /* RSS for IPv4/UDP */ -#define NFP_NET_CFG_RSS_IPV6_TCP (1 << 12) /* RSS for IPv6/TCP */ -#define NFP_NET_CFG_RSS_IPV6_UDP (1 << 13) /* RSS for IPv6/UDP */ -#define NFP_NET_CFG_RSS_IPV4_SCTP (1 << 14) /* RSS for IPv4/SCTP */ -#define NFP_NET_CFG_RSS_IPV6_SCTP (1 << 15) /* RSS for IPv6/SCTP */ -#define NFP_NET_CFG_RSS_TOEPLITZ (1 << 24) /* Use Toeplitz hash */ -#define NFP_NET_CFG_RSS_KEY (NFP_NET_CFG_RSS_BASE + 0x4) -#define NFP_NET_CFG_RSS_KEY_SZ 0x28 -#define NFP_NET_CFG_RSS_ITBL (NFP_NET_CFG_RSS_BASE + 0x4 + \ - NFP_NET_CFG_RSS_KEY_SZ) -#define NFP_NET_CFG_RSS_ITBL_SZ 0x80 - -/* - * TX ring configuration (0x200 - 0x800) - * @NFP_NET_CFG_TXR_BASE: Base offset for TX ring configuration - * @NFP_NET_CFG_TXR_ADDR: Per TX ring DMA address (8B entries) - * @NFP_NET_CFG_TXR_WB_ADDR: Per TX ring write back DMA address (8B entries) - * @NFP_NET_CFG_TXR_SZ: Per TX ring size (1B entries) - * @NFP_NET_CFG_TXR_VEC: Per TX ring MSI-X table entry (1B entries) - * @NFP_NET_CFG_TXR_PRIO: Per TX ring priority (1B entries) - * @NFP_NET_CFG_TXR_IRQ_MOD: Per TX ring interrupt moderation (4B entries) - */ -#define NFP_NET_CFG_TXR_BASE 0x0200 -#define NFP_NET_CFG_TXR_ADDR(_x) (NFP_NET_CFG_TXR_BASE + ((_x) * 0x8)) -#define NFP_NET_CFG_TXR_WB_ADDR(_x) (NFP_NET_CFG_TXR_BASE + 0x200 + \ - ((_x) * 0x8)) -#define NFP_NET_CFG_TXR_SZ(_x) (NFP_NET_CFG_TXR_BASE + 0x400 + (_x)) -#define NFP_NET_CFG_TXR_VEC(_x) (NFP_NET_CFG_TXR_BASE + 0x440 + (_x)) -#define NFP_NET_CFG_TXR_PRIO(_x) (NFP_NET_CFG_TXR_BASE + 0x480 + (_x)) -#define NFP_NET_CFG_TXR_IRQ_MOD(_x) (NFP_NET_CFG_TXR_BASE + 0x500 + \ - ((_x) * 0x4)) - -/* - * RX ring configuration (0x0800 - 0x0c00) - * @NFP_NET_CFG_RXR_BASE: Base offset for RX ring configuration - * @NFP_NET_CFG_RXR_ADDR: Per TX ring DMA address (8B entries) - * @NFP_NET_CFG_RXR_SZ: Per TX ring size (1B entries) - * @NFP_NET_CFG_RXR_VEC: Per TX ring MSI-X table entry (1B entries) - * @NFP_NET_CFG_RXR_PRIO: Per TX ring priority (1B entries) - * @NFP_NET_CFG_RXR_IRQ_MOD: Per TX ring interrupt moderation (4B entries) - */ -#define NFP_NET_CFG_RXR_BASE 0x0800 -#define NFP_NET_CFG_RXR_ADDR(_x) (NFP_NET_CFG_RXR_BASE + ((_x) * 0x8)) -#define NFP_NET_CFG_RXR_SZ(_x) (NFP_NET_CFG_RXR_BASE + 0x200 + (_x)) -#define NFP_NET_CFG_RXR_VEC(_x) (NFP_NET_CFG_RXR_BASE + 0x240 + (_x)) -#define NFP_NET_CFG_RXR_PRIO(_x) (NFP_NET_CFG_RXR_BASE + 0x280 + (_x)) -#define NFP_NET_CFG_RXR_IRQ_MOD(_x) (NFP_NET_CFG_RXR_BASE + 0x300 + \ - ((_x) * 0x4)) - -/* - * Interrupt Control/Cause registers (0x0c00 - 0x0d00) - * These registers are only used when MSI-X auto-masking is not - * enabled (@NFP_NET_CFG_CTRL_MSIXAUTO not set). The array is index - * by MSI-X entry and are 1B in size. If an entry is zero, the - * corresponding entry is enabled. If the FW generates an interrupt, - * it writes a cause into the corresponding field. This also masks - * the MSI-X entry and the host driver must clear the register to - * re-enable the interrupt. - */ -#define NFP_NET_CFG_ICR_BASE 0x0c00 -#define NFP_NET_CFG_ICR(_x) (NFP_NET_CFG_ICR_BASE + (_x)) -#define NFP_NET_CFG_ICR_UNMASKED 0x0 -#define NFP_NET_CFG_ICR_RXTX 0x1 -#define NFP_NET_CFG_ICR_LSC 0x2 - -/* - * General device stats (0x0d00 - 0x0d90) - * All counters are 64bit. - */ -#define NFP_NET_CFG_STATS_BASE 0x0d00 -#define NFP_NET_CFG_STATS_RX_DISCARDS (NFP_NET_CFG_STATS_BASE + 0x00) -#define NFP_NET_CFG_STATS_RX_ERRORS (NFP_NET_CFG_STATS_BASE + 0x08) -#define NFP_NET_CFG_STATS_RX_OCTETS (NFP_NET_CFG_STATS_BASE + 0x10) -#define NFP_NET_CFG_STATS_RX_UC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x18) -#define NFP_NET_CFG_STATS_RX_MC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x20) -#define NFP_NET_CFG_STATS_RX_BC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x28) -#define NFP_NET_CFG_STATS_RX_FRAMES (NFP_NET_CFG_STATS_BASE + 0x30) -#define NFP_NET_CFG_STATS_RX_MC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x38) -#define NFP_NET_CFG_STATS_RX_BC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x40) - -#define NFP_NET_CFG_STATS_TX_DISCARDS (NFP_NET_CFG_STATS_BASE + 0x48) -#define NFP_NET_CFG_STATS_TX_ERRORS (NFP_NET_CFG_STATS_BASE + 0x50) -#define NFP_NET_CFG_STATS_TX_OCTETS (NFP_NET_CFG_STATS_BASE + 0x58) -#define NFP_NET_CFG_STATS_TX_UC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x60) -#define NFP_NET_CFG_STATS_TX_MC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x68) -#define NFP_NET_CFG_STATS_TX_BC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x70) -#define NFP_NET_CFG_STATS_TX_FRAMES (NFP_NET_CFG_STATS_BASE + 0x78) -#define NFP_NET_CFG_STATS_TX_MC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x80) -#define NFP_NET_CFG_STATS_TX_BC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x88) - -#define NFP_NET_CFG_STATS_APP0_FRAMES (NFP_NET_CFG_STATS_BASE + 0x90) -#define NFP_NET_CFG_STATS_APP0_BYTES (NFP_NET_CFG_STATS_BASE + 0x98) -#define NFP_NET_CFG_STATS_APP1_FRAMES (NFP_NET_CFG_STATS_BASE + 0xa0) -#define NFP_NET_CFG_STATS_APP1_BYTES (NFP_NET_CFG_STATS_BASE + 0xa8) -#define NFP_NET_CFG_STATS_APP2_FRAMES (NFP_NET_CFG_STATS_BASE + 0xb0) -#define NFP_NET_CFG_STATS_APP2_BYTES (NFP_NET_CFG_STATS_BASE + 0xb8) -#define NFP_NET_CFG_STATS_APP3_FRAMES (NFP_NET_CFG_STATS_BASE + 0xc0) -#define NFP_NET_CFG_STATS_APP3_BYTES (NFP_NET_CFG_STATS_BASE + 0xc8) - -/* - * Per ring stats (0x1000 - 0x1800) - * Options, 64bit per entry - * @NFP_NET_CFG_TXR_STATS: TX ring statistics (Packet and Byte count) - * @NFP_NET_CFG_RXR_STATS: RX ring statistics (Packet and Byte count) - */ -#define NFP_NET_CFG_TXR_STATS_BASE 0x1000 -#define NFP_NET_CFG_TXR_STATS(_x) (NFP_NET_CFG_TXR_STATS_BASE + \ - ((_x) * 0x10)) -#define NFP_NET_CFG_RXR_STATS_BASE 0x1400 -#define NFP_NET_CFG_RXR_STATS(_x) (NFP_NET_CFG_RXR_STATS_BASE + \ - ((_x) * 0x10)) +#include /* * Mac stats (0x0000 - 0x0200) From patchwork Tue Oct 24 02:28:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133219 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 7F99E431EB; Tue, 24 Oct 2023 04:31:46 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 16CCD410D5; Tue, 24 Oct 2023 04:30:09 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2098.outbound.protection.outlook.com [40.107.93.98]) by mails.dpdk.org (Postfix) with ESMTP id 8C2D342DBB for ; Tue, 24 Oct 2023 04:30:05 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iGFri4Av8TDIaX7NO1kCAXp0rCN25btDw6a3YodKR3nkF2lyKAVq62W08IavyhT6lk+ImvdxcatjRR7LwlbwDFNQmwMwkk6PJcWHtbPGi9mM0EAEiUI1oXba0oQzpvT58veVXu8vKL/5PUx8+64GkfZN4rrnGhu+Q6ammKB1Y5cx3LpAADQ6x0M5sDuCPELiHa1cmCICGhdlUMGLoNlGrjdb8W/2C5gHOK5h4jYnJRKNeoXxG0prHzWMoQdu/rnOoGf29xCnBluwhtSbmJkoSbtmjhL8Ek2vZFGaNKS9uI4sAmo15mX5N/R5Vboc2BsZIT5oBUWgBJOyC/cQiq/u1g== 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=4x5cYn80Kocm+falSRoSNAhfGUO7g73sC93HKbga++s=; b=KleXLHXu3uQqmHZ4QdrmcsWdrSMmx7nbKuI1OLJweCdJbgkR71AshZfdog9+4mbGjA++azhYqBfD7ql6+A6qQPZH+P8Qr9ZFeClXaXrxABiiulm+D3xd6P1mNNele+FJlZFThMGcaVW9Fa48I66kFTJjmQ2+dTLPQMoVqmBN3Shk7/zc/lc4NA9GhSBG9JJasDbRBI1948h7rwKEcmO3pIBSSuQTYiRPWmy026+lljEPvRKLIUQJ2KQQ8DkgpupabH45dp/8WpnL8PgbNY/6tbZvpN/dlvdYfehJWKq0B7kMkiBgiE2jCEH/Tjw343O5gsLXFo0MsCjeX37aG1c82g== 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=4x5cYn80Kocm+falSRoSNAhfGUO7g73sC93HKbga++s=; b=bQ8qwjn1kDcUgh9k67QqTEzJ0OZ9E5uSJBU5y2ICoCswybkivMBQuuU4/EyTvBCs0pNpgdOGPFEsh+QRWizCsQQic5j7jMcE6cu2Ean9c5ZA5TLJEqLdpgOo3rawMj4RLLSlyT/WZ5Lrj2PDnQZZzPP4kxWALs3HbcIWi+tMXJo= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:30:03 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:03 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 14/25] drivers: add the nfp common module Date: Tue, 24 Oct 2023 10:28:38 +0800 Message-Id: <20231024022849.3092506-15-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 533d96f0-0ef1-473e-d9a5-08dbd43920bd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: G1ejNo/WFXesHVyeQAZucf5/HxmH2+K90TI371eVEpNFcDBJ20NoSOPvXh9Ee8EVxdJ6Dfm18oR6mnrizciz+EzjWziAsRTZIKpyOHE9ryFE4XTZlRJdX/6vTFxL1gmrCVoD8wxeogA+Ij6b6opPo1DOLksbBjLwl4ypRnNntnudDsdHZ2izlqVUC+uY2wXyz+FTa1D1oQpyKzXZ3q6GkbcZeh5UYSYtZLF31jWgjJ01LM+66Km2pUsyGN9ySvuuZZozS11bHYfkUvLjz0/32/9Ic8pEyex4h81fZWRJVhIfQHJkeezMl9atms5G2Y6I1z69PlvnScSkv8RMXmqGewNJ32szGbNkTtVcXHZGx3JZe16BVQLillvAfuGd8EAeTnempZF8zHwbF71fIBGMctC50caklh/9cJqi4IiQWbgfZWNoW8wHmsmf18TvRIfXuGR3KgG6BSSv1/rpla/VRwS5fvv0uVe+qi5Gsvozx7Z1CMt6WgKZlhZtusbN+8IFQizxAqU9bwB19WLHayiz5TIrg7A1JYybGV3CKqPyKg+QqDMIGXycsDMQbSuAMPXKe5VD+l7a31iO+NKFlLXR/ShOJBqW7iYM9cR+okoP3nAAVpOZRppqyRfoC3j4k1Q+sBbonO4MVLUnUWluQp0PD4lm0rN/3PNclPm46WQxVIM= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2ubxiQ9npnNFe+f8fXblFoKy6s2kWMh7tvsQ4C+G0N7lM/3vZWCYZcD9ce183XFGflNVw48mgZxAa83LwarfpKl+eINO9cL7YiLmZ21JXR3m+On13/S3cygkJz5jShZLDdpEgKSc9tG1pCiY1jyuq4MCXx0AejhKTq4H0TdfywHBhCFfeU6Dzwn8yhpoCgWUUgIkYKH3B9E0PXvwpPYHMOcdk0+h4zE9ZoxI2H4N2NY++QCwhoH2ubOhIc5/uHs68QCimldZlPed1qZnRFmlKtjfXlC+bLHZCFVfJu2KU/0+tQzW6Yf+FTxcQPYCfZsRv4GALEweL1KIJDk1z+elwMQH+iZm0dEVsYDkXEbQ5kP32sWXwGKri3qEAvB1BOXNaKRbdwks4zcpRD+0rPckKPQsWn3QxnZlcvrri11FzxPdVWv76btftQKLGv4W59mpJYs8GhGHmQZNPvyvh30Kks2jHeoVE4rLIN7CJwR6mMMJklIDK8wx0msbY74smelPc6kIjC8puqxodtYPwgkJSjEG7u8OzRHWuNnrUCiRYPjpBeCCdL/SP2KaXHk2ZXIi9IdDm/+N7Zv1EIsv6AHM30gSgJavIk6D13ImO1rAUFdokWy81/O4UrLxfen7+rslq0iCqTEHd0ZPOnGg0sQv3W53hVxD4QoVF1I46HSCKxNYVwe5c9Say0lw1kUl4/lGv6eUXugqywZ9m8u/OFftDYPrR7T5RPUycM4DNyA8qP9JW8u6KSD7HjFVJ8kpyYDbiJWIG2tnw7Mk4ErKrBUY4wzTqJJODZ5IbX2Fv5t1XVJ9QXr8m3+basPQD273IVL7xHR2oUcf5M8EkaBV0JZZqn2/GaMhl0wewPIGKExuNlQCjlN0GD6RIyzY8+jkD4WoETVS63rZBzyP1AP67GWAZns/TWwZph0jwj6JWd+pVv4qg32ozh1Lacp3sR9AtSBFc1olUnRTZD/+ddckhTTaMXU8uZGUESMQZqTFeV9I0K8/stf+UEXmxvwGwCTcwaZnv0ILy2uwHXJlDqNGIvIMdKMZEmw5GXltzoT8Ch5b/1Fh20hKjQpZkE9IWz4aeuWFBqiOHJCNkqgc0sn2Z8kAdFskw8V1TEis/LTPzDjq19Xglb633pEA/o8aBHgaxdnpyWONb0qI2DSOUwtW4axIoG1xzTv0Vwx7HWO5YMANjkHRstLPE4elW4uyrO+ecW8sQToQJb5EV+bXjLVN366mWD79mEunfMvetw67dUNmXRO3T+stRTkILlXggBykRQSX3QSCGUZHEVGfyu+LfXvMsjADCF8I2+5fsHXammfwTA9lmFIhOJbbNi5fQuyAJqR/uXZ3RIEe85pwpL0XtnNaBdAa5LAI496Adf+xxOWsTZ7XQ12eRyk5SD36YYHBEuEtIJoGZea7uhzrqkUkeNErveq+jgzt8vn9cteyy8ImxNeqk4Oc/QDw6oDsiglE9VyhtnBUBbISVQ38KlNfHMYD067EDPs3dYfHbOyQHsYi1CPD+5c+R4jtv9NIIw63cjFTuJICY3fBzHzm6Rpk65p54Kw7dvHcY0KsCDy0NKQg28vrg9RHeXiAbP9l/Z/WCX7LLyr2GxA87A4U1gcVE0xEpA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 533d96f0-0ef1-473e-d9a5-08dbd43920bd X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:03.3561 (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: eHOf6wliekcsTiH4llQw1v5o3mYjwd0ejW8akTYvDZP8lOL1xPvRkG8Y0eqoisAKIHhu8SGoiKL+vfB6SihtFqssnkaBEiopmo+Cy4GEfC8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 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 nfp common module in the nfp common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/meson.build | 3 +- drivers/common/nfp/nfp_common.c | 177 +++++++++++++++++++++++ drivers/common/nfp/nfp_common.h | 232 +++++++++++++++++++++++++++++++ drivers/common/nfp/version.map | 6 + drivers/net/nfp/nfp_ethdev.c | 4 +- drivers/net/nfp/nfp_ethdev_vf.c | 16 +-- drivers/net/nfp/nfp_net_common.c | 159 +-------------------- drivers/net/nfp/nfp_net_common.h | 206 +-------------------------- 8 files changed, 423 insertions(+), 380 deletions(-) create mode 100644 drivers/common/nfp/nfp_common.c create mode 100644 drivers/common/nfp/nfp_common.h diff --git a/drivers/common/nfp/meson.build b/drivers/common/nfp/meson.build index 45871dfe35..727d21e00b 100644 --- a/drivers/common/nfp/meson.build +++ b/drivers/common/nfp/meson.build @@ -6,9 +6,10 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64') reason = 'only supported on 64-bit Linux' endif -deps += ['bus_pci'] +deps += ['bus_pci', 'net'] sources = files( + 'nfp_common.c', 'nfp_common_log.c', 'nfp_common_pci.c', ) diff --git a/drivers/common/nfp/nfp_common.c b/drivers/common/nfp/nfp_common.c new file mode 100644 index 0000000000..1a98326980 --- /dev/null +++ b/drivers/common/nfp/nfp_common.c @@ -0,0 +1,177 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_common.h" + +#include "nfp_common_log.h" + +/* + * This is used by the reconfig protocol. It sets the maximum time waiting in + * milliseconds before a reconfig timeout happens. + */ +#define NFP_NET_POLL_TIMEOUT 5000 + +int +nfp_reconfig_real(struct nfp_hw *hw, + uint32_t update) +{ + uint32_t cnt; + uint32_t new; + struct timespec wait; + + PMD_DRV_LOG(DEBUG, "Writing to the configuration queue (%p)...", + hw->qcp_cfg); + + if (hw->qcp_cfg == NULL) { + PMD_DRV_LOG(ERR, "Bad configuration queue pointer"); + return -ENXIO; + } + + nfp_qcp_ptr_add(hw->qcp_cfg, NFP_QCP_WRITE_PTR, 1); + + wait.tv_sec = 0; + wait.tv_nsec = 1000000; /* 1ms */ + + PMD_DRV_LOG(DEBUG, "Polling for update ack..."); + + /* Poll update field, waiting for NFP to ack the config */ + for (cnt = 0; ; cnt++) { + new = nn_cfg_readl(hw, NFP_NET_CFG_UPDATE); + if (new == 0) + break; + + if ((new & NFP_NET_CFG_UPDATE_ERR) != 0) { + PMD_DRV_LOG(ERR, "Reconfig error: %#08x", new); + return -1; + } + + if (cnt >= NFP_NET_POLL_TIMEOUT) { + PMD_DRV_LOG(ERR, "Reconfig timeout for %#08x after %u ms", + update, cnt); + return -EIO; + } + + nanosleep(&wait, 0); /* waiting for a 1ms */ + } + + PMD_DRV_LOG(DEBUG, "Ack DONE"); + return 0; +} + +/** + * Reconfigure the NIC. + * + * Write the update word to the BAR and ping the reconfig queue. Then poll + * until the firmware has acknowledged the update by zeroing the update word. + * + * @param hw + * Device to reconfigure. + * @param ctrl + * The value for the ctrl field in the BAR config. + * @param update + * The value for the update field in the BAR config. + * + * @return + * - (0) if OK to reconfigure the device. + * - (-EIO) if I/O err and fail to reconfigure the device. + */ +int +nfp_reconfig(struct nfp_hw *hw, + uint32_t ctrl, + uint32_t update) +{ + int ret; + + rte_spinlock_lock(&hw->reconfig_lock); + + nn_cfg_writel(hw, NFP_NET_CFG_CTRL, ctrl); + nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); + + rte_wmb(); + + ret = nfp_reconfig_real(hw, update); + + rte_spinlock_unlock(&hw->reconfig_lock); + + if (ret != 0) { + PMD_DRV_LOG(ERR, "Error nfp reconfig: ctrl=%#08x update=%#08x", + ctrl, update); + return -EIO; + } + + return 0; +} + +/** + * Reconfigure the NIC for the extend ctrl BAR. + * + * Write the update word to the BAR and ping the reconfig queue. Then poll + * until the firmware has acknowledged the update by zeroing the update word. + * + * @param hw + * Device to reconfigure. + * @param ctrl_ext + * The value for the first word of extend ctrl field in the BAR config. + * @param update + * The value for the update field in the BAR config. + * + * @return + * - (0) if OK to reconfigure the device. + * - (-EIO) if I/O err and fail to reconfigure the device. + */ +int +nfp_ext_reconfig(struct nfp_hw *hw, + uint32_t ctrl_ext, + uint32_t update) +{ + int ret; + + rte_spinlock_lock(&hw->reconfig_lock); + + nn_cfg_writel(hw, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); + nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); + + rte_wmb(); + + ret = nfp_reconfig_real(hw, update); + + rte_spinlock_unlock(&hw->reconfig_lock); + + if (ret != 0) { + PMD_DRV_LOG(ERR, "Error nfp ext reconfig: ctrl_ext=%#08x update=%#08x", + ctrl_ext, update); + return -EIO; + } + + return 0; +} + +void +nfp_read_mac(struct nfp_hw *hw) +{ + uint32_t tmp; + + tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR)); + memcpy(&hw->mac_addr.addr_bytes[0], &tmp, 4); + + tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR + 4)); + memcpy(&hw->mac_addr.addr_bytes[4], &tmp, 2); +} + +void +nfp_write_mac(struct nfp_hw *hw, + uint8_t *mac) +{ + uint32_t mac0; + uint16_t mac1; + + mac0 = *(uint32_t *)mac; + nn_writel(rte_cpu_to_be_32(mac0), hw->ctrl_bar + NFP_NET_CFG_MACADDR); + + mac += 4; + mac1 = *(uint16_t *)mac; + nn_writew(rte_cpu_to_be_16(mac1), + hw->ctrl_bar + NFP_NET_CFG_MACADDR + 6); +} diff --git a/drivers/common/nfp/nfp_common.h b/drivers/common/nfp/nfp_common.h new file mode 100644 index 0000000000..5615cde6af --- /dev/null +++ b/drivers/common/nfp/nfp_common.h @@ -0,0 +1,232 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_COMMON_H__ +#define __NFP_COMMON_H__ + +#include +#include +#include +#include + +#include "nfp_common_ctrl.h" + +#define NFP_QCP_QUEUE_ADDR_SZ (0x800) + +/* Macros for accessing the Queue Controller Peripheral 'CSRs' */ +#define NFP_QCP_QUEUE_OFF(_x) ((_x) * 0x800) +#define NFP_QCP_QUEUE_ADD_RPTR 0x0000 +#define NFP_QCP_QUEUE_ADD_WPTR 0x0004 +#define NFP_QCP_QUEUE_STS_LO 0x0008 +#define NFP_QCP_QUEUE_STS_LO_READPTR_MASK (0x3ffff) +#define NFP_QCP_QUEUE_STS_HI 0x000c +#define NFP_QCP_QUEUE_STS_HI_WRITEPTR_MASK (0x3ffff) + +/* Read or Write Pointer of a queue */ +enum nfp_qcp_ptr { + NFP_QCP_READ_PTR = 0, + NFP_QCP_WRITE_PTR +}; + +struct nfp_hw { + uint8_t *ctrl_bar; + uint8_t *qcp_cfg; + uint32_t cap; + uint32_t cap_ext; + uint32_t ctrl; + uint32_t ctrl_ext; + rte_spinlock_t reconfig_lock; + struct rte_ether_addr mac_addr; +}; + +static inline uint8_t +nn_readb(volatile const void *addr) +{ + return rte_read8(addr); +} + +static inline void +nn_writeb(uint8_t val, + volatile void *addr) +{ + rte_write8(val, addr); +} + +static inline uint32_t +nn_readl(volatile const void *addr) +{ + return rte_read32(addr); +} + +static inline void +nn_writel(uint32_t val, + volatile void *addr) +{ + rte_write32(val, addr); +} + +static inline uint16_t +nn_readw(volatile const void *addr) +{ + return rte_read16(addr); +} + +static inline void +nn_writew(uint16_t val, + volatile void *addr) +{ + rte_write16(val, addr); +} + +static inline uint64_t +nn_readq(volatile void *addr) +{ + uint32_t low; + uint32_t high; + const volatile uint32_t *p = addr; + + high = nn_readl((volatile const void *)(p + 1)); + low = nn_readl((volatile const void *)p); + + return low + ((uint64_t)high << 32); +} + +static inline void +nn_writeq(uint64_t val, + volatile void *addr) +{ + nn_writel(val >> 32, (volatile char *)addr + 4); + nn_writel(val, addr); +} + +static inline uint8_t +nn_cfg_readb(struct nfp_hw *hw, + uint32_t off) +{ + return nn_readb(hw->ctrl_bar + off); +} + +static inline void +nn_cfg_writeb(struct nfp_hw *hw, + uint32_t off, + uint8_t val) +{ + nn_writeb(val, hw->ctrl_bar + off); +} + +static inline uint16_t +nn_cfg_readw(struct nfp_hw *hw, + uint32_t off) +{ + return rte_le_to_cpu_16(nn_readw(hw->ctrl_bar + off)); +} + +static inline void +nn_cfg_writew(struct nfp_hw *hw, + uint32_t off, + uint16_t val) +{ + nn_writew(rte_cpu_to_le_16(val), hw->ctrl_bar + off); +} + +static inline uint32_t +nn_cfg_readl(struct nfp_hw *hw, + uint32_t off) +{ + return rte_le_to_cpu_32(nn_readl(hw->ctrl_bar + off)); +} + +static inline void +nn_cfg_writel(struct nfp_hw *hw, + uint32_t off, + uint32_t val) +{ + nn_writel(rte_cpu_to_le_32(val), hw->ctrl_bar + off); +} + +static inline uint64_t +nn_cfg_readq(struct nfp_hw *hw, + uint32_t off) +{ + return rte_le_to_cpu_64(nn_readq(hw->ctrl_bar + off)); +} + +static inline void +nn_cfg_writeq(struct nfp_hw *hw, + uint32_t off, + uint64_t val) +{ + nn_writeq(rte_cpu_to_le_64(val), hw->ctrl_bar + off); +} + +/** + * Add the value to the selected pointer of a queue. + * + * @param queue + * Base address for queue structure + * @param ptr + * Add to the read or write pointer + * @param val + * Value to add to the queue pointer + */ +static inline void +nfp_qcp_ptr_add(uint8_t *queue, + enum nfp_qcp_ptr ptr, + uint32_t val) +{ + uint32_t off; + + if (ptr == NFP_QCP_READ_PTR) + off = NFP_QCP_QUEUE_ADD_RPTR; + else + off = NFP_QCP_QUEUE_ADD_WPTR; + + nn_writel(rte_cpu_to_le_32(val), queue + off); +} + +/** + * Read the current read/write pointer value for a queue. + * + * @param queue + * Base address for queue structure + * @param ptr + * Read or Write pointer + */ +static inline uint32_t +nfp_qcp_read(uint8_t *queue, + enum nfp_qcp_ptr ptr) +{ + uint32_t off; + uint32_t val; + + if (ptr == NFP_QCP_READ_PTR) + off = NFP_QCP_QUEUE_STS_LO; + else + off = NFP_QCP_QUEUE_STS_HI; + + val = rte_cpu_to_le_32(nn_readl(queue + off)); + + if (ptr == NFP_QCP_READ_PTR) + return val & NFP_QCP_QUEUE_STS_LO_READPTR_MASK; + else + return val & NFP_QCP_QUEUE_STS_HI_WRITEPTR_MASK; +} + +__rte_internal +int nfp_reconfig_real(struct nfp_hw *hw, uint32_t update); + +__rte_internal +int nfp_reconfig(struct nfp_hw *hw, uint32_t ctrl, uint32_t update); + +__rte_internal +int nfp_ext_reconfig(struct nfp_hw *hw, uint32_t ctrl_ext, uint32_t update); + +__rte_internal +void nfp_read_mac(struct nfp_hw *hw); + +__rte_internal +void nfp_write_mac(struct nfp_hw *hw, uint8_t *mac); + +#endif/* __NFP_COMMON_H__ */ diff --git a/drivers/common/nfp/version.map b/drivers/common/nfp/version.map index 25e48c39d6..f6a54a97cd 100644 --- a/drivers/common/nfp/version.map +++ b/drivers/common/nfp/version.map @@ -3,5 +3,11 @@ INTERNAL { nfp_class_driver_register; + nfp_reconfig; + nfp_ext_reconfig; + nfp_reconfig_real; + nfp_read_mac; + nfp_write_mac; + local: *; }; diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 3d4b78fbf1..76317925ec 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -600,13 +600,13 @@ nfp_net_init(struct rte_eth_dev *eth_dev) } nfp_net_pf_read_mac(app_fw_nic, port); - nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); + nfp_write_mac(hw, &hw->mac_addr.addr_bytes[0]); if (rte_is_valid_assigned_ether_addr(&hw->mac_addr) == 0) { PMD_INIT_LOG(INFO, "Using random mac address for port %d", port); /* Using random mac addresses for VFs */ rte_eth_random_addr(&hw->mac_addr.addr_bytes[0]); - nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); + nfp_write_mac(hw, &hw->mac_addr.addr_bytes[0]); } /* Copying mac address to DPDK eth_dev struct */ diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 049728d30c..b9cfb48021 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -15,18 +15,6 @@ #include "nfp_logs.h" #include "nfp_net_common.h" -static void -nfp_netvf_read_mac(struct nfp_hw *hw) -{ - uint32_t tmp; - - tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR)); - memcpy(&hw->mac_addr.addr_bytes[0], &tmp, 4); - - tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR + 4)); - memcpy(&hw->mac_addr.addr_bytes[4], &tmp, 2); -} - static int nfp_netvf_start(struct rte_eth_dev *dev) { @@ -334,12 +322,12 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) goto dev_err_ctrl_map; } - nfp_netvf_read_mac(hw); + nfp_read_mac(hw); if (rte_is_valid_assigned_ether_addr(&hw->mac_addr) == 0) { PMD_INIT_LOG(INFO, "Using random mac address for port %hu", port); /* Using random mac addresses for VFs */ rte_eth_random_addr(&hw->mac_addr.addr_bytes[0]); - nfp_net_write_mac(hw, &hw->mac_addr.addr_bytes[0]); + nfp_write_mac(hw, &hw->mac_addr.addr_bytes[0]); } /* Copying mac address to DPDK eth_dev struct */ diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 01574de963..711532b466 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -19,12 +19,6 @@ #define NFP_TX_MAX_SEG UINT8_MAX #define NFP_TX_MAX_MTU_SEG 8 -/* - * This is used by the reconfig protocol. It sets the maximum time waiting in - * milliseconds before a reconfig timeout happens. - */ -#define NFP_NET_POLL_TIMEOUT 5000 - #define NFP_NET_LINK_DOWN_CHECK_TIMEOUT 4000 /* ms */ #define NFP_NET_LINK_UP_CHECK_TIMEOUT 1000 /* ms */ @@ -198,141 +192,6 @@ nfp_net_notify_port_speed(struct nfp_net_hw *hw, /* The length of firmware version string */ #define FW_VER_LEN 32 -static int -nfp_reconfig_real(struct nfp_hw *hw, - uint32_t update) -{ - uint32_t cnt; - uint32_t new; - struct timespec wait; - - PMD_DRV_LOG(DEBUG, "Writing to the configuration queue (%p)...", - hw->qcp_cfg); - - if (hw->qcp_cfg == NULL) { - PMD_DRV_LOG(ERR, "Bad configuration queue pointer"); - return -ENXIO; - } - - nfp_qcp_ptr_add(hw->qcp_cfg, NFP_QCP_WRITE_PTR, 1); - - wait.tv_sec = 0; - wait.tv_nsec = 1000000; /* 1ms */ - - PMD_DRV_LOG(DEBUG, "Polling for update ack..."); - - /* Poll update field, waiting for NFP to ack the config */ - for (cnt = 0; ; cnt++) { - new = nn_cfg_readl(hw, NFP_NET_CFG_UPDATE); - if (new == 0) - break; - - if ((new & NFP_NET_CFG_UPDATE_ERR) != 0) { - PMD_DRV_LOG(ERR, "Reconfig error: %#08x", new); - return -1; - } - - if (cnt >= NFP_NET_POLL_TIMEOUT) { - PMD_DRV_LOG(ERR, "Reconfig timeout for %#08x after %u ms", - update, cnt); - return -EIO; - } - - nanosleep(&wait, 0); /* Waiting for a 1ms */ - } - - PMD_DRV_LOG(DEBUG, "Ack DONE"); - return 0; -} - -/** - * Reconfigure the NIC. - * - * Write the update word to the BAR and ping the reconfig queue. Then poll - * until the firmware has acknowledged the update by zeroing the update word. - * - * @param hw - * Device to reconfigure. - * @param ctrl - * The value for the ctrl field in the BAR config. - * @param update - * The value for the update field in the BAR config. - * - * @return - * - (0) if OK to reconfigure the device. - * - (-EIO) if I/O err and fail to reconfigure the device. - */ -int -nfp_reconfig(struct nfp_hw *hw, - uint32_t ctrl, - uint32_t update) -{ - int ret; - - rte_spinlock_lock(&hw->reconfig_lock); - - nn_cfg_writel(hw, NFP_NET_CFG_CTRL, ctrl); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); - - rte_wmb(); - - ret = nfp_reconfig_real(hw, update); - - rte_spinlock_unlock(&hw->reconfig_lock); - - if (ret != 0) { - PMD_DRV_LOG(ERR, "Error nfp reconfig: ctrl=%#08x update=%#08x", - ctrl, update); - return -EIO; - } - - return 0; -} - -/** - * Reconfigure the NIC for the extend ctrl BAR. - * - * Write the update word to the BAR and ping the reconfig queue. Then poll - * until the firmware has acknowledged the update by zeroing the update word. - * - * @param hw - * Device to reconfigure. - * @param ctrl_ext - * The value for the first word of extend ctrl field in the BAR config. - * @param update - * The value for the update field in the BAR config. - * - * @return - * - (0) if OK to reconfigure the device. - * - (-EIO) if I/O err and fail to reconfigure the device. - */ -int -nfp_ext_reconfig(struct nfp_hw *hw, - uint32_t ctrl_ext, - uint32_t update) -{ - int ret; - - rte_spinlock_lock(&hw->reconfig_lock); - - nn_cfg_writel(hw, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); - - rte_wmb(); - - ret = nfp_reconfig_real(hw, update); - - rte_spinlock_unlock(&hw->reconfig_lock); - - if (ret != 0) { - PMD_DRV_LOG(ERR, "Error nfp ext reconfig: ctrl_ext=%#08x update=%#08x", - ctrl_ext, update); - return -EIO; - } - - return 0; -} - /** * Reconfigure the firmware via the mailbox * @@ -531,22 +390,6 @@ nfp_net_cfg_queue_setup(struct nfp_net_hw *hw) hw->super.qcp_cfg = hw->tx_bar + NFP_QCP_QUEUE_ADDR_SZ; } -void -nfp_net_write_mac(struct nfp_hw *hw, - uint8_t *mac) -{ - uint32_t mac0; - uint16_t mac1; - - mac0 = *(uint32_t *)mac; - nn_writel(rte_cpu_to_be_32(mac0), hw->ctrl_bar + NFP_NET_CFG_MACADDR); - - mac += 4; - mac1 = *(uint16_t *)mac; - nn_writew(rte_cpu_to_be_16(mac1), - hw->ctrl_bar + NFP_NET_CFG_MACADDR + 6); -} - int nfp_net_set_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr) @@ -565,7 +408,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, } /* Writing new MAC to the specific port BAR address */ - nfp_net_write_mac(hw, (uint8_t *)mac_addr); + nfp_write_mac(hw, (uint8_t *)mac_addr); update = NFP_NET_CFG_UPDATE_MACADDR; ctrl = hw->ctrl; diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index e997756091..9461440d0b 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -8,21 +8,12 @@ #include #include -#include +#include #include #include "nfp_net_ctrl.h" #include "nfpcore/nfp_dev.h" -/* Macros for accessing the Queue Controller Peripheral 'CSRs' */ -#define NFP_QCP_QUEUE_OFF(_x) ((_x) * 0x800) -#define NFP_QCP_QUEUE_ADD_RPTR 0x0000 -#define NFP_QCP_QUEUE_ADD_WPTR 0x0004 -#define NFP_QCP_QUEUE_STS_LO 0x0008 -#define NFP_QCP_QUEUE_STS_LO_READPTR_MASK (0x3ffff) -#define NFP_QCP_QUEUE_STS_HI 0x000c -#define NFP_QCP_QUEUE_STS_HI_WRITEPTR_MASK (0x3ffff) - /* Interrupt definitions */ #define NFP_NET_IRQ_LSC_IDX 0 @@ -42,8 +33,6 @@ /* Alignment for dma zones */ #define NFP_MEMZONE_ALIGN 128 -#define NFP_QCP_QUEUE_ADDR_SZ (0x800) - /* Number of supported physical ports */ #define NFP_MAX_PHYPORTS 12 @@ -53,12 +42,6 @@ enum nfp_app_fw_id { NFP_APP_FW_FLOWER_NIC = 0x3, }; -/* Read or Write Pointer of a queue */ -enum nfp_qcp_ptr { - NFP_QCP_READ_PTR = 0, - NFP_QCP_WRITE_PTR -}; - enum nfp_net_meta_format { NFP_NET_METAFORMAT_SINGLE, NFP_NET_METAFORMAT_CHAINED, @@ -112,17 +95,6 @@ struct nfp_app_fw_nic { uint8_t total_phyports; }; -struct nfp_hw { - uint8_t *ctrl_bar; - uint8_t *qcp_cfg; - uint32_t cap; - uint32_t cap_ext; - uint32_t ctrl; - uint32_t ctrl_ext; - rte_spinlock_t reconfig_lock; - struct rte_ether_addr mac_addr; -}; - struct nfp_net_hw { /** The parent class */ struct nfp_hw super; @@ -184,179 +156,6 @@ struct nfp_net_adapter { struct nfp_net_hw hw; }; -static inline uint8_t -nn_readb(volatile const void *addr) -{ - return rte_read8(addr); -} - -static inline void -nn_writeb(uint8_t val, - volatile void *addr) -{ - rte_write8(val, addr); -} - -static inline uint32_t -nn_readl(volatile const void *addr) -{ - return rte_read32(addr); -} - -static inline void -nn_writel(uint32_t val, - volatile void *addr) -{ - rte_write32(val, addr); -} - -static inline uint16_t -nn_readw(volatile const void *addr) -{ - return rte_read16(addr); -} - -static inline void -nn_writew(uint16_t val, - volatile void *addr) -{ - rte_write16(val, addr); -} - -static inline uint64_t -nn_readq(volatile void *addr) -{ - uint32_t low; - uint32_t high; - const volatile uint32_t *p = addr; - - high = nn_readl((volatile const void *)(p + 1)); - low = nn_readl((volatile const void *)p); - - return low + ((uint64_t)high << 32); -} - -static inline void -nn_writeq(uint64_t val, - volatile void *addr) -{ - nn_writel(val >> 32, (volatile char *)addr + 4); - nn_writel(val, addr); -} - -static inline uint8_t -nn_cfg_readb(struct nfp_hw *hw, - uint32_t off) -{ - return nn_readb(hw->ctrl_bar + off); -} - -static inline void -nn_cfg_writeb(struct nfp_hw *hw, - uint32_t off, - uint8_t val) -{ - nn_writeb(val, hw->ctrl_bar + off); -} - -static inline uint16_t -nn_cfg_readw(struct nfp_hw *hw, - uint32_t off) -{ - return rte_le_to_cpu_16(nn_readw(hw->ctrl_bar + off)); -} - -static inline void -nn_cfg_writew(struct nfp_hw *hw, - uint32_t off, - uint16_t val) -{ - nn_writew(rte_cpu_to_le_16(val), hw->ctrl_bar + off); -} - -static inline uint32_t -nn_cfg_readl(struct nfp_hw *hw, - uint32_t off) -{ - return rte_le_to_cpu_32(nn_readl(hw->ctrl_bar + off)); -} - -static inline void -nn_cfg_writel(struct nfp_hw *hw, - uint32_t off, - uint32_t val) -{ - nn_writel(rte_cpu_to_le_32(val), hw->ctrl_bar + off); -} - -static inline uint64_t -nn_cfg_readq(struct nfp_hw *hw, - uint32_t off) -{ - return rte_le_to_cpu_64(nn_readq(hw->ctrl_bar + off)); -} - -static inline void -nn_cfg_writeq(struct nfp_hw *hw, - uint32_t off, - uint64_t val) -{ - nn_writeq(rte_cpu_to_le_64(val), hw->ctrl_bar + off); -} - -/** - * Add the value to the selected pointer of a queue. - * - * @param queue - * Base address for queue structure - * @param ptr - * Add to the read or write pointer - * @param val - * Value to add to the queue pointer - */ -static inline void -nfp_qcp_ptr_add(uint8_t *queue, - enum nfp_qcp_ptr ptr, - uint32_t val) -{ - uint32_t off; - - if (ptr == NFP_QCP_READ_PTR) - off = NFP_QCP_QUEUE_ADD_RPTR; - else - off = NFP_QCP_QUEUE_ADD_WPTR; - - nn_writel(rte_cpu_to_le_32(val), queue + off); -} - -/** - * Read the current read/write pointer value for a queue. - * - * @param queue - * Base address for queue structure - * @param ptr - * Read or Write pointer - */ -static inline uint32_t -nfp_qcp_read(uint8_t *queue, - enum nfp_qcp_ptr ptr) -{ - uint32_t off; - uint32_t val; - - if (ptr == NFP_QCP_READ_PTR) - off = NFP_QCP_QUEUE_STS_LO; - else - off = NFP_QCP_QUEUE_STS_HI; - - val = rte_cpu_to_le_32(nn_readl(queue + off)); - - if (ptr == NFP_QCP_READ_PTR) - return val & NFP_QCP_QUEUE_STS_LO_READPTR_MASK; - else - return val & NFP_QCP_QUEUE_STS_HI_WRITEPTR_MASK; -} - static inline uint32_t nfp_qcp_queue_offset(const struct nfp_dev_info *dev_info, uint16_t queue) @@ -366,8 +165,6 @@ nfp_qcp_queue_offset(const struct nfp_dev_info *dev_info, } /* Prototypes for common NFP functions */ -int nfp_reconfig(struct nfp_hw *hw, uint32_t ctrl, uint32_t update); -int nfp_ext_reconfig(struct nfp_hw *hw, uint32_t ctrl_ext, uint32_t update); int nfp_net_mbox_reconfig(struct nfp_net_hw *hw, uint32_t mbox_cmd); int nfp_net_configure(struct rte_eth_dev *dev); int nfp_net_common_init(struct rte_pci_device *pci_dev, struct nfp_net_hw *hw); @@ -375,7 +172,6 @@ void nfp_net_log_device_information(const struct nfp_net_hw *hw); void nfp_net_enable_queues(struct rte_eth_dev *dev); void nfp_net_disable_queues(struct rte_eth_dev *dev); void nfp_net_params_setup(struct nfp_net_hw *hw); -void nfp_net_write_mac(struct nfp_hw *hw, uint8_t *mac); int nfp_net_set_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr); int nfp_configure_rx_interrupt(struct rte_eth_dev *dev, struct rte_intr_handle *intr_handle); From patchwork Tue Oct 24 02:28:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133220 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 99713431EB; Tue, 24 Oct 2023 04:31:58 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 20D6A42DD3; Tue, 24 Oct 2023 04:30:12 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2119.outbound.protection.outlook.com [40.107.93.119]) by mails.dpdk.org (Postfix) with ESMTP id E9D2042DC4 for ; Tue, 24 Oct 2023 04:30:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZrOGEUsaHDsD/aKdZqbhHXrFMaZp/nLYcgCnduoLwNTu2ApkaaoA7qJeZGzLQettp5mrozI6Onwg0YvOkYqFOBFOKR3QTJss3f9vZTf7VL2M4FVVSnsx2b5UoPdzH7/gAE/UgrS+ybfx8HKPvNrm5R49nlC/6jYp+H0BMaiU6ASbdMKyCcASZ0W2+8zdFu3mFfjbGE/fQVIJgDPnNrS+AqZPTMOiXSHvAjIopl/d5xTI943UMierzOr0y9yJgpWgUuqmQq2GrVNT5JQoZpAvJHJEcWeaUPwaxju/a+CVYhtVIqkh36yZvPczlxH2Uds39oefeJ+U4va1k/JSiJHocQ== 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=65U0xgDsNa+Kyaab2mHdk5yulGkdGKmwRk7JZOvy5dk=; b=Jf6WkB28nEc3ZDOSgy9na63SQJpyX/2YLGsTF2qguLwORHP0I/+bc/PIopkcA/WJDBBkjbmiH4BEHrBYVfSNuP7Zj1MysORs7JgWazC8J+I8rYvyrwnpJS3UrsNGdlMiWuguxBfQEMFyIUFRrv0b72o1erqnmiHVwqDk3XlpuxWJcMQwUsP0AsFLLf14JrHSLl4SdjzcD4lohHkSug1u6YWkuyVMCiBGo0SwHZVwa2spyZ3lVhyXA91UcD4U3rfwjbXoG7MLFISRLnyrD7FUuznr5nmxZyUYMeF9MyuYQcAn8n1S3hh9zoQMBiao1Sipzhbdp01tB6zNyJH/nTr48Q== 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=65U0xgDsNa+Kyaab2mHdk5yulGkdGKmwRk7JZOvy5dk=; b=aiQLmMxed+mhBKQMp3CUs1ZNdk/UrTWoUgm8VfUoXh3kN+1Ts1IdwLQ71NbbALsC+imOdrMttxqLAhaXYsm6L3gbxgjAvuHDD2dDVjJiAvbQ02mSmO5GyNEEFxAVg++uNbx/QaVpPSjJoVSKAYxjisaWdWvLAQUKFW/sg91HfTw= 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 BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:30:05 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:05 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 15/25] drivers: move queue logic to common module Date: Tue, 24 Oct 2023 10:28:39 +0800 Message-Id: <20231024022849.3092506-16-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c0a9860-cfec-46e6-f3dc-08dbd43921db X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9a5dRVOR70lQHrLhtfxdDa0PakKgBg+JkfIITTz84PRmRtM4fEYVCdVSg6u4RgADMAhWnneUTid7WuabJqTwLWxzJ0zbchG/6eWrsatGsK21y0DEOd593jx1OaSunfdUigIQJJGwXK6plX4Z+NmVfIotPbvji+0dTKeZaZuQFOQlaxYHIgeu+FuJofo3msJ5MtIlc3ZQ1pGJqznk/PciJx90bcM243bMFEInbbBed59rF2SQxZmNmT9hNxggG7wUqYFomAzT9U3nlMgSjYaxv0mEt81ux//yxJ3ncbFn43APdWs5oAW+2WvV0sEQgedWROiq6MhyxYHWgMmkL6Wm2ahhKcHxeEZAfnNx9JC9WAoIXIQ5pZ/D7tZqll2Qm9M8K0h4X1yIx1gtpqOJTqWLC4twpR1tnhUtcjHtscqrRT6jAIV0Sjq080vu9j5kVaDRdxiujZbwCGTMDDVlhGfdjqQSiAGKLj7EtTkGYCp/fq5/dtg5spguK0FW3uHw/z2C5PUE9fm/bYgKYa0QipFS+GvZJkvY4IG3eb+kPhxNIjuf4kb88o22nTLgexmFkBkxXGwoOUiCRoywJTFvEdMfrXMJfmiQzNNQQmNUvV/cYsxtwAHf+g+aGmoWathczGU1MQkSMeMYbcVbVzTHkPXpVenjfuMriQ95BEr3EoIkZbY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7tPWwAFHWdsfJ7MOubEVkH223yiJU1FTXW866NGzwGP4t2SGWp/M2vmVnpKug7g5/CkzRvizsbz+ycZBqvhHzcpQRFR9nGtjWdu6G/Vb86Sn8LRgkvUaI9BRe6g4T9rKYH4qpaeCiozQQUjfB2GAus5co1aoi5AtWkDtfs+zt+zW1riMzHG/PWMLV4IlXI8w+71BlWZyXfK/b2tSDONA5UaMIyh4Y8PnwgzBwz2/KtnPVnH9si6FIdhrhjG9TX/h0fO3Bf472r55XjHfQUacyJeiphFgmRlrYVuzgyN03wBM8d9uZpm/NIGwV0yuCg/reB/SezoPXtLpcPgDczycjfO9C48YeUf90QZtBDQioBZBTgBhghkLuTaDRfmdeVVQsg4zMUrM/zTXdIgU5mQPb0ya4YnzHyImr8Jipqm38HXSfRV/3z1NziSjFoofVbYONB4YpgY26GcfdkYysdl9CNmpjjmjDFCUWnwtU24YxdVl0Ezv8HkYhtz2KVbopGnfqocECDIBYza44LdsSy9mhrGeAgk/6GOyj+SkRmundhotF8MUZjEcE40Jat6ScRgIBLHLE+3rmcN3k97YhuN5LCw5gBunSipANeizgqvE3GmaVo0dAapQWzdZrqvwRlRmFk8D6BDyAdwsKnnuuapCmydSipHaaPMYOdZhXseSaoPTDtkEgCLevvlFUTweYmBFjDSV6UCyrsbPHyLjNDSSXvXeGvZWrASCIlL06KeyEcHsEeEmHKtbzHsOSBLJL2sZUTgP8SKyIukK8Re+rO6hl+N351b/ABzXkmiPqCUJzbU5ZYLfh11CQ4iOiToZSCf24eVaE9ZwmVq3WOZRg47D4bp+uTfpuwuO0Pcn+DJhwR017MNp6Xd5Wb9ahW7enIPod53rsCVq5srMl1RBM0gUhLzZ71H5u1UovskIvtfK1eZE7Tx/EgXcZPv5WGYmlKhlcIhd2KrJf0O0tn/mlc5bwClc3geDWINrW19wtFwIZRD+jcxCU6u5w4TlvqUb0/i2Q06igbVzfhdj6yTx/Tva3TZYNOPjOpKnTlsFYBwvEF8O+TEC6SwrHlNBFl22o3100l6l0925nQk0Sdf8ULRT5bzWyD4VKbEM+Ib+8+D8spNAqTxUYRUY2YKcJzI92u2ozU7cnvl0qf5ttUX7kgn2nGur08QjhqpzUlEvxUMg9xzltBGb3HfOyXZr3NiZ5c3Et96EEuUJp/OFtQr6iwMPSzpCy2IlZ0evXfiBDdZs7KDM7eeYpzmivt4patZQHn518Km7BmpcCOBqIus7Z0Ty7lApbkbAGdqEwE4h4KQ+wLtzTKX6BjN7FDUWZ4ptBBpkSOcsU/hlTEzKhEuKEUkv+G4VBfPkBLm+lsINAmhK9WVpZ2r29Lf2TJtqWY5Gie1Qywm4NPKRBhvIdacpwfE2w5CefNLBgDGuWQbWnOUYb5tPvrY7C07Ff97Na/bnAQRrOKWIeBO6ngrkCu603RoUoVUS5Q00NRb4JaT4MFc8zOvOjQZQsCRyXYoKM0hVp7wp+52Rhb9/5DOTwcOf0/SeacFLlKK8dpDlgx0JwWeJ9fkyqCFdahIG7ejGPgG3fZK4qmcHbpvAuwgsunGmLyQpVw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c0a9860-cfec-46e6-f3dc-08dbd43921db X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:05.2583 (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: aCF0ma4drfm9+WfrwAyo5GJHQjFtp3lJdgWP537Fy2g2J3rH3cOzHP5JETjCunnBoaQ2dbGL4IqdYLVyuTj6bLEhwRjugyurvbppx6kHCII= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Move the queue enable/disable logic to the common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common.c | 49 ++++++++++++++++++++++++++++++++ drivers/common/nfp/nfp_common.h | 7 +++++ drivers/common/nfp/version.map | 2 ++ drivers/net/nfp/nfp_net_common.c | 38 ++----------------------- 4 files changed, 61 insertions(+), 35 deletions(-) diff --git a/drivers/common/nfp/nfp_common.c b/drivers/common/nfp/nfp_common.c index 1a98326980..4c94c9d59a 100644 --- a/drivers/common/nfp/nfp_common.c +++ b/drivers/common/nfp/nfp_common.c @@ -175,3 +175,52 @@ nfp_write_mac(struct nfp_hw *hw, nn_writew(rte_cpu_to_be_16(mac1), hw->ctrl_bar + NFP_NET_CFG_MACADDR + 6); } + +void +nfp_enable_queues(struct nfp_hw *hw, + uint16_t nb_rx_queues, + uint16_t nb_tx_queues) +{ + int i; + uint64_t enabled_queues; + + /* Enabling the required TX queues in the device */ + enabled_queues = 0; + for (i = 0; i < nb_tx_queues; i++) + enabled_queues |= (1 << i); + + nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); + + /* Enabling the required RX queues in the device */ + enabled_queues = 0; + for (i = 0; i < nb_rx_queues; i++) + enabled_queues |= (1 << i); + + nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); +} + +void +nfp_disable_queues(struct nfp_hw *hw) +{ + int ret; + uint32_t update; + uint32_t new_ctrl; + + nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); + nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); + + new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; + update = NFP_NET_CFG_UPDATE_GEN | + NFP_NET_CFG_UPDATE_RING | + NFP_NET_CFG_UPDATE_MSIX; + + if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) + new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG; + + /* If an error when reconfig we avoid to change hw state */ + ret = nfp_reconfig(hw, new_ctrl, update); + if (ret < 0) + return; + + hw->ctrl = new_ctrl; +} diff --git a/drivers/common/nfp/nfp_common.h b/drivers/common/nfp/nfp_common.h index 5615cde6af..7597d4090b 100644 --- a/drivers/common/nfp/nfp_common.h +++ b/drivers/common/nfp/nfp_common.h @@ -229,4 +229,11 @@ void nfp_read_mac(struct nfp_hw *hw); __rte_internal void nfp_write_mac(struct nfp_hw *hw, uint8_t *mac); +__rte_internal +void nfp_enable_queues(struct nfp_hw *hw, uint16_t nb_rx_queues, + uint16_t nb_tx_queues); + +__rte_internal +void nfp_disable_queues(struct nfp_hw *hw); + #endif/* __NFP_COMMON_H__ */ diff --git a/drivers/common/nfp/version.map b/drivers/common/nfp/version.map index f6a54a97cd..c1e03d8b8d 100644 --- a/drivers/common/nfp/version.map +++ b/drivers/common/nfp/version.map @@ -8,6 +8,8 @@ INTERNAL { nfp_reconfig_real; nfp_read_mac; nfp_write_mac; + nfp_enable_queues; + nfp_disable_queues; local: *; }; diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 711532b466..090feb0e39 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -327,54 +327,22 @@ nfp_net_enable_rxvlan_cap(struct nfp_net_hw *hw, void nfp_net_enable_queues(struct rte_eth_dev *dev) { - uint16_t i; struct nfp_net_hw *hw; - uint64_t enabled_queues; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - /* Enabling the required TX queues in the device */ - enabled_queues = 0; - for (i = 0; i < dev->data->nb_tx_queues; i++) - enabled_queues |= (1 << i); - - nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); - - /* Enabling the required RX queues in the device */ - enabled_queues = 0; - for (i = 0; i < dev->data->nb_rx_queues; i++) - enabled_queues |= (1 << i); - - nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); + nfp_enable_queues(&hw->super, dev->data->nb_rx_queues, + dev->data->nb_tx_queues); } void nfp_net_disable_queues(struct rte_eth_dev *dev) { - uint32_t update; - uint32_t new_ctrl; - struct nfp_hw *hw; struct nfp_net_hw *net_hw; net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - hw = &net_hw->super; - - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); - - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; - update = NFP_NET_CFG_UPDATE_GEN | - NFP_NET_CFG_UPDATE_RING | - NFP_NET_CFG_UPDATE_MSIX; - - if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) - new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG; - /* If an error when reconfig we avoid to change hw state */ - if (nfp_reconfig(hw, new_ctrl, update) != 0) - return; - - hw->ctrl = new_ctrl; + nfp_disable_queues(&net_hw->super); } void From patchwork Tue Oct 24 02:28:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133221 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 0F8E5431EB; Tue, 24 Oct 2023 04:32:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5863F42DE9; Tue, 24 Oct 2023 04:30:13 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2125.outbound.protection.outlook.com [40.107.223.125]) by mails.dpdk.org (Postfix) with ESMTP id 7F75742DDF for ; Tue, 24 Oct 2023 04:30:10 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kmZ42qC+9cSMMZHzsEHn0pSZIqcoBZG2oD9h9hPTW7BYG69ercFMhlAnQyBpqOHF5AWpdtyRU7mKsEF/9db7j6uooR5Z6pvGlvtvWSrTbOdoIkONGa4zkhXCWUnClzvNanjfXFUNExZnOphTmLku36GhpCsi4cD8/otwcKRq2YysLUEZVq2g/IX5dYMkDFV7wpJBJoWwFeIZREVGTFrGWFiOlrlPBc6dXvd49E/vROL2avHdlgTr3hgmftFylBvf6QiUqvowdKqyz1A3lLA96nKDeCchn6tjHccjaNz/0HCPU+Y2forMq5ebXeWtz98PGmf2o0sW2WL8l8WpvnRDug== 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=MbOgDdmDw4PcVtgNTnm7mAp/yWzcnFt4LO8EZfeAq00=; b=AGRf6xDrhIoRv1n/LU4u35ylBEtnLT384GLByoJHX6aW7nkZH7DuLjyvr+RzTMkLyZB8TDAfs/iFTGNc2hIcP0BCHjRgYnLlcEs4Y5Ef8fAvChyKfybZY/TzyxXyNK+OQd3/YKXYHBBv2Su1OMQrF7CIG2WdV5sTewK+3TD3QL/EGA2wXjjb9neCWH45/2jEooOVYXYsMxQsjQ3Rj6NJSPHPq58w/AY6yYI3RbmlWklvtSokwIaQ0/BDHlyQFT7ESIoHDpdK/6wNOR9kl859TnRQeDfSXI9/5gSryUHeHECXeO70omyRIe63+3K1E1bcbnxHBbqAOt8yFx35aVniBw== 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=MbOgDdmDw4PcVtgNTnm7mAp/yWzcnFt4LO8EZfeAq00=; b=CFeLHf5uJBpk4LfQS3QI/k/TCKiMluWEe+FAb8lwSvzbWOrjn3rJDT5Ex0y0huBgvrppLfdivuBZeydJyI/Mo1SK6LfmFY8bUmrTuuSmPbXvBqqGaTe3KbqDW/Ovv0w55yVB/Qm7xAIl7zEy1BrqFCWzWrWz9d4iIYWsMfJg11Y= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:07 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:07 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 16/25] drivers: move platform module to common library Date: Tue, 24 Oct 2023 10:28:40 +0800 Message-Id: <20231024022849.3092506-17-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: 0997d1c9-fa63-4f8f-0e3b-08dbd43922fa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wqfUMPRRg4O/cgeVKVzleSoeun4yqyPPP8f1jLx/YVL/c5am2Lh2JcaYkkCm6Ab1FtsQ7sRjKNzF+j4PeV6PJKEZ8KFiXL+XhzUbaF54XqfVzune/ej0/AO32Dv9xrORPkCV3I6OjdbpKdh8x0XPWyGla+GRJ94TedZvKAwXP0NaSz4n9nKn36hVxoHCwmLhyCBPAmNmbzCRaRyYCJJg7pATYthmA81UpULZRoIwdiTmJqUwDrSGP8cwtP+P2X1X+CbWWKXWRYPQO7GRUjH+V3iZCTaXaSEX451MokshHwDe7CiAQ5PqUGU/dZ2518kYjhfiX2qNd+PKUBybyfR4ikp1wHTfJa7exUB+XTu26eAkHUYlsxIpMHSD7VUhj0smhaMBWa2KN52u9Kz9zQSVrP9oD3+d8Ouzk2BCA5nWUmMbwkd1ckxiH4EMYIl7rqjStaxNY25ix3Gic/2TOmEeT90H26y7jfeUx46nkW3scsijPLxb6i2g9UHtBfuRtW5DULIg3rNZDeS/HoKiXxfZjaL4yIPXghW8wNV1WopW/yYCgLwwL6MFA1/nA6PfUkoaqHdryEgmJv3KCJ5mzmfKB30qYwXAC9utQ25pvDRrPh9XewyB+cphq9awarGc76pCRN9fKJhyBOq2ni9Z1MmihqYv8a+lwZP5eJJsc7ROZdk= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: g7McSoquDGD8nLokvJ+RlraslN/hzdBSATU8r0/sTS0CBiGKydQiSpxbCVaj4U4LXxDjL0zr1rZM4XhJK1AaV/RKRtTDpru6L4+dDJbN0Po+IneNn5kWASjt8C2QNwgAree6gRnECuGqvETc9O748K8PuSIXTIrjxIwavS+/YqtVj2+bUrPfAOcGbPo8oZ8ctcTL8riTn2UtXXkX2nhs+4coQKbXC+IGeTF7szdfAQtB3RSb9woteQ6g17c+VXRCGXT40tAD8cYy+T4q09fj0q5lcBxG/ydITrn6aiq0Vfx/QQ1P+eVl6ySsJx1nODVjl+7yb3jY6htYfS3sIlQoA5BBQ/94bo177zw6IhlJzIQwKfJvy+TmG9ofFedToLd2LVKnT57wS6wVy8xgG8uCXwH2YPvJ+oY7jgJ9NPE3XAW53FA2yU7iSf282wjUmZT7C34o/DlK5+uYSidYsgdzpa4e02XzpLnmT/kPGxQGh/dGVhqz3CjM54m1wNVyhmttobhz5eC761Ud5vFCapFJQeuPlKy6A15XmdmOt/h9FPux+GSGt6WkNybtek2r/zlMsC2C3pXbdCiVUFYhQsIHzcgn8PkLPYTm2T9ya4qWXwzCDt17wTZunKTEy3Px2lqzNtAZXY84s3dJGNczy35tv1QqJrE6RjHzsjPXRYrLHWWub6crapqXo+//aepuwpXyWO6xquQ0l1QQSpJMa8OTNv/92r+MJtoPhYGYa1fxVv6vaWwZWB5aE8lAyL7Ids/916RQugwYqrGwCxh1ErieFNEatuYh5PsD1BwpCB5y6lN7dxQTY7BfQOt9A9m2dLPdLc5+hbR0MUsmzO/COgpvx6ZQFmkfEUYzLnzdoLYf+bzRrIyfQaR+V+HhjuHGpfgJ1GKQwrzx3BizRRRg0GBnLqx7TUpzLlsti6QKUTDM4vzGOGR4vQksZHUwe2O2dYZck4XyMls3F6pdQTxdB34GdXdPpziIEvRpGM2KBe7mlEn+tkHiamopNDnsq9wa28JWm4gttbUyN3QVeAWyvcwu/pIoB0FzUW7dbiPIQ0/d6CYhNNJURVlo3cV0nWw99nHopGyBkFeQy/c8bDdwTVHE64TVL54U1iTNZCv3hUpLL1JUATZt875LF0FXBPj0qunyjmuDxIZLj5B3sRpJ2iVjANPmp13oMTX4jpEjCD2uviFgcuyhWU2ms3I4Tlj9I+lQYYRqoGbR2Jx30yFSnFM6EfCpKcJsTN042UzQKL/nYHQxXFkP2u5PkfDfceZ2bmo7f2/RFqVviSLE2Si7sFbE8KZcndubb0q8zhYpFDvyEa7ljywgnVGRWWDwSX8YHOb5DYWY6Zd7lAfl7BFDCzx2b0w8adTyUHUQEWCfZwR2ZJA2hhhWiGMyFjLDoZL5eMbTwdroAzGG/MaRdB2Du4bJx4c+WUSa6g/I/QebA9C9U+ja5UKXbaKAvqcrhZAVSLleh4/l29W6xAP5Os3ZvOpC1XkJjQqKJvU6smMMhNBzKTFyoh3QJHmVyGQj5pFuJqjAagYrWvau4JLj60JwT0nWSCi50oBelevNfAFxWGM7lkfjkYjCb+5NIQ23rpWAhvzXkZxHxbpNmVsQcZUqC5bEKg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0997d1c9-fa63-4f8f-0e3b-08dbd43922fa X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:07.0729 (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: elCEok1Yy20GGLBl38cRBCdXbxeAS65yJtmH39PZG0xK4/kRNCaphKwKRk/RVoatALk9MqFb+e0YB7Q3Yrohom+6QR+nyKj3+/avgBZtxXk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Move the platform module to the common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/{net/nfp/nfpcore => common/nfp}/nfp_platform.h | 0 drivers/net/nfp/nfdk/nfp_nfdk_dp.c | 2 +- drivers/net/nfp/nfp_net_ctrl.c | 3 +-- drivers/net/nfp/nfpcore/nfp_cppcore.c | 3 ++- drivers/net/nfp/nfpcore/nfp_dev.c | 3 +-- drivers/net/nfp/nfpcore/nfp_nsp.c | 2 +- drivers/net/nfp/nfpcore/nfp_nsp_eth.c | 3 ++- 7 files changed, 8 insertions(+), 8 deletions(-) rename drivers/{net/nfp/nfpcore => common/nfp}/nfp_platform.h (100%) diff --git a/drivers/net/nfp/nfpcore/nfp_platform.h b/drivers/common/nfp/nfp_platform.h similarity index 100% rename from drivers/net/nfp/nfpcore/nfp_platform.h rename to drivers/common/nfp/nfp_platform.h diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c index 3f8d25aa29..10e6982c95 100644 --- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c +++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c @@ -6,10 +6,10 @@ #include "nfp_nfdk.h" #include +#include #include #include "../flower/nfp_flower.h" -#include "../nfpcore/nfp_platform.h" #include "../nfp_logs.h" #define NFDK_TX_DESC_GATHER_MAX 17 diff --git a/drivers/net/nfp/nfp_net_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c index 8848fa38fe..5135a1ad27 100644 --- a/drivers/net/nfp/nfp_net_ctrl.c +++ b/drivers/net/nfp/nfp_net_ctrl.c @@ -6,8 +6,7 @@ #include "nfp_net_ctrl.h" #include - -#include "nfpcore/nfp_platform.h" +#include #include "nfp_logs.h" #include "nfp_net_common.h" diff --git a/drivers/net/nfp/nfpcore/nfp_cppcore.c b/drivers/net/nfp/nfpcore/nfp_cppcore.c index f9b08a12b6..0e6045f2f0 100644 --- a/drivers/net/nfp/nfpcore/nfp_cppcore.c +++ b/drivers/net/nfp/nfpcore/nfp_cppcore.c @@ -5,8 +5,9 @@ #include "nfp_cpp.h" +#include + #include "nfp_logs.h" -#include "nfp_platform.h" #include "nfp_target.h" #include "nfp6000/nfp6000.h" #include "nfp6000/nfp_xpb.h" diff --git a/drivers/net/nfp/nfpcore/nfp_dev.c b/drivers/net/nfp/nfpcore/nfp_dev.c index 7799fa699a..f29b7e0711 100644 --- a/drivers/net/nfp/nfpcore/nfp_dev.c +++ b/drivers/net/nfp/nfpcore/nfp_dev.c @@ -5,10 +5,9 @@ #include "nfp_dev.h" +#include #include -#include "nfp_platform.h" - /* * Note: The value of 'max_qc_size' is different from kernel driver, * because DPDK use 'uint16_t' as the data type. diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.c b/drivers/net/nfp/nfpcore/nfp_nsp.c index 5b804f6174..a680b972b8 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.c +++ b/drivers/net/nfp/nfpcore/nfp_nsp.c @@ -5,10 +5,10 @@ #include "nfp_nsp.h" +#include #include #include "nfp_logs.h" -#include "nfp_platform.h" #include "nfp_resource.h" /* Offsets relative to the CSR base */ diff --git a/drivers/net/nfp/nfpcore/nfp_nsp_eth.c b/drivers/net/nfp/nfpcore/nfp_nsp_eth.c index cc472907ca..75f6d40fea 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp_eth.c +++ b/drivers/net/nfp/nfpcore/nfp_nsp_eth.c @@ -3,9 +3,10 @@ * All rights reserved. */ +#include + #include "nfp_logs.h" #include "nfp_nsp.h" -#include "nfp_platform.h" #define NSP_ETH_NBI_PORT_COUNT 24 #define NSP_ETH_MAX_COUNT (2 * NSP_ETH_NBI_PORT_COUNT) From patchwork Tue Oct 24 02:28:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133222 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 B6CD0431EB; Tue, 24 Oct 2023 04:32:12 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8DF5242DF1; Tue, 24 Oct 2023 04:30:14 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2125.outbound.protection.outlook.com [40.107.223.125]) by mails.dpdk.org (Postfix) with ESMTP id DBDCC42DE9 for ; Tue, 24 Oct 2023 04:30:10 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WhxmEWHj1ewHFoITCl1TqZfOb1JB3CVTHw4gieTZNF0KX/mP+TCJTzIpZzb7jM0/GxGNOV9ZTbgH5sDrSJbBMkB7xe67cL7SESzh3LGmSzpolPK6qpt3amPKyeoRN7BPHRqRNBLrEUW7YYWARIoNbAlkSfXAKN6mWKvrmbQGur7SeWJRdfiFLcXuvb6gaz8LnIUmR+4cMJjgV7Z7ao93ekUjA83f0/qEoTgBRpFyRHwlsTVeh61Dxkjboz8n2mGgrUnLXT7rbTcoMFkCpSVg6bffTlP3ZTO8O3IQIO7POcuTWoeN0KRCyNNjy1iSaan1/qMbkNicDFXk/S9ucu9kwg== 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=87HXns5CLM0Sk5NzwoHs8Zzn3NQuAeftgI4ae8Tsneg=; b=L3jgwNzMW/3fDHDDcGiJ5pshhjj0VJ4WFZM+wXmlfvpmU6Jjiy1YNMMImWotoy+zbgCoJqK1wH4besD8HEdQfsM/PWIqvSql0PznhsvJ+9hQmdOCHT+S5OslzZas0rT6UQ3zuAadBlco7XUUck9kQ5E2o5MN4Rl+NtshJzJG+KIZWqaCqoI0JK16FC0nNv1nF8kHTtNixhU5iLCUj1Ls07c6XNjSqfK1LP14KcdwUujQPCWoOvZ3c/OJ6xsrpe4cQs6Xxj3y9/z2+f/6TUqv+Qfg7b9UCQJ/NdCs/A4RWl+KlkmdtZfD6HEgz1g8UFKaMl1BQWZxhBJixl8x9C2czw== 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=87HXns5CLM0Sk5NzwoHs8Zzn3NQuAeftgI4ae8Tsneg=; b=Be5YkGaELQ3qiOCM9cRrT0ILo8JvB7K/Oucs2T8nVBSZu0Yny4M0gtw/UGVl5g2xBecncDxf6zaIVBGEMOyjGKzKZ+aFk+97Di8YdvkffQi5McU8Wie8Hxa/tMSZjN8PFz41Es8Qnt4+MKvstJwMBWy9vMvSLeGEz07MMnCJGG4= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:09 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:08 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 17/25] drivers: move device module to common library Date: Tue, 24 Oct 2023 10:28:41 +0800 Message-Id: <20231024022849.3092506-18-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: 10890f57-5ae7-4169-04c6-08dbd4392411 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5Rz6O9Fh8HbivfElQIRrCjUTtJN1dsil78sL4E5ElFAs8IM21V97OgJC4+EA8IbFEPKf6aI3FVtTFm7ErRAMzHf5uKq10+CYgU35LJF3sNdhrUFzqXSOfYouCR4F2shugHum0rfwOv7MKwjD94BoPbrV40iYcftbawsnf4LRYXOCxogIRNndrvRqLagSRR5E4nR9pWhu/RLrG3cos5hAzvRiTKUakW3wbiGdQaZb+RSIaRR1fJtV2tuva03PjRQU3cmivUqGvr/0waIS/LV13JGnFwoBBpHWoB3vf7MVuWHcm4r0Y+RkLFmhXYMg5rNyCVu+RgYxjTY23XFjVnvGEwQqNl3MJydGnpKpJ6vn117XkhGr6KxbHUKivxdQSdYSkcda2pY9zrHDN3NaP1OkWOML26/ZT4l65yLM29+Igp/KYRp2mVzTRfvAOLjUq9rL3NomncgYA0hzxsxqYAya5A3QCc5uTc3wuGHjDIWL569rgSORVy7LavoZd2lVPoNE5v62fJpGaPslaSpFkeB0CLaPEPIPiESL6XacqWaaOc456YxZDRK9BgnLwl2Gy161WYugOZzKzwO2+NEYOVzgobLTY9rmeycuw5FKhqrUU1ciyvOlvDRk1MlIQEZEDdaLEL20ugo1i9dDTEF5V6y9uv481d6BG4RCG+gMLc4XYLQ= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DaO7Fqj92V88DhzMMrJNKf5DPKY71mBv5izBKx0DazMnOUvewQVJ5QTzh/VClIvrAzJlXTfTxY1SUyc19saMckoKu93feF3AQXVs+QfdwbGAQZxaG6CBBbl9FABt7drmAVvf6DY/3GnfnN8m6Rni3uNTPVnfvZS9aaFPJCnHAd7HRROo4d5F9rXDuEPfVS9KvVuC0UMpM27VG/Qsahtq9k4XyZypi5BvQXPJLU+jjEckgPH/neaNtMOhUQ0095C+feMTmRpLV0A1rfZbZfKTnnXM/ubz0vwRn1FwuKstBCeFG5xDit40Ssex/MwWHFeRurAuoD3cPhUsSDPSG3DxKLMzsSHiVHwte1jJtjyJErkZg1b1OjKMFrfeVIdqt/yhgJLP1PrHfexX70cREMhnIu5S1QT5ZOWm+V4vXo1eDLhEkc202G8jSVgYI0Hipb+St2Yde2KZBWXAiZyonOPzWYeJs3sTuGcz7i3DLgN1QqDV9YLVPCayG+KmmsmuX6kIW7xr8Q6YtKsXf+91qNmZxk4rRvGrE4xpi5pYqmepbeh/KsjkaBRwiBtfz12BPZxXy5Icu4lNXI/l6NsKuGMY/ynBwZC2tYe13l2TVk9pkD6Ncmbq0gZaBD9B/E2mH8CxrDs4V3l1TkYPChfPAupx4S7fhuYbnTlmCOXFV0wOLrDN8Db7k9H6yT9CbCktJnDXUUaUH6c68i1T3j77EQSvIvDRK/HLZqf3khk+q0rGe3guaaCP/5j3g7TMPaKJbe/Q8GdYmLHwnN5ubnW+ycK6+zZIMo/3p3YVa0ljaCorPxASjT0WmwhZeLtJOAijg0H8HzeDhIyJPX0PedEPoZRzFjIiGUJVndgJX0DFGdNrZol5NCxfS+gccn8jkOyoIyYNw+9zIThPbqTQyk6LhFhcq5qutT2Aa9zcXdbV1H4j+6wIjFqVnVipkvs9PazFza82DgnJ7kuYa+CV3oYN7i6kHFQOz7XyI9THoDtpduGwzx63PHa/0PaBKp4mUkncGvjuQxcST6P8GeJeQrK32J6v3+CkptB0QiEADVMTRfbWjr7VthLT2Nqaz4A1iNcPfBGSDRFw+UECoqM5708Cht4gH/NTCJlua/LtQ5rrdjiIYVB3SVMieJlnh79pO7da+Yc6UGll5hZv8UDbs+ThPU9G8Y/B0vzO7J3nj1NVqXygnpPMq3TT8l7aXHOLtzpBDTTY2vF2bkNb7B+Gswcu1cPcCuvoVh8evWINdkA4Z0o15ANez79krbX2S56njwrnyCj/Og70ReXzpBDDWnoiOFyAuo6EoGa7Y/xQ9037t7w9310KWJC59QIfwFVLhTiOPrZGWXPl/v4/LoVk2L25qQGEhCj9kiSeRXvI/WbZOWex82mQIJoqZQdeTQox6tMD1vANAdWkp5mW/Ekybv59lsUkag9dUTUNUAuv9aDstWogHyL0Sk1pX95ZYr/PICg8NX5AKWgKxaISD+V2HsM1ewHoeRTiHVqt5fLy4MEZrTy2wFb3qXWxm+nm65SoiZkSkSOnmGz7ASFiNh+2NHNtUJI+DQI+dq4mqk9EW/TlSKNsBUp17PrcH68xYB3w9sVcB8YBjs6vWqrHnVnW92w1UMcG4A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10890f57-5ae7-4169-04c6-08dbd4392411 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:08.9270 (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: oqAqgNQ9rf1eSkUAFWCGUVmLmGui1OXRqc6DBpumtslhAtAsQ6nfvFnKXRva4QbEHOZDz2ciXA0lQLf2K9tM/GJ9QvnvNNuoIz3jUqNVz/A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Move the device module to the common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/meson.build | 1 + drivers/{net/nfp/nfpcore => common/nfp}/nfp_dev.c | 0 drivers/{net/nfp/nfpcore => common/nfp}/nfp_dev.h | 3 +++ drivers/common/nfp/version.map | 1 + drivers/net/nfp/meson.build | 1 - drivers/net/nfp/nfp_net_common.h | 2 +- drivers/net/nfp/nfpcore/nfp6000_pcie.h | 2 +- 7 files changed, 7 insertions(+), 3 deletions(-) rename drivers/{net/nfp/nfpcore => common/nfp}/nfp_dev.c (100%) rename drivers/{net/nfp/nfpcore => common/nfp}/nfp_dev.h (96%) diff --git a/drivers/common/nfp/meson.build b/drivers/common/nfp/meson.build index 727d21e00b..7f496c2da5 100644 --- a/drivers/common/nfp/meson.build +++ b/drivers/common/nfp/meson.build @@ -12,4 +12,5 @@ sources = files( 'nfp_common.c', 'nfp_common_log.c', 'nfp_common_pci.c', + 'nfp_dev.c', ) diff --git a/drivers/net/nfp/nfpcore/nfp_dev.c b/drivers/common/nfp/nfp_dev.c similarity index 100% rename from drivers/net/nfp/nfpcore/nfp_dev.c rename to drivers/common/nfp/nfp_dev.c diff --git a/drivers/net/nfp/nfpcore/nfp_dev.h b/drivers/common/nfp/nfp_dev.h similarity index 96% rename from drivers/net/nfp/nfpcore/nfp_dev.h rename to drivers/common/nfp/nfp_dev.h index b0fffff619..ffcdd17227 100644 --- a/drivers/net/nfp/nfpcore/nfp_dev.h +++ b/drivers/common/nfp/nfp_dev.h @@ -8,6 +8,8 @@ #include +#include + #define PCI_VENDOR_ID_NETRONOME 0x19ee #define PCI_VENDOR_ID_CORIGINE 0x1da8 @@ -39,6 +41,7 @@ struct nfp_dev_info { uint8_t pf_num_per_unit; }; +__rte_internal const struct nfp_dev_info *nfp_dev_info_get(uint16_t device_id); #endif /* __NFP_DEV_H__ */ diff --git a/drivers/common/nfp/version.map b/drivers/common/nfp/version.map index c1e03d8b8d..c8a04b1b95 100644 --- a/drivers/common/nfp/version.map +++ b/drivers/common/nfp/version.map @@ -10,6 +10,7 @@ INTERNAL { nfp_write_mac; nfp_enable_queues; nfp_disable_queues; + nfp_dev_info_get; local: *; }; diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index d54dca36e9..c566c6d2e6 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -16,7 +16,6 @@ sources = files( 'nfdk/nfp_nfdk_dp.c', 'nfpcore/nfp_cppcore.c', 'nfpcore/nfp_crc.c', - 'nfpcore/nfp_dev.c', 'nfpcore/nfp_hwinfo.c', 'nfpcore/nfp_mip.c', 'nfpcore/nfp_mutex.c', diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 9461440d0b..6607175460 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -9,10 +9,10 @@ #include #include #include +#include #include #include "nfp_net_ctrl.h" -#include "nfpcore/nfp_dev.h" /* Interrupt definitions */ #define NFP_NET_IRQ_LSC_IDX 0 diff --git a/drivers/net/nfp/nfpcore/nfp6000_pcie.h b/drivers/net/nfp/nfpcore/nfp6000_pcie.h index 8e2cfb69e6..59b58ddd04 100644 --- a/drivers/net/nfp/nfpcore/nfp6000_pcie.h +++ b/drivers/net/nfp/nfpcore/nfp6000_pcie.h @@ -7,9 +7,9 @@ #define __NFP6000_PCIE_H__ #include +#include #include "nfp_cpp.h" -#include "nfp_dev.h" const struct nfp_cpp_operations *nfp_cpp_transport_operations(void); From patchwork Tue Oct 24 02:28:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133223 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 C7AF1431EB; Tue, 24 Oct 2023 04:32:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E826742D72; Tue, 24 Oct 2023 04:30:17 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2112.outbound.protection.outlook.com [40.107.223.112]) by mails.dpdk.org (Postfix) with ESMTP id 4531B42DE9 for ; Tue, 24 Oct 2023 04:30:12 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m1Nhg9nLKPiJXeHnmznTy3acxRF/TrE9xEqI1xfr2G/2LO7orcVz3iiCO/KNfag7dwHW0F1ZWbs6Yqk9HhHIw9e6NJ8YMUSa10hKOb1nTB0h+xK85/sFUxbRF7IUMJ2fI4CjONSuVm8nFjZXIBZLXhxNoFHS+EKnCbogBfC1rwVL4prHZ7T3UyUzEezC6U41K+sOB1ij9WB90i4WCyC+SU59zKmPXGbwx8VTW5VNin3vH8TbZvIuHaDv2Kwbc8bJPYzh9jx2Y/kyNwo+2uXEXl8skcQotziG2TjNKLSz6yy+Wu2Q5FfMSlNJlyKhLIrBxHNx3SUY4qN9S6voa6zxJQ== 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=pjAxOTjigfWeoSH3a0+oAXchHxhlRang74HXV1M5wm0=; b=m0+O9pVXPFgXES5JVBs14eFxdMiJ+Ve24niI1zsk+uge01ABz8ZZo+IItfgvUwyh39U/ajFWxZWU5SbDAO2IGUKwbY8AYHa749sbqaWa+d1bIWpr7ZOzPbz/64+Mo73SScSzHW1sf2F+mkg6karSUjmm84cAwbYjqm0wczSgFk2NTNHmpuvF0dTdwcRo87hCbVmUfff6pKlIBY73o1IOvv04TmAgt7syhK9c6/hX9NWI9igW+Ged4VJAmFelZwnfeORRop0ziepLCe15UsYdUcCNyzAkHERspyFOhL2Amx1G6inWOFwV+Umta0LKs6hjSfNIkEeRPnKG4nRcxbToCA== 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=pjAxOTjigfWeoSH3a0+oAXchHxhlRang74HXV1M5wm0=; b=PrayRMiUj76W8pSBNdcKtuA16SF5MW5thCUOOmLQbu9+QVxvN1Gsk78pRZJdxsZigbD9YnR6W7mjenXsG+cthiM33qCRTxeebGUt42QuNF0xZ+XMdiOoLE+hQGzSXk+5VIBRzdfPqxaFFFK+P7vVdXn615XNm6fJ7jNSKTOWIhE= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:11 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:11 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 18/25] drivers/vdpa: introduce the NFP vDPA library Date: Tue, 24 Oct 2023 10:28:42 +0800 Message-Id: <20231024022849.3092506-19-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: d97618c5-27d7-40bb-55ef-08dbd4392549 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /Ennl7LiEAHMDgoLaD4Po3VPQPinh58ihoqasgCrFuM4TKFSJ3zj/FyLCBMlK36eLZFd9ajQ70Y9I6yIxpZT0S0aoCdimn5kmAE0eOS8V/aTA+GEhuVyCX8HfrS0+sx+KarOGaBiJR70Gh1vjyj39r3OX5ajIPrCqz1TQrrAvNw14Mj8quhjcTzsPaT6XwHZICUXo9x/iHI+DX9uHx3MMPOn4k2mGHsmJapFuE/uac9pMFvnjLMZ7gyxWmwt71qpMpSamVrSMcZppkneyn9pzSKpRQMQgufairYTmMiG4TBO9zrKvEEq/x6s3l+VzPVOPAhcvBq7IfakAJ9DiNr/jllYw3aAbHB96MKpGpVmyjtzS1HRPQNhnC4977Bstq/LbnzJjJa6XuDCQa0gXsgfpVxgT+85Vr+t2gwicVH+tIRibcci0xqtKsHeFD+i8T3WRZOpY/Y/6Ss9RpG1VBhJv0sq+yYQs6HeiLKdrVCDN0uainbWgSiraNBjs4zJeROwXyCEb7asbeYZHJYHWvxSqKMI4Dc8Zylp+3NTjTpqjYo1rdwmTgvBZlXAXONvO3UmK1OD+lNSInuS3na0rrDQtMjI4pTyaoMF10yRx+acH2aBFtmc0pnkliWxxpX/OYrbxUlIMzMScOh9HWNQYbIm//khjzT4KfSmuDsWRkFJnBI= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mzAfcLYlBjZSeG6CnVRABJ054sueloGZQIKfulNey08GosyzOkWlLI1ctOa+M4Cf2AtlEdk7fYoplgxrrZlXjJUIyFT8cXy+Wqida6EF1tElmArnrA8QRBeZeeQhs/lmxvi/CSGIImByn86nAgkGFZXL+gusSvly6JLPftXWngjcRa8Wv4Nab+ps+v72eBLvsNKcB+8JkJHsH3VNWd1EpXLGmB1PEBT5hPyOFMYaTTxw3jjDkDZX3jA7f4bwtqcxXg8h1M5y6qYRTrdob7kq0WUT82ZgaRBhm/6AGPQd5u+rebgeLPHslONBUBaDHOJAGNV3eryCIL6/3CuMzM9myuDnb3nQermEFRcMkaNXpT5bAxPXmB5tr4E6HnJJHISQrG8C2qQ45vhCOBP1TD4V2/DHI0yj+xh0F3RxkZNvbSoY8yVzZ9hqofMZ37oqekuXX8+U2jNRmQC1FY6f57fVFxrpY1oiNW0Jw4NqL0vk8ORrTThqWbEDHg7QM6FIF3dm75+zmvG3owdOj8VrN9H9jTIq6amblUWiBXZDlG45xeRLLCLaCwDVsHNu9CgEInphu8E0GIM10rV/7MGWj89uJv4x4WANG90cLYY4DAnlg438bdKySBg4KLNrX2/sH2d2PkjmMuIWjjEDpXFNX4tEOQOIzkQ7oNeABTTe3svfQ3aID1qavZhHd8grGNseegwhbRzqvAA8KGCe+YqaRdKYuFzw8NBhlMZ5H3WFkR2okyIzhbbpnXPp7x6mLJXwgeUfIatp5cnd8hn9y7DDSO/M/ypINne3/K2nffLYBW7ZNR5ErK/AU3tT5eCVeZJhZbkOI2lkjTShfceWT6+gH2acEE43KJgT5Bc3v2968BDXyU/S5s/ynxhcdNZqcVI0L0EMTF3v5jm2vnJ43D+2AN1Xs/Xh6c2KQU9/9XUyjKjOq0OMDQheTqB5bkp7abMl2bYx5XafACLcxf7brNZZK6amUrizcYUDhCdjwYaU2L+kzUT++PR89GY28UVfoem/w2bu0SRqxTNl0xLpP8RdQSyzneFsitgCQfWHOMEHE9M/YfkctRCiUB28pdkDLPdq6sk/8ulY8YUFKMgtqykXTFkaT/H27tkKeWp1XKybw6x0tkkgQAo0GdTaQjQmqU23KeII063GLK9ebopB4j9Z60tzoqEuWxhLMLQJM9yhHN355CiXfATdMESTMYxFlSgE2mLXuIYocFr6dJ/9HhU3iUgSGz0TWlneTbT30dLAUKpW5G+8/dkRHYuqseXG+PtjJfuvfwDJ7ZSH2zpT9yT9aYGziObPlfmND5z8kqg0GohsEyUa2DbHuWcgya1bhrGiwfuShVY1Tf8vR0gMnc/eSoZBKxVj49QoGXO64Z/fM5Z4rvBcWmlbSc0JpDwSBs924FSLOde9rDdHSUe3bLRTzeyL4v1QB6Sde38R1POAS1KpUo8OizpIE39BoO4tFsKFfPwcKgVM6xsius3rJkUlV+ARIHqqReh+L++smc9yn2QskCi6YklYEZRM9tHZIl5NVGP0nZqECwoXrLiuu8vSGUEiqeCScStwhm4z6nf5ZjvwxEVs1Dao3c8llYF+LZGZHgMPHNuvB/Mj1titQjyhV9BzkA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: d97618c5-27d7-40bb-55ef-08dbd4392549 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:10.9487 (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: hgtu5kSOSa1LqPSSKcYmaJWlYMD+LFuiKJfyJc1QC5q8P4UlhLYDhLFZlNMDiYVaP15IHzsMvgd7R4DJQPd8TFf8d+batQAAVwKp9BwKJdg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 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 Introduce the very basic NFP vDPA library. Signed-off-by: Shujing Dong Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/meson.build | 1 + drivers/vdpa/nfp/meson.build | 16 ++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_log.c | 9 +++++++++ drivers/vdpa/nfp/nfp_vdpa_log.h | 21 +++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 drivers/vdpa/nfp/meson.build create mode 100644 drivers/vdpa/nfp/nfp_vdpa_log.c create mode 100644 drivers/vdpa/nfp/nfp_vdpa_log.h diff --git a/drivers/vdpa/meson.build b/drivers/vdpa/meson.build index 77412c7d09..896e8e0304 100644 --- a/drivers/vdpa/meson.build +++ b/drivers/vdpa/meson.build @@ -8,6 +8,7 @@ endif drivers = [ 'ifc', 'mlx5', + 'nfp', 'sfc', ] std_deps = ['bus_pci', 'kvargs'] diff --git a/drivers/vdpa/nfp/meson.build b/drivers/vdpa/nfp/meson.build new file mode 100644 index 0000000000..b17866e157 --- /dev/null +++ b/drivers/vdpa/nfp/meson.build @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Corigine, Inc. + +if not is_linux or not dpdk_conf.get('RTE_ARCH_64') + build = false + reason = 'only supported on 64-bit Linux' +endif + +if not dpdk_conf.has('RTE_LIB_VHOST') + build = false + reason = 'missing dependency, DPDK vhost library' +endif + +sources = files( + 'nfp_vdpa_log.c', +) diff --git a/drivers/vdpa/nfp/nfp_vdpa_log.c b/drivers/vdpa/nfp/nfp_vdpa_log.c new file mode 100644 index 0000000000..8c957d59ea --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa_log.c @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_vdpa_log.h" + +RTE_LOG_REGISTER_SUFFIX(nfp_core_logtype, driver, NOTICE); +RTE_LOG_REGISTER_SUFFIX(nfp_vdpa_logtype, driver, NOTICE); diff --git a/drivers/vdpa/nfp/nfp_vdpa_log.h b/drivers/vdpa/nfp/nfp_vdpa_log.h new file mode 100644 index 0000000000..c3fb274cb5 --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa_log.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_VDPA_LOG_H__ +#define __NFP_VDPA_LOG_H__ + +#include + +extern int nfp_vdpa_logtype; +#define DRV_VDPA_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, nfp_vdpa_logtype, \ + "NFP_VDPA: %s(): " fmt "\n", __func__, ## args) + +extern int nfp_core_logtype; +#define DRV_CORE_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, nfp_core_logtype, \ + "NFP_CORE: %s(): " fmt "\n", __func__, ## args) + +#endif /* __NFP_VDPA_LOG_H__ */ From patchwork Tue Oct 24 02:28:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133224 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 4765D431EB; Tue, 24 Oct 2023 04:32:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 35BFA42D83; Tue, 24 Oct 2023 04:30:19 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2111.outbound.protection.outlook.com [40.107.223.111]) by mails.dpdk.org (Postfix) with ESMTP id 728B642DEA for ; Tue, 24 Oct 2023 04:30:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F4k/9x1Ir93zlvneOp7+olPN4Vjv5D9DKDNxEW0vLRJkGNd4klDdymcX69hVIQiZO86AHeYS89iqxgLPqdJG3+burgm/QwrEH6MSqfC/d0GZ1K0ACbuYt6dVbPXkoGHUqVQWavb7cbK+hjpoTknGkKWrQ15k1raowGdnHQUG2qD5DGfVXHUrnO0Fooj/4YAGwxWT2cp2p3fLGUHscuVF9yQnnQtH/3rp0Unvyj/HKysH2MXzuarz3exzY/z3PL+xjCh+QDwQ2+rUWe36bcsIbhaKMdU1H3dgbXJ4cl2ecLeZ2v7ZR+wAI3PgDpzrA+MKT8ezxnJd4fZQnHS57SnmGw== 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=7o2cFy4rIypdWxZm+ueiKs8obohKXirAMUwS2FczWOg=; b=dyfgJAq8t9pLtZFFlrqcYxtubNx4St/1UsiFqVGe2V4EgAUF61kWH5+OfUHTnDaAw2+hRolu0n5Y4t19je5YY+AKt/JFiAZVedaMgeLm1mM02ETwGXxoegFsGzQkyRc8m1oimeh7RZt0LpFLQX+8NmhM0LsCD/6ppC/gubAdB24puFoVTzMa3Qki80gPtwyUsm5tGakcP4nsG1dWN9DBwN50QRew8vsghC6sp9btupI28/KHjUGm+bhtLXaIRp9ifU7cYcaOZiP6yY1dBDXYM7fGDGRYpqq2ScDW6FrFEbyqcxMjbUAY5cTu349PpxPe7G/sxRfLMa61BBv4TEtb3A== 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=7o2cFy4rIypdWxZm+ueiKs8obohKXirAMUwS2FczWOg=; b=pITKA1bgMEgrCb3NAytwhP7Ly/XSx+lTnRjSQy1hA5yfanSfy3e3G4GizhGPmQqyfirS/QfOnFLTNPOTmOYa/fw8XjTn5ZJ4fEtvIwGU2wF/nYOXZv0nok5suzc+rKp0SW+UV0ySg/glMycsX66zF+BI2J/Ee3vY733tldQI75w= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:13 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:13 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 19/25] drivers: add the basic framework of vDPA PMD Date: Tue, 24 Oct 2023 10:28:43 +0800 Message-Id: <20231024022849.3092506-20-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: 9f467df0-6bda-4389-e5a0-08dbd439267c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LlP0q1XaA/5nkNnavmpxR3tYGiq2tPTOT25DA5cS6HbjCTlnKTQMuYEa0e3aUIJUoS4LR+X+VRiX3SzZQuPF6laG7IzE72GhaSNMR4579mOh1ntIhtf8TgwJb+Nbi8aJb8WfsUJAHBD9sx/LuQa/6psoNQd1C0tJvKSctTS0Fq7uEGWhoytysW+4xH47yCPzAKjtTmTxvwp9QEtTu1OCFe1mwhiF8nyvy+qTrenhqAHWYjUpYIAFeyIj1+tNxhgCZzl4N/qm1axKqjzIc6xFihwoCQrBKE9fMAsKKaXHv6MlfWHE1sGMp2xxktyc6XQGNuTW1GSlXYh7fcMPLP/IBP6cuYOal5Lx+8wXA1bVw2NBqjl4nHruMhHFY9GOb505a8nwuVDQ23ECDM8dmymAmESJJmbHPRDfjGV6gLU9NurC3k4+y7fxDkSHqeqNUKFWi21c2n4E2a5i3Jk0AGIHm5dpBNbLXLFyg10vQuzxplAkqUyWQ1jcQR2HjgMNnGAJ/hORMy2hi7d0edqfuE0AjuoFMju9LsOq84ViwLfPThEVJXpEbLD6SDTFuFVVvhaSscC9dLE8MCYgAoCjVPVwYsJ42WRIQ5CJO7tLx+LY0pRC4kySlrUxJc9Frx3xSNbSH598hK1z+v6lTPVz8CfNdwZ1BMK7kKu/fPWhFOfltFw= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: anVCx9pFlDZJ2nOANO/Ux7aDz+XjHRhEl8zzOEN1tC8w8GErS1kot+io0ti6P6KXmTEoOXBLFvFICv7h3AQDDqlEtuzdyEH2FLohhBXiZImgwMAXCV540NjTrsid3tAwgZcKhDO/2ngMkfoeUwLXkvpmNDx3KY/57wI3gR0UunFTZMuIue5RChrqdD1XvD0/dIKp4yr62hmuQ4cuzP9tT2g5aFsd9kL/FKMZcSaxWKCHLzuk8V5BWwAo09cUi07y/I/8dd5AtQB6VZN8ZkAABfW/luZnds1osVN4hx7BNee9z/3QrO2Ik6uzD4t5mhSZtu36TY1ivlqZQWO3DXccYkS3hW+8qzVx335aVedOvn29BSD9dUM51luO2wuDT5SnigWWifjzgYJ6ev9BmI+IM5U9HmIFnaUzMxAk4zzqHIKSd5iF1qrZ68u6EG1VdPMxajXtNMPU57zUmY9du8jpSXMyrsDNV5sHfBsYzsUsEY+jbaaCoKBjw/IpgIHbBa7jpk6gZnt0jah8dROA1sqMtwh4x2xxdmhgbfr1BdT60Im5URkVhfW5FMFqBTg35yEsNaUTNbZ8fqfrFc/Sb3OHob8rvCmyrUBPplXVCW3LyjC/zfczikWtpHg8YkSNQe80LFOVU1R6ebBOtM4C1hlVaq2ls5VR7D9mftQzZVzAsn6MN06+UJITIUKSn43oKCqxv6IHfrL09cHtriULrhykmFy8mrRfX94h75GGW3LofT+28an2MJjTVOSmPJn9+vmLKIgpFHn92u90QqUzklS1vRQFfEkjR1N88NAz68sP8PjtbhNYbjqcCYgkjh2g0fGFslSdxVGtmGyYqA5yuJIQaRhyInMcGY0xjCfEw1NWyON27CNmHe+STP87X+0/+bybIO5EnAOxtFQp/YiEooBa6rf72S1w2K/Bgs+JZuvwHk66Lknm/Uu90V5iKKnkMqwvrv3SKmszpF/cmwRDbAZGy+Aj6ZEvXxR0q91nYZWgJclRNmSM83uG2/9RV710Nj4jDsHgYh7PW9QAAZfplrzxC86rZhJ0djdDHPIZzySHaWRKsFvxdhjTbDk8xSHgcrnWpF5j7qzMD08NA/breNE4w188Y1SFHZ8PzKSh29X6hxycwEEBDiyRr9VVOkNwp6NromXCIP4ba5Q8x0SBCMotgslXeX19cOcuy23E3+AdpBFruYrbVV7ukd3FDngbcK/B0k5VNMChOJYJRvuofUdr7g8/3lin5N6KqT/JlZutvSOlTTuvzIR9LzcDNL+OWA3yCa9V3XOifO7aP1BQJfBlu6t/DNubgoonQvkjaK0V+oeTk8E5QH1DCx1OqJVdf9Y+SH8q3CbYcLlD/qMkSHFyr6+Y1DvwA8QcIQoExLOMz9wmLFGPJaRzy4Fg0GrUUDECjtxpk3+CUancWS8obIJIHdhqniezfoIH3+XRBOldM2KEXAKhFYQsnUqgH1D0EujFTNf5JEz3vVKmognheFMGxJr3UvT6VdzF+Xmx+Vz/4V9SS3rWibOx6yI1koG6LDAIF3WsmeAvV+f59VRvjU+1ulxVV+PazG4SMfzoc/6HjUzUrZM8SHfEndoivqH87sTM5dUoj6ABudQHiZMLxFwbsA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f467df0-6bda-4389-e5a0-08dbd439267c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:12.9844 (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: NcZuNHsiSdHlqUZa3j60D31NJzxY0euypSm739nBUZ1G9AbV3j1Fnm+bgUiZaAPCL4P8gaPbiMttV8kytiaSl43k9bDPNVZcxj9NbevnA1c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 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 basic framework of vDPA PMD. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_pci.c | 1 + drivers/common/nfp/nfp_common_pci.h | 1 + drivers/vdpa/nfp/meson.build | 7 ++ drivers/vdpa/nfp/nfp_vdpa.c | 153 ++++++++++++++++++++++++++++ 4 files changed, 162 insertions(+) create mode 100644 drivers/vdpa/nfp/nfp_vdpa.c diff --git a/drivers/common/nfp/nfp_common_pci.c b/drivers/common/nfp/nfp_common_pci.c index 1aa8dd4bbd..c73f4888a9 100644 --- a/drivers/common/nfp/nfp_common_pci.c +++ b/drivers/common/nfp/nfp_common_pci.c @@ -32,6 +32,7 @@ static const struct { enum nfp_class drv_class; } nfp_classes[] = { { .name = "eth", .drv_class = NFP_CLASS_ETH }, + { .name = "vdpa", .drv_class = NFP_CLASS_VDPA }, }; static enum nfp_class diff --git a/drivers/common/nfp/nfp_common_pci.h b/drivers/common/nfp/nfp_common_pci.h index 21465fca68..80c027c3a5 100644 --- a/drivers/common/nfp/nfp_common_pci.h +++ b/drivers/common/nfp/nfp_common_pci.h @@ -16,6 +16,7 @@ typedef int (nfp_class_driver_remove_t)(struct rte_pci_device *dev); enum nfp_class { NFP_CLASS_ETH, + NFP_CLASS_VDPA, NFP_CLASS_INVALID, }; diff --git a/drivers/vdpa/nfp/meson.build b/drivers/vdpa/nfp/meson.build index b17866e157..e1cc244578 100644 --- a/drivers/vdpa/nfp/meson.build +++ b/drivers/vdpa/nfp/meson.build @@ -12,5 +12,12 @@ if not dpdk_conf.has('RTE_LIB_VHOST') endif sources = files( + 'nfp_vdpa.c', 'nfp_vdpa_log.c', ) + +deps += ['common_nfp'] + +if not dpdk_conf.has('RTE_COMMON_NFP') + error('Missing internal dependency "common/nfp"') +endif diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c new file mode 100644 index 0000000000..ef4ae4946a --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -0,0 +1,153 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include + +#include +#include +#include + +#include "nfp_vdpa_log.h" + +#define NFP_VDPA_DRIVER_NAME nfp_vdpa + +struct nfp_vdpa_dev { + struct rte_pci_device *pci_dev; + struct rte_vdpa_device *vdev; +}; + +struct nfp_vdpa_dev_node { + TAILQ_ENTRY(nfp_vdpa_dev_node) next; + struct nfp_vdpa_dev *device; +}; + +TAILQ_HEAD(vdpa_dev_list_head, nfp_vdpa_dev_node); + +static struct vdpa_dev_list_head vdpa_dev_list = + TAILQ_HEAD_INITIALIZER(vdpa_dev_list); + +static pthread_mutex_t vdpa_list_lock = PTHREAD_MUTEX_INITIALIZER; + +static struct nfp_vdpa_dev_node * +nfp_vdpa_find_node_by_pdev(struct rte_pci_device *pdev) +{ + bool found = false; + struct nfp_vdpa_dev_node *node; + + pthread_mutex_lock(&vdpa_list_lock); + + TAILQ_FOREACH(node, &vdpa_dev_list, next) { + if (pdev == node->device->pci_dev) { + found = true; + break; + } + } + + pthread_mutex_unlock(&vdpa_list_lock); + + if (found) + return node; + + return NULL; +} + +struct rte_vdpa_dev_ops nfp_vdpa_ops = { +}; + +static int +nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) +{ + struct nfp_vdpa_dev *device; + struct nfp_vdpa_dev_node *node; + + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + node = calloc(1, sizeof(*node)); + if (node == NULL) + return -ENOMEM; + + device = calloc(1, sizeof(*device)); + if (device == NULL) + goto free_node; + + device->pci_dev = pci_dev; + + device->vdev = rte_vdpa_register_device(&pci_dev->device, &nfp_vdpa_ops); + if (device->vdev == NULL) { + DRV_VDPA_LOG(ERR, "Failed to register device %s", pci_dev->name); + goto free_device; + } + + node->device = device; + pthread_mutex_lock(&vdpa_list_lock); + TAILQ_INSERT_TAIL(&vdpa_dev_list, node, next); + pthread_mutex_unlock(&vdpa_list_lock); + + return 0; + +free_device: + free(device); +free_node: + free(node); + + return -1; +} + +static int +nfp_vdpa_pci_remove(struct rte_pci_device *pci_dev) +{ + struct nfp_vdpa_dev *device; + struct nfp_vdpa_dev_node *node; + + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + node = nfp_vdpa_find_node_by_pdev(pci_dev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid device: %s", pci_dev->name); + return -ENODEV; + } + + device = node->device; + + pthread_mutex_lock(&vdpa_list_lock); + TAILQ_REMOVE(&vdpa_dev_list, node, next); + pthread_mutex_unlock(&vdpa_list_lock); + + rte_vdpa_unregister_device(device->vdev); + + free(device); + free(node); + + return 0; +} + +static const struct rte_pci_id pci_id_nfp_vdpa_map[] = { + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_NETRONOME, + PCI_DEVICE_ID_NFP6000_VF_NIC) + }, + { + .vendor_id = 0, + }, +}; + +static struct nfp_class_driver nfp_vdpa = { + .drv_class = NFP_CLASS_VDPA, + .name = RTE_STR(NFP_VDPA_DRIVER_NAME), + .id_table = pci_id_nfp_vdpa_map, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .probe = nfp_vdpa_pci_probe, + .remove = nfp_vdpa_pci_remove, +}; + +RTE_INIT(nfp_vdpa_init) +{ + nfp_class_driver_register(&nfp_vdpa); +} + +RTE_PMD_REGISTER_PCI_TABLE(NFP_VDPA_DRIVER_NAME, pci_id_nfp_vdpa_map); +RTE_PMD_REGISTER_KMOD_DEP(NFP_VDPA_DRIVER_NAME, "* vfio-pci"); From patchwork Tue Oct 24 02:28:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133225 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 9DDAF431EB; Tue, 24 Oct 2023 04:32:35 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6CD6242E02; Tue, 24 Oct 2023 04:30:20 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2100.outbound.protection.outlook.com [40.107.236.100]) by mails.dpdk.org (Postfix) with ESMTP id 70C9C42D76 for ; Tue, 24 Oct 2023 04:30:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fyTT3cbC+nP+cpnR0Hyzf5m7Cne3vGbtA5046558Se8LwP1+snxZZwnAKiQ3BTfd/FyVpW2lJctSZ/2kisHydF0FI9eab44kwZttDY5hggFpHQWdfjSXu7wezvQSe5SRL4MMhwFq18ky6YzrFmFh1ZwBsmukVLmwERPwdOzmw5kBNly8sevjUObleq/8ZMRMh5n+XCsRkz06uAphEF1W7nLZwQkeK7gS5NVGm2wvyntZOi2HK556JW199p0wWSLpODAWNM9dw7Cd/qQ8oDdYQCDtYSZXfSKLf0JnRwtGH7ijyeRoTZVpxmZ8wdiCc80A7ggfJAGgnmGY3WBn320zEw== 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=jk/CbMQztnVDf2I4hFCWS4AwJwyfhhq7mTjnyIunuEA=; b=CrQxgSJf1+g5PyrFwEHqnBZzb/TtizLecfLmtPtvqd9K0qufWq4EoacR65+EAdiqnzU+QchA6PLVrpvLVEXvhFnZUAVZpI9NQ4ALNtRQO8iEO8WLIlEox5BFjFI5a4XB0lVU1qIyGGAOAmnbl5n5IaOI5aI5fcjdQrKSHdFo7U7S9CjdE9EfuJ8nLWKmTfEUfCDsiyUuYYAtEBUfkzMPC1ONU07vhXrBWRG/1PJHpXwp7kddOEXemyQLJBYA6nYFW81nuGRlKbXaAUuk44gML6U00K9pshdhpZG7hDfTEE6iSdEBHA97vMAt51H8HSmJHzgSSZnR36AHkj/yBvEcYA== 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=jk/CbMQztnVDf2I4hFCWS4AwJwyfhhq7mTjnyIunuEA=; b=ix152++hrLBSiaUkY5Y6qrd/pETI/tdegzytawA0b2ZJupTDEbK1c5E5WIGIok71cW78S0H5dmCWVRq9zDFLy8KWCAMNqWal2IsZu9IK3ePo/THpM/mto+IiAFFAicdW2E6idxxnu7mnfay9sy4AWaQwkZzmEhm4xEHpZrNLocY= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:15 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:15 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 20/25] vdpa/nfp: add the logic of remap PCI memory Date: Tue, 24 Oct 2023 10:28:44 +0800 Message-Id: <20231024022849.3092506-21-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: 46b6e814-2b1f-40e7-ff13-08dbd43927b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KvAwQ689BBvW19hfBkiNS2rD/572yYMYI1HpzfzuH2P63Hhz5g3sZfSJ0d897OuUEPoumIWSdNMo1Ol1D3JL2tFgxKS4FiFCdhzNgK3/RcsZdlgvtL4jLSvxA3gSwyvX+UrqE//rdEnl8A1SAWOyyd8+NOaGJuXy9xwTN50ERE8WlwN9Y9ea91FtCnLQTeVd1G58AxrbfJllwuS+dvzL2nePNckZkiltdHBunpqOMb+5ghQ4RxI7U5MG2s31DG8x6MIqyxHQuCmB7umVqMSJ6jlW5BlWuf+V4qpC/TJMl9ZsHPlYgdVRFTaTjp/Z4AGsxh4ErwwEcl0sGD8eFKyaBoUirKMhNTsL8ZRq+UH/2at6IMc9g1jGsnXeoXUyE8KEYT7ZHIANHnOvEVVs3/08hzUwkgBj3T+K//QJ+fNWrn2ZT2asNg/GEp0eMSvT7MS7cCxCciAPyPTHIz7C4XITyEBq19cxt0fWx3KMF5kFgvbFXaJoQo1Ah3cWHX/lXBji4K6fpVfIHyQliG0KTKT2Ao+llUcGX0YslhUGa6HlB+G89asKv3NZ+3QHGKhQhpNncfU1mGGUYbUuNWIbnfNMrR3jwRCxwxupa19AgcdEAz99WstQrBF5n57XVsFkbofeI56zTeNvh9+qAzi7RO2UAnySxdPFv/IRxVyebh9FhLY= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: G+WX9BwsgVkmmvFwSp+phVz3q6GUG+fzh+0qCIMn5eCpGIVlNxYfAZUQc4rNcWyEiKCdSlleU6U0xyOExu8eElxTvgky18JJ6wg8xXkhFrOf/1b3ji+C+eD42s867QgteTw46ZRfL88NJ1sibLIBntB068xzHFv1pTBnl+kFqdk1ZYMzfvNGb2YiMxlE7CO077K4N05AwTzSg3rREsD61ObEFTldeTl20nLGrMwp6CyG0lxnnAykJph4f2ALY0kcDM2OXbdbBFaCFTi3rzs5hmdsn9Dz035ufY1o4+lOp5qN6uQf5JFQDojsvH1EIFyxkBYJ08mzEHKOAV699fMOfTic1XASThjWf6OTuV49DALvyishjz9FPJU+dek3IVzUQuv/4mTtG54tUaxuvQS4cEVzC/a+AJxzBTi2gLu1mnjJM2ENCtS7UAlZMpwiorRuAa3NkiD8L07bnJ2qSrEHLuPuNRUnspiYAB7f56JxhxBsggh0kR3EnnpbirXBvY9h1k7BIa6uRGmWr9HxsJDTfQ8STATtdbeRwG2Q5SkoTfnSIpNEwmigHTXH0Jo08CFE+Naxo0u/gSaKw44ERpON28kODVFOrdFRtRjaR05ItmJW7CFCWpS1i1Az+TsxgwfYOKKOXNDGBvho/AlNzNQ51wJBkmTMIKENW7IbzGu8hTkSqpFfpdHshOK8wvdFqYFiugpTb2Q8+D79ASHSBTWqjnIGwKTzu1Rq8RfunkP76d3W+ENpdv2FkfJrIKSVPCBWeXvkh9Nzn2EnTCzcpZCg40J2vGSqlZDDdjV9LsrEi8hnIBlTv7vGjh6JtPbBC/pwCvRPGvsaHC4oe3heHnjdf6aTeaeAX8O8zYEVaiQYHdk8U33XfdOIJn5L58uzTglkvPfuGbV0oPGJowaU0OEhvIE8N8IfTaCZwIhM4im5ScItZVnuiV1vcPROy2Z8FZszjtPHMLgpTGHDGfQiyibgM0945CX9Xljes9CVQ9dBDgcvmvNAIz1Zq+c2DnxtbCfkqEN30CN/xoHk7JXL8GuXw8TII23SStempT0GrScMl1v52rZ7m8S1gSr0tcd5zKFpVaeHkL0xBB1+M2OPcu+cRj4YRspa09tSZPkIlCDc61vtgkcfO1IrOWL6nD7qiZ+1+W3keEStAskB4axMZyfHbUXumi7lBwoPmXDuwKROsT5U0EvdOesRVXO6bKDKKsN5yjvLpHlQkcOUXoGX4AQOuDAjUeDYqOSH/MgqJRvCQIxDZ1NrrT3vulVczH+SOeUenUG8FAvkybbgo/74W9ZYDBLVMlH3B81Z4yJrCrwHUq5CDVDDfXBeI6+hKGI720nJdbuiZak25MDNNu2/YWthJ7pri74QNzh4rT3eRHLaP4dupW1xcgBVt6cNbxuL/6SKUAfZn1JzAtO8F9Sh4P74MpfID45PYHay5QtRzVIGlxWUC33FaZfpkWiqkopQEI7ZGqNeG1FV0zBkLcVegerrMg6zGrgJAP0e9oR2hyr9+YQU6fYH1FDQ8ahwCTK0A2KnQvxWGwN4JutLQ2YQOFenQgMqNGKlWGRz0z2ITNbLy8fnM9+565zEl+X7c6/xfRLpSF2jO7dUv0IQzUteXslaaw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46b6e814-2b1f-40e7-ff13-08dbd43927b9 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:15.0331 (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: wfRf/Daz0FQ0K9kmXnhWzCXv7t4iQkRYdmVnJPJOp5nbf2Zd51bDgA9U4znKtTcptwAaj/utfdouKeGgLYFog3rmgC/v9yAMVU4SGYXF5Bo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 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 logic of remap PCI memory. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/nfp/nfp_vdpa.c | 65 ++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index ef4ae4946a..824b0d681a 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -7,6 +7,7 @@ #include #include +#include #include #include "nfp_vdpa_log.h" @@ -16,6 +17,11 @@ struct nfp_vdpa_dev { struct rte_pci_device *pci_dev; struct rte_vdpa_device *vdev; + + int vfio_container_fd; + int vfio_group_fd; + int vfio_dev_fd; + int iommu_group; }; struct nfp_vdpa_dev_node { @@ -53,12 +59,62 @@ nfp_vdpa_find_node_by_pdev(struct rte_pci_device *pdev) return NULL; } +static int +nfp_vdpa_vfio_setup(struct nfp_vdpa_dev *device) +{ + int ret; + char dev_name[RTE_DEV_NAME_MAX_LEN] = {0}; + struct rte_pci_device *pci_dev = device->pci_dev; + + rte_pci_unmap_device(pci_dev); + + rte_pci_device_name(&pci_dev->addr, dev_name, RTE_DEV_NAME_MAX_LEN); + rte_vfio_get_group_num(rte_pci_get_sysfs_path(), dev_name, + &device->iommu_group); + + device->vfio_container_fd = rte_vfio_container_create(); + if (device->vfio_container_fd < 0) + return -1; + + device->vfio_group_fd = rte_vfio_container_group_bind( + device->vfio_container_fd, device->iommu_group); + if (device->vfio_group_fd < 0) + goto container_destroy; + + DRV_VDPA_LOG(DEBUG, "container_fd=%d, group_fd=%d,\n", + device->vfio_container_fd, device->vfio_group_fd); + + ret = rte_pci_map_device(pci_dev); + if (ret != 0) + goto group_unbind; + + device->vfio_dev_fd = rte_intr_dev_fd_get(pci_dev->intr_handle); + + return 0; + +group_unbind: + rte_vfio_container_group_unbind(device->vfio_container_fd, device->iommu_group); +container_destroy: + rte_vfio_container_destroy(device->vfio_container_fd); + + return -1; +} + +static void +nfp_vdpa_vfio_teardown(struct nfp_vdpa_dev *device) +{ + rte_pci_unmap_device(device->pci_dev); + rte_vfio_container_group_unbind(device->vfio_container_fd, device->iommu_group); + rte_vfio_container_destroy(device->vfio_container_fd); +} + struct rte_vdpa_dev_ops nfp_vdpa_ops = { }; static int nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) { + int ret; struct nfp_vdpa_dev *device; struct nfp_vdpa_dev_node *node; @@ -75,10 +131,14 @@ nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) device->pci_dev = pci_dev; + ret = nfp_vdpa_vfio_setup(device); + if (ret != 0) + goto free_device; + device->vdev = rte_vdpa_register_device(&pci_dev->device, &nfp_vdpa_ops); if (device->vdev == NULL) { DRV_VDPA_LOG(ERR, "Failed to register device %s", pci_dev->name); - goto free_device; + goto vfio_teardown; } node->device = device; @@ -88,6 +148,8 @@ nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) return 0; +vfio_teardown: + nfp_vdpa_vfio_teardown(device); free_device: free(device); free_node: @@ -118,6 +180,7 @@ nfp_vdpa_pci_remove(struct rte_pci_device *pci_dev) pthread_mutex_unlock(&vdpa_list_lock); rte_vdpa_unregister_device(device->vdev); + nfp_vdpa_vfio_teardown(device); free(device); free(node); From patchwork Tue Oct 24 02:28:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133226 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 25576431EB; Tue, 24 Oct 2023 04:32:43 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BB89742DD7; Tue, 24 Oct 2023 04:30:24 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2102.outbound.protection.outlook.com [40.107.223.102]) by mails.dpdk.org (Postfix) with ESMTP id B9B7442D96 for ; Tue, 24 Oct 2023 04:30:18 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kCNz/woAamIc3qzby2aI/nRDvIJg3f1O8raB5P8NnOXvV+tr7wB5kEVtLWCM3BdUE/59EJjZzOLdRKWhvqFwI1G9ulXGlLIsJndv4rK7ZL0Zn2pc7MbC0NJ4tvWHxRHkWt/jqpVCV5L0ULj2s512quDjB+AEtw0o6d9DVxqjWn7OH/Qu45k+JmK+4zUyjJUKyTUzYc/yoHmqbqGqa/47FajowH7Gv1yNt/umT0ffOlXd0jDqzsoRe0ZpXkDhh32H7ECdGZl+IOLKfhBkCMdvSxnxmTg67PoC/CEvU+8tWAHbmxVnX8K7cZumgBTwlod8FNWy3hlZF5CX7IA3jtw2NQ== 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=ueD306333BC6aL/GrzldxBPxOnMsxU/MlgBa+o8r1+8=; b=U1MK/2djTn9uGtZxmJAkkHjpD6AZqA36YPcjq2wzPtIOGH/DlsSFpyYXsRRT/5Z7n1JcZwXJfi9DcAYv8EJqEQ90PuV32f2RI3tYPv6zGLQVm53NNv4h8HDbdh64Cq4p9+sQrmX0IQmnnYv2/zoo6yxF2Z2+pd9eZqxu5QEg0PAJwr9pxzQ62QOjG7PTJYU8OhuWWqXwUxaXAxFk7SkeCPP+7tznxx2CMVF9LCd9TWVUyzZPF5swgIwn+FrFgm72B39nxDdBkok87XYj6M3cR0wnuOgMM6CL501svN4DWgiZc9DhI573rgvJe2WIycCASTawwXLkmqAAfnwSmOPkFg== 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=ueD306333BC6aL/GrzldxBPxOnMsxU/MlgBa+o8r1+8=; b=BVpRKKPNEdRIzV2hUTXmcFffG5mAWrgNc1vnKLEJAQyO1De0zSyUiBhzXuCHK0mYpyt/qnr8NK07c4ZvBsQUfE29uzWB/tmfQhUTQmP9MqH14/ke4cMx+pfchYgtRik5DoEqGVKcVTcfMswibMO5H8fBBlr31JL46mFjkVlFCx4= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:17 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:17 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 21/25] vdpa/nfp: add the hardware init logic Date: Tue, 24 Oct 2023 10:28:45 +0800 Message-Id: <20231024022849.3092506-22-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: c3ac0de1-7dd7-4c43-2bf2-08dbd43928eb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YDlcE0Ac0s/8t/TxNeiq//WiyFO/ThhfRo2Lfx9W6cmaJNzLs5eSuU/Do9+rcX87EZMGgH66iCVxImq4Juqha34lwkQJF6vk2eoVLYZwWIWuzdEv5RicxTbnDaBZSqeHc5W/n4RREBjWJSCD+6lHDSepm91VsMV2ylyx3ZmNrnSWhT4qvymkXB9E19Ffj6TOUD8dOkiyVam2ouB+Dj0g0ROzxBaaSGJDi5v58mAV3rE5KsnXfmbLYso/gANYvDQxgP+YzghDVhq774XEva9EFD53CTeCv4LGgiYCFQYYd1AACBeb/91R+i4Wm63YukLF5Z2fnQFJZKvbgHcTHDb859dqzODIHV3c6hKQqMup7jXdT2ZTEbBz6+MdyURPowoI1FWKp1afciq2jDSaXZIAp0BCI6z/T5Gtg415sB6/Q4ijVKnkshAixi4vwCCZQx0qEeLKVrxlf27VBvX/bmi6RCJF6VWc6Y7nA0z+XXCQMqHHItf2L/QrZwIF1HcphOLJ7xrIryqIaapMV0fnVUaaV85QZLkZO4w3HxYcpdgLUjFsVFHQdGHwWbFD+JYIfyJyWcGJvy53u0OJkIFXF9rmLUI+KBV67Ta7rpEn2Wqye4MRccnPqOMRDPY2qirkycQy/E6EaJGQiJCPN4gCnJVVdb4G8+nc+KgrxZ4RfgweWMg= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UShskndJgAsWe4Xw5vWndfA1f0DFdj6g8aBM+4AZO3lOho+j8YbJDN9ngIjxvxHFOJsNefqBQsnhwx/elsAFYxsBl+ZxNaNrU3P6Gg9kg99uRfuQgLQWQ4GelcyeIxkbmKy74DU+GM9bVZE0jbg/uPBCCu3AhIvuPix9jL5baXKSuaBYsQ2rvCfRum5tmt7O0ZC/Ngysu4N+sJswS7WYdy/XLylPxPeohqpYbjexX3wnHs8eL0mWTogE0dGaQoBKMOt6I5DxAlpLw59WoM9xWW6+V42ydTbidSOwSD3WhiU+cGabanvTo4+kGD6bf6AkNmIxvg5QKOfawjbfNk6+4C4IQNhj6PZvME1Wj8bN4mGhaZ8SJnGQGXR9XWeCnWOY8mor+lu3DuHi5kHbnU3E/+mfNIAH4+tyoZpsm/FtT/ya1F/+0zmBgNcSsm4LURzlPOk7Ie/GHL/XXIfMiISVAz0IB7+kbKjoui69ZA1buY+RKHIVaryxDXpmQCNhA78KTMTO2BS5SGBz88mBGSZlqvsUrfsX3jeq0UPFlK9xk5QO8ZmGg0sFH+wuE2HO3eeinPjYM+WssILG2dN96ttVAPQNVXs8MFjJbTT4W/0oCbEzSuA0sCOvJWpOcYecIbE7jA+mo9aOguS2npY6K58hmrQM3eoLNjHwdCSvxFgx/FjwXCJg/ox56+5/j8P7DFKvX1oN0jx3YnFmncPURTGPm+ci33mN56t44RZahdi2I7E0qIgKUMDwSd804B2KNQkTbH7uj6N2Y1QdvWRQTlEw8Cs5llsBHrnzGkGwphHee0FD0nmjzPphKj7dLxdEtn+hhyZtKsQwAhUbAgL5PIz3OnL66q0N6xBBfGpKUmCN9jQIpYe9uYSFA+BDJXrVXSU2ikvxc7fi0RNzeQ2+JBnOsN7gtR5myLAKbWVjNQ2aTLSXc10bHBsbU8meLcNCIbVFFKLb+sG4oz7oED6Ia4Y1MTb6ysVI6052SgLGQ1VHMMxbaA6Ojgq0AbEAmhqs2ajkAUqCLsAWRcWTOb8iffZa9jgWEBzzsj8JaCNozeWTF5RJavtz2eRgrPpIHVqK0kBKSw0PJbQbDupZ2fDUT4OgaEY7F5RovldLZwZT9joVp26s7jC2D0g/2JgOscCStOUka2XvTmjsQCcizyWjCzfLIsg1xsixgtgiFXr+s+R8pdM2fzr4iADEDhFehc0iyxjI/4nmaIDH8ZYdL+jUtQfI48NKWuO80czeHFATQdxrKvt3E5oV0xcB3o0cwcx/Vw7kslXRjtyPJnA7B5SToVzcTGwj5M8jG2ylwv/5o1XStt6OvGKBNtTT5B6jkw9YVZCXkicpqaxXrgYI8JKGbmpQVMW41PPvH9r82zSbPUBqmHxqI67adOF24sbXj10Y9IhO1ya2y/NAV72UiQYIz+XbVgYTx/qMwDu2AKX4I8EbbgVOPKyXVidZS4vtGncOn06weSnPsjG7r7SJt76KSpNWIa/bAYLscSzd8QDA6tP0uh6nGCzkxrajSS+IxvdMOzj4wdk7kvL1Woq6I9408+B6TAluAjoUTIob361MWpI+obSFBoyJCoc2+7ZCES0Wpaq4Rl/GE8+dMmbnM0yXWJ5HeQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3ac0de1-7dd7-4c43-2bf2-08dbd43928eb X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:17.0832 (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: l5bfy0aJayBWc8YML4pGfvckq4JlcKbQaVCgoO5R1k/+KcnMXSPxQ9oXq8lcYJgbnda2cx7J14B9dYiAD6vf36rGfQZLQ0oZf2FgCv9JmKo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 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 hardware initialize logic. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/nfp/meson.build | 1 + drivers/vdpa/nfp/nfp_vdpa.c | 10 ++++++ drivers/vdpa/nfp/nfp_vdpa_core.c | 54 ++++++++++++++++++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.h | 32 +++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 drivers/vdpa/nfp/nfp_vdpa_core.c create mode 100644 drivers/vdpa/nfp/nfp_vdpa_core.h diff --git a/drivers/vdpa/nfp/meson.build b/drivers/vdpa/nfp/meson.build index e1cc244578..27eb1a6276 100644 --- a/drivers/vdpa/nfp/meson.build +++ b/drivers/vdpa/nfp/meson.build @@ -13,6 +13,7 @@ endif sources = files( 'nfp_vdpa.c', + 'nfp_vdpa_core.c', 'nfp_vdpa_log.c', ) diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index 824b0d681a..00d8f7e007 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -10,6 +10,7 @@ #include #include +#include "nfp_vdpa_core.h" #include "nfp_vdpa_log.h" #define NFP_VDPA_DRIVER_NAME nfp_vdpa @@ -17,11 +18,14 @@ struct nfp_vdpa_dev { struct rte_pci_device *pci_dev; struct rte_vdpa_device *vdev; + struct nfp_vdpa_hw hw; int vfio_container_fd; int vfio_group_fd; int vfio_dev_fd; int iommu_group; + + uint16_t max_queues; }; struct nfp_vdpa_dev_node { @@ -135,6 +139,12 @@ nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) if (ret != 0) goto free_device; + ret = nfp_vdpa_hw_init(&device->hw, pci_dev); + if (ret != 0) + goto vfio_teardown; + + device->max_queues = NFP_VDPA_MAX_QUEUES; + device->vdev = rte_vdpa_register_device(&pci_dev->device, &nfp_vdpa_ops); if (device->vdev == NULL) { DRV_VDPA_LOG(ERR, "Failed to register device %s", pci_dev->name); diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.c b/drivers/vdpa/nfp/nfp_vdpa_core.c new file mode 100644 index 0000000000..a7e15fa88a --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa_core.c @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_vdpa_core.h" + +#include + +#include "nfp_vdpa_log.h" + +/* Available and used descs are in same order */ +#ifndef VIRTIO_F_IN_ORDER +#define VIRTIO_F_IN_ORDER 35 +#endif + +int +nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, + struct rte_pci_device *pci_dev) +{ + uint32_t queue; + struct nfp_hw *hw; + uint8_t *notify_base; + + hw = &vdpa_hw->super; + hw->ctrl_bar = pci_dev->mem_resource[0].addr; + if (hw->ctrl_bar == NULL) { + DRV_CORE_LOG(ERR, "hw->ctrl_bar is NULL. BAR0 not configured."); + return -ENODEV; + } + + notify_base = hw->ctrl_bar + NFP_VDPA_NOTIFY_ADDR_BASE; + for (queue = 0; queue < NFP_VDPA_MAX_QUEUES; queue++) { + uint32_t idx = queue * 2; + + /* RX */ + vdpa_hw->notify_addr[idx] = notify_base; + notify_base += NFP_VDPA_NOTIFY_ADDR_INTERVAL; + /* TX */ + vdpa_hw->notify_addr[idx + 1] = notify_base; + notify_base += NFP_VDPA_NOTIFY_ADDR_INTERVAL; + + vdpa_hw->notify_region = queue; + DRV_CORE_LOG(DEBUG, "notify_addr[%d] at %p, notify_addr[%d] at %p", + idx, vdpa_hw->notify_addr[idx], + idx + 1, vdpa_hw->notify_addr[idx + 1]); + } + + vdpa_hw->features = (1ULL << VIRTIO_F_VERSION_1) | + (1ULL << VIRTIO_F_IN_ORDER) | + (1ULL << VHOST_USER_F_PROTOCOL_FEATURES); + + return 0; +} diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.h b/drivers/vdpa/nfp/nfp_vdpa_core.h new file mode 100644 index 0000000000..c9403e0ea4 --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa_core.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_VDPA_CORE_H__ +#define __NFP_VDPA_CORE_H__ + +#include +#include +#include + +#define NFP_VDPA_MAX_QUEUES 1 + +#define NFP_VDPA_NOTIFY_ADDR_BASE 0x4000 +#define NFP_VDPA_NOTIFY_ADDR_INTERVAL 0x1000 + +struct nfp_vdpa_hw { + struct nfp_hw super; + + uint64_t features; + uint64_t req_features; + + uint8_t *notify_addr[NFP_VDPA_MAX_QUEUES * 2]; + + uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; + uint8_t notify_region; +}; + +int nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, struct rte_pci_device *dev); + +#endif /* __NFP_VDPA_CORE_H__ */ From patchwork Tue Oct 24 02:28:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133227 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 2D19E431EB; Tue, 24 Oct 2023 04:32:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E174E40EF0; Tue, 24 Oct 2023 04:30:25 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2103.outbound.protection.outlook.com [40.107.223.103]) by mails.dpdk.org (Postfix) with ESMTP id C4D1442DB2 for ; Tue, 24 Oct 2023 04:30:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ks1LDSGNlwe3ITUH4Dlnhh7tdBGdLa/lxm0Vfx/4y/2/ljTsRIp/D1w1YivqnRkQ0EjgFpa/qBOU2QzzxhqBnFiasmFv2R5q4Aj3nlANKE4VYBS2sri2QPEulBbqiF+U64wEwzdgNeWO0sZ9LxiiAqTvptC+ceiwkA2mrcLfEa68N7SIjmu2pbJH9p4LPT6GgwavogochOIyNtwdC41o9PRpspt2Cm4hCjTb2PKYu9fjiOiSVmQEJx6B7HzRutoRAwwfns2nryxPUW3nCPjF2gxclg+AjBxIwr/DxuaWGvHtLH03ywtykcvy7wFMBa2ngJv1pxivVJZEkmPAKYUo5w== 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=CRjIkFOAgtqQO6MucvhuRNntT4IojwKrYXbnkxEmJj4=; b=fhDvhT2alOB6ZS/vZ7Pktjz1xeO1WjdFqfeDElu597t525kRqXzg8ZsYm86cZat2hNjZIWLWnD38er87r/9NQno4geOcyhzTEqLUjV62ZHJh6j8qhwpFAkM2k9IE+tsbu1ZbAAT7ydunME4oBndHgyBHE8fGJ8Jy1J8/A1KthSeGpaTtSje8F6Grsyn1BaCVN1NtA9Z2higsk9e/gX9BO5KdLPlIlRIqoqGa4a3yT1Bf8RqPXuz5OKJILOo70/jnPyKx+Rds0sDEza1OAlm7r5uePXr7UUTaXtFxywbPBvsiN+zJKGhHRoE8thc9zr1o3t3gxih0uykSGohtw1NBdw== 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=CRjIkFOAgtqQO6MucvhuRNntT4IojwKrYXbnkxEmJj4=; b=CZKRn8PmV0ParYR7m6myYyBjgSDvnhlaHbloYlMYIeoYcmy0Vy4h4WAwn7WkZa54DT3s4fZZJk3f5+WUYv4+/5M+RntPgrHZwGMFxD1urveRwpm+jZJK4LROWX2eNUWVA5pu6M9Ft9JHEYu35AGEsFIe2W5tx/Aoz8KR0lbZjV8= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:19 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:19 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 22/25] drivers: add the datapath update logic Date: Tue, 24 Oct 2023 10:28:46 +0800 Message-Id: <20231024022849.3092506-23-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: cf58f77a-7520-48c1-e2d2-08dbd4392a25 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: na4yq5+ypUYqDgeHhsme76Tbowb6zraM/AM0NOPjS3gIc2dqG7q41sOTpM7BoaqoQYO3OtQ6jQp3k2lYnp/amySc+jqRhim9ot3uxYyrpMTsDHAGFfKj/vzwg1hm5flS1lXTyEVwsLhtwjx4lOnekd69ReX71xVzjw2AOGHwFpsZswvnTZK5w6/Z7b52XM9P5ItGc/6fC2UU9FUc6J6B6W6yh1gWKSwWcidmBn6/Hd0aN+RvhKtp+4ttbSlFc/VQsx9KrEOeaCkLPB2L/Zxg+J6RL0IBAW//y7jvdZK/tNBxTl6cdntmp1OUAakenqOGwAk/LEDxr7/PMZ1ByrCJ0sFI6jvT1q4X79OJs1ce3owbefft6nL3urgSeeMN5QHirIySrRvWYoS7r8y1hZyPrgfcAsSlQ5qMsvHFMyL1Q3jOd5QDyhW8+cpZREFBQjwpSo14F771DdVVVCqg1bj4PGzgHRxI51esPAu2cP4UIQg5bulLxGGAfStj0szQrHcJBMGeGYs7YWkN3cLsftsdUNBoMRT3EK71YIRiL6G0+4AeK3QGisBRsGWSp8hhDNRtGGtJ8xDPYa2ArL0gWiH8aj+DNbfDYGkSEL1zOoT3hBuHpFJLBJkDqCQoQwXpTynKcJaTJ63CNsr6KOFqPo1kHHnx2IDlGoGYgy5ruPt8zv4= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(30864003)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(15650500001)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: J8feOjlhcxArZTgsE178B6BcQATIbHij3oOuACImgFBJ9n3cYPHGqV/dtlyWPMr6QGCbYuRuV0WhEEp2Hvoshfm+J+xsyFdeVmQOW7MpCFLgcf+/r2im2IER1UUtWx9zHrYjLTO+aFkFpBZX9wfogIJqYRZyu6PaxkonSulLDn/+HXr2LAJLV0PAyu8IDM2uIcKOX1VGY/W0IaLIPQ+hwjXA3eDRAC2i/X4xiEbLY1mj/bpIini+eSDya0WdAbhNv3QwJtTh7AcvmvVEuSCYklUSxXKIQWcUZ+jy9HaWaW0Vwdkm5DC/mzDyTkMOxGQkA296qWkVsRQuG9ljCyVVL8mqvUWNwd0DV/sL8tXrXuwCidExG+koch65kG1mMy0uCC3wMRGqBkoL5BwqLShIcaRzMGP7P72TQQN9pftKMdZQkUvRDVUbUOJS7dA/QSgxyR8igs0ZcPRy/NjAO58zs/RzqxTHeAXtagTwFpBczqlMzED2iHe3phyweWLXzVOD2WO8u1J96vzO6vPSSX7NkzvzyYrx47BsFZVYASMaFt8R4JWP29JIZhanNMfyFeBM9nGm2lGAYDPgxK38p62CJ9TU3SluUqsoFV6PDPupsbWX7KGXY8MsY3S2os72HFpT4YZM85gYhwnvYLMGzI9IHtpR2ZQNCG1EEvtSeO/Tpymyx+nNdjHzL2OP3cJ6BSSTm1g9OQKopX36mNBdC7h0TwC6FAV2y+/5ST3R/EAvP9XGXRQY+YJBdyoaMhmgFpFlA+kg3p+Jxez9wJnOLebtkZjtCuUXqaFzBRWPI1kIs7rYk4FutYypKhgGh2cO7oauO8Sr1FlNWKMSfKL7NhSwmK4txAzXK1KBsQKP24f2iUVXlAI27Le4L+egCjd66sKkGppcf4BuRe4VnxEMOaQTtAXTvX2C6IM6cVE+D7quu/DH+rEOATl09brYtrbaw7RAFG58ScceJ/Czs58erPHE2NP/JYaR8+ObB1gHTky2oPC6ABSVQCpH2wFcs9Ds0WrCSj4V//JwFmS6+PXQsGIO0moWDptrEcRm0ksR7QlGKQ8+xfVaZMw7tSGilouf2nJCK9mI1k+rnSv9Jxk1ET5quQ56wCHAfh/beRKIem69blXOfkgBnquEyMfFcLNpLWUTo9h0pf/Sw2SImiNwfuTT1NbvBuFZeKENk4QABGcmuyjqiOyB+Mtgn9e+qSanmaoObWocZdulbwS2pi74ROPHZT1z9PU1O7pZxfEfxstnHb4quvvGHFlsmgLFquewcgEK7YckdSsrmQUwJq+/OH/u78NXOiugHLr0/PCE4ni/ED9Ilb++mJRpuU/Zq4xdKB32ofnwTEnJg/Kj6aNK7VlaLy1Aok0AyKyvpOGYNNk/3jwuy/84iPQH+tHCmSOhpdvp1ZyyszCucbfus8GsmwNRj32Me3zY/HMTHs9/IzBlqLGk2MfygS5YxKntP7Ksv+GklvpN4Y8h6BcNd7kA01P6eQf0edl5nf++9PDGOqMWRYZLg4ykC8rSgjmi93DGpZM9ofp87qO3smupYkr2jKA0r15qc1aJPjPXQHbBedVYRfqzXcobyJnOAib+YO2jZugHMVbdI0rwaBQz+w88xp9roQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf58f77a-7520-48c1-e2d2-08dbd4392a25 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:19.1116 (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: d1kivj6TVSI1IjPccR3HGoqu0CPNajqhdPUqSslvX2vfKGJazHkVM8IW9TPO6GJwoE0q/DIw0iyJL85Attz+27mH0QAB5RRBBhdHSXrJ9Pc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 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 vDPA datapath update logic. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_ctrl.h | 1 + drivers/vdpa/nfp/nfp_vdpa.c | 315 +++++++++++++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.c | 78 +++++++ drivers/vdpa/nfp/nfp_vdpa_core.h | 15 ++ 4 files changed, 409 insertions(+) diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h index 3c8cd916cf..f92ce50fc0 100644 --- a/drivers/common/nfp/nfp_common_ctrl.h +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -238,6 +238,7 @@ struct nfp_net_fw_ver { #define NFP_NET_CFG_CTRL_IPSEC (0x1 << 1) /**< IPsec offload */ #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_IN_ORDER (0x1 << 11) /**< Virtio in-order flag */ #define NFP_NET_CFG_CAP_WORD1 0x00a4 diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index 00d8f7e007..465ee4841d 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -4,6 +4,7 @@ */ #include +#include #include #include @@ -15,6 +16,9 @@ #define NFP_VDPA_DRIVER_NAME nfp_vdpa +#define MSIX_IRQ_SET_BUF_LEN (sizeof(struct vfio_irq_set) + \ + sizeof(int) * (NFP_VDPA_MAX_QUEUES * 2 + 1)) + struct nfp_vdpa_dev { struct rte_pci_device *pci_dev; struct rte_vdpa_device *vdev; @@ -25,7 +29,15 @@ struct nfp_vdpa_dev { int vfio_dev_fd; int iommu_group; + int vid; uint16_t max_queues; + uint32_t started; + uint32_t dev_attached; + uint32_t running; + rte_spinlock_t lock; + + /** Eventfd for used ring interrupt */ + int intr_fd[NFP_VDPA_MAX_QUEUES * 2]; }; struct nfp_vdpa_dev_node { @@ -112,6 +124,302 @@ nfp_vdpa_vfio_teardown(struct nfp_vdpa_dev *device) rte_vfio_container_destroy(device->vfio_container_fd); } +static int +nfp_vdpa_dma_do_unmap(struct rte_vhost_memory *mem, + uint32_t times, + int vfio_container_fd) +{ + uint32_t i; + int ret = 0; + struct rte_vhost_mem_region *region; + + for (i = 0; i < times; i++) { + region = &mem->regions[i]; + + ret = rte_vfio_container_dma_unmap(vfio_container_fd, + region->host_user_addr, region->guest_phys_addr, + region->size); + if (ret < 0) { + /* Here should not return, even error happened. */ + DRV_VDPA_LOG(ERR, "DMA unmap failed. Times: %u", i); + } + } + + return ret; +} + +static int +nfp_vdpa_dma_do_map(struct rte_vhost_memory *mem, + uint32_t times, + int vfio_container_fd) +{ + int ret; + uint32_t i; + struct rte_vhost_mem_region *region; + + for (i = 0; i < times; i++) { + region = &mem->regions[i]; + + ret = rte_vfio_container_dma_map(vfio_container_fd, + region->host_user_addr, region->guest_phys_addr, + region->size); + if (ret < 0) { + DRV_VDPA_LOG(ERR, "DMA map failed."); + nfp_vdpa_dma_do_unmap(mem, i, vfio_container_fd); + return ret; + } + } + + return 0; +} + +static int +nfp_vdpa_dma_map(struct nfp_vdpa_dev *device, + bool do_map) +{ + int ret; + int vfio_container_fd; + struct rte_vhost_memory *mem = NULL; + + ret = rte_vhost_get_mem_table(device->vid, &mem); + if (ret < 0) { + DRV_VDPA_LOG(ERR, "Failed to get memory layout."); + return ret; + } + + vfio_container_fd = device->vfio_container_fd; + DRV_VDPA_LOG(DEBUG, "vfio_container_fd %d", vfio_container_fd); + + if (do_map) + ret = nfp_vdpa_dma_do_map(mem, mem->nregions, vfio_container_fd); + else + ret = nfp_vdpa_dma_do_unmap(mem, mem->nregions, vfio_container_fd); + + free(mem); + + return ret; +} + +static uint64_t +nfp_vdpa_qva_to_gpa(int vid, + uint64_t qva) +{ + int ret; + uint32_t i; + uint64_t gpa = 0; + struct rte_vhost_memory *mem = NULL; + struct rte_vhost_mem_region *region; + + ret = rte_vhost_get_mem_table(vid, &mem); + if (ret < 0) { + DRV_VDPA_LOG(ERR, "Failed to get memory layout."); + return gpa; + } + + for (i = 0; i < mem->nregions; i++) { + region = &mem->regions[i]; + + if (qva >= region->host_user_addr && + qva < region->host_user_addr + region->size) { + gpa = qva - region->host_user_addr + region->guest_phys_addr; + break; + } + } + + free(mem); + + return gpa; +} + +static int +nfp_vdpa_start(struct nfp_vdpa_dev *device) +{ + int ret; + int vid; + uint16_t i; + uint64_t gpa; + struct rte_vhost_vring vring; + struct nfp_vdpa_hw *vdpa_hw = &device->hw; + + vid = device->vid; + vdpa_hw->nr_vring = rte_vhost_get_vring_num(vid); + + ret = rte_vhost_get_negotiated_features(vid, &vdpa_hw->req_features); + if (ret != 0) + return ret; + + for (i = 0; i < vdpa_hw->nr_vring; i++) { + ret = rte_vhost_get_vhost_vring(vid, i, &vring); + if (ret != 0) + return ret; + + gpa = nfp_vdpa_qva_to_gpa(vid, (uint64_t)(uintptr_t)vring.desc); + if (gpa == 0) { + DRV_VDPA_LOG(ERR, "Fail to get GPA for descriptor ring."); + return -1; + } + + vdpa_hw->vring[i].desc = gpa; + + gpa = nfp_vdpa_qva_to_gpa(vid, (uint64_t)(uintptr_t)vring.avail); + if (gpa == 0) { + DRV_VDPA_LOG(ERR, "Fail to get GPA for available ring."); + return -1; + } + + vdpa_hw->vring[i].avail = gpa; + + gpa = nfp_vdpa_qva_to_gpa(vid, (uint64_t)(uintptr_t)vring.used); + if (gpa == 0) { + DRV_VDPA_LOG(ERR, "Fail to get GPA for used ring."); + return -1; + } + + vdpa_hw->vring[i].used = gpa; + + vdpa_hw->vring[i].size = vring.size; + + ret = rte_vhost_get_vring_base(vid, i, + &vdpa_hw->vring[i].last_avail_idx, + &vdpa_hw->vring[i].last_used_idx); + if (ret != 0) + return ret; + } + + return nfp_vdpa_hw_start(&device->hw, vid); +} + +static void +nfp_vdpa_stop(struct nfp_vdpa_dev *device) +{ + int vid; + uint32_t i; + struct nfp_vdpa_hw *vdpa_hw = &device->hw; + + nfp_vdpa_hw_stop(vdpa_hw); + + vid = device->vid; + for (i = 0; i < vdpa_hw->nr_vring; i++) + rte_vhost_set_vring_base(vid, i, + vdpa_hw->vring[i].last_avail_idx, + vdpa_hw->vring[i].last_used_idx); +} + +static int +nfp_vdpa_enable_vfio_intr(struct nfp_vdpa_dev *device) +{ + int ret; + uint16_t i; + int *fd_ptr; + uint16_t nr_vring; + struct vfio_irq_set *irq_set; + struct rte_vhost_vring vring; + char irq_set_buf[MSIX_IRQ_SET_BUF_LEN]; + + nr_vring = rte_vhost_get_vring_num(device->vid); + + irq_set = (struct vfio_irq_set *)irq_set_buf; + irq_set->argsz = sizeof(irq_set_buf); + irq_set->count = nr_vring + 1; + irq_set->flags = VFIO_IRQ_SET_DATA_EVENTFD | VFIO_IRQ_SET_ACTION_TRIGGER; + irq_set->index = VFIO_PCI_MSIX_IRQ_INDEX; + irq_set->start = 0; + + fd_ptr = (int *)&irq_set->data; + fd_ptr[RTE_INTR_VEC_ZERO_OFFSET] = rte_intr_fd_get(device->pci_dev->intr_handle); + + for (i = 0; i < nr_vring; i++) + device->intr_fd[i] = -1; + + for (i = 0; i < nr_vring; i++) { + rte_vhost_get_vhost_vring(device->vid, i, &vring); + fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = vring.callfd; + } + + ret = ioctl(device->vfio_dev_fd, VFIO_DEVICE_SET_IRQS, irq_set); + if (ret != 0) { + DRV_VDPA_LOG(ERR, "Error enabling MSI-X interrupts."); + return -EIO; + } + + return 0; +} + +static int +nfp_vdpa_disable_vfio_intr(struct nfp_vdpa_dev *device) +{ + int ret; + struct vfio_irq_set *irq_set; + char irq_set_buf[MSIX_IRQ_SET_BUF_LEN]; + + irq_set = (struct vfio_irq_set *)irq_set_buf; + irq_set->argsz = sizeof(irq_set_buf); + irq_set->count = 0; + irq_set->flags = VFIO_IRQ_SET_DATA_NONE | VFIO_IRQ_SET_ACTION_TRIGGER; + irq_set->index = VFIO_PCI_MSIX_IRQ_INDEX; + irq_set->start = 0; + + ret = ioctl(device->vfio_dev_fd, VFIO_DEVICE_SET_IRQS, irq_set); + if (ret != 0) { + DRV_VDPA_LOG(ERR, "Error disabling MSI-X interrupts."); + return -EIO; + } + + return 0; +} + +static int +update_datapath(struct nfp_vdpa_dev *device) +{ + int ret; + + rte_spinlock_lock(&device->lock); + + if ((__atomic_load_n(&device->running, __ATOMIC_RELAXED) == 0) && + (__atomic_load_n(&device->started, __ATOMIC_RELAXED) != 0) && + (__atomic_load_n(&device->dev_attached, __ATOMIC_RELAXED) != 0)) { + ret = nfp_vdpa_dma_map(device, true); + if (ret != 0) + goto unlock_exit; + + ret = nfp_vdpa_enable_vfio_intr(device); + if (ret != 0) + goto dma_map_rollback; + + ret = nfp_vdpa_start(device); + if (ret != 0) + goto disable_vfio_intr; + + __atomic_store_n(&device->running, 1, __ATOMIC_RELAXED); + } else if ((__atomic_load_n(&device->running, __ATOMIC_RELAXED) != 0) && + ((__atomic_load_n(&device->started, __ATOMIC_RELAXED) != 0) || + (__atomic_load_n(&device->dev_attached, __ATOMIC_RELAXED) != 0))) { + + nfp_vdpa_stop(device); + + ret = nfp_vdpa_disable_vfio_intr(device); + if (ret != 0) + goto unlock_exit; + + ret = nfp_vdpa_dma_map(device, false); + if (ret != 0) + goto unlock_exit; + + __atomic_store_n(&device->running, 0, __ATOMIC_RELAXED); + } + + rte_spinlock_unlock(&device->lock); + return 0; + +disable_vfio_intr: + nfp_vdpa_disable_vfio_intr(device); +dma_map_rollback: + nfp_vdpa_dma_map(device, false); +unlock_exit: + rte_spinlock_unlock(&device->lock); + return ret; +} + struct rte_vdpa_dev_ops nfp_vdpa_ops = { }; @@ -156,6 +464,10 @@ nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) TAILQ_INSERT_TAIL(&vdpa_dev_list, node, next); pthread_mutex_unlock(&vdpa_list_lock); + rte_spinlock_init(&device->lock); + __atomic_store_n(&device->started, 1, __ATOMIC_RELAXED); + update_datapath(device); + return 0; vfio_teardown: @@ -185,6 +497,9 @@ nfp_vdpa_pci_remove(struct rte_pci_device *pci_dev) device = node->device; + __atomic_store_n(&device->started, 0, __ATOMIC_RELAXED); + update_datapath(device); + pthread_mutex_lock(&vdpa_list_lock); TAILQ_REMOVE(&vdpa_dev_list, node, next); pthread_mutex_unlock(&vdpa_list_lock); diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.c b/drivers/vdpa/nfp/nfp_vdpa_core.c index a7e15fa88a..db9b8462b4 100644 --- a/drivers/vdpa/nfp/nfp_vdpa_core.c +++ b/drivers/vdpa/nfp/nfp_vdpa_core.c @@ -5,6 +5,7 @@ #include "nfp_vdpa_core.h" +#include #include #include "nfp_vdpa_log.h" @@ -52,3 +53,80 @@ nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, return 0; } + +static uint32_t +nfp_vdpa_check_offloads(void) +{ + return NFP_NET_CFG_CTRL_SCATTER | + NFP_NET_CFG_CTRL_IN_ORDER; +} + +int +nfp_vdpa_hw_start(struct nfp_vdpa_hw *vdpa_hw, + int vid) +{ + int ret; + uint32_t update; + uint32_t new_ctrl; + struct timespec wait_tst; + struct nfp_hw *hw = &vdpa_hw->super; + uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; + + nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(0), vdpa_hw->vring[1].desc); + nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(0), rte_log2_u32(vdpa_hw->vring[1].size)); + nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(1), vdpa_hw->vring[1].avail); + nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(2), vdpa_hw->vring[1].used); + + nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(0), vdpa_hw->vring[0].desc); + nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(0), rte_log2_u32(vdpa_hw->vring[0].size)); + nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(1), vdpa_hw->vring[0].avail); + nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(2), vdpa_hw->vring[0].used); + + rte_wmb(); + + nfp_disable_queues(hw); + nfp_enable_queues(hw, NFP_VDPA_MAX_QUEUES, NFP_VDPA_MAX_QUEUES); + + new_ctrl = nfp_vdpa_check_offloads(); + + nn_cfg_writel(hw, NFP_NET_CFG_MTU, 9216); + nn_cfg_writel(hw, NFP_NET_CFG_FLBUFSZ, 10240); + + /* TODO: Temporary set MAC to fixed value fe:1b:ac:05:a5:22 */ + mac_addr[0] = 0xfe; + mac_addr[1] = 0x1b; + mac_addr[2] = 0xac; + mac_addr[3] = 0x05; + mac_addr[4] = 0xa5; + mac_addr[5] = (0x22 + vid); + + /* Writing new MAC to the specific port BAR address */ + nfp_write_mac(hw, (uint8_t *)mac_addr); + + /* Enable device */ + new_ctrl |= NFP_NET_CFG_CTRL_ENABLE; + + /* Signal the NIC about the change */ + update = NFP_NET_CFG_UPDATE_MACADDR | + NFP_NET_CFG_UPDATE_GEN | + NFP_NET_CFG_UPDATE_RING; + + ret = nfp_reconfig(hw, new_ctrl, update); + if (ret < 0) + return -EIO; + + hw->ctrl = new_ctrl; + + DRV_CORE_LOG(DEBUG, "Enabling the device, sleep 1 seconds..."); + wait_tst.tv_sec = 1; + wait_tst.tv_nsec = 0; + nanosleep(&wait_tst, 0); + + return 0; +} + +void +nfp_vdpa_hw_stop(struct nfp_vdpa_hw *vdpa_hw) +{ + nfp_disable_queues(&vdpa_hw->super); +} diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.h b/drivers/vdpa/nfp/nfp_vdpa_core.h index c9403e0ea4..a88de768dd 100644 --- a/drivers/vdpa/nfp/nfp_vdpa_core.h +++ b/drivers/vdpa/nfp/nfp_vdpa_core.h @@ -15,6 +15,15 @@ #define NFP_VDPA_NOTIFY_ADDR_BASE 0x4000 #define NFP_VDPA_NOTIFY_ADDR_INTERVAL 0x1000 +struct nfp_vdpa_vring { + uint64_t desc; + uint64_t avail; + uint64_t used; + uint16_t size; + uint16_t last_avail_idx; + uint16_t last_used_idx; +}; + struct nfp_vdpa_hw { struct nfp_hw super; @@ -22,11 +31,17 @@ struct nfp_vdpa_hw { uint64_t req_features; uint8_t *notify_addr[NFP_VDPA_MAX_QUEUES * 2]; + struct nfp_vdpa_vring vring[NFP_VDPA_MAX_QUEUES * 2]; uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; uint8_t notify_region; + uint8_t nr_vring; }; int nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, struct rte_pci_device *dev); +int nfp_vdpa_hw_start(struct nfp_vdpa_hw *vdpa_hw, int vid); + +void nfp_vdpa_hw_stop(struct nfp_vdpa_hw *vdpa_hw); + #endif /* __NFP_VDPA_CORE_H__ */ From patchwork Tue Oct 24 02:28: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: 133228 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 4E618431EB; Tue, 24 Oct 2023 04:32:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E58E442E0F; Tue, 24 Oct 2023 04:30:26 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2106.outbound.protection.outlook.com [40.107.223.106]) by mails.dpdk.org (Postfix) with ESMTP id A0DF642DB2 for ; Tue, 24 Oct 2023 04:30:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U54Ms1FBnhMbpZD4wXFCQozOtTZJhNxrGWCDoAAFtqfyh6LXNVT9kodOwlZVN5/LBfVH3KFyouXZ47gm68LZXJf+nPTLtNGwH+V/O9kOVxxSN4J+jU+btQwvp0+c4u0IjHQYWKRBRCtx9eobh48cVNZzXHQt7e+1dj35fCNjdi6hCc5iMulSfR5HSENv0IFYbVkjt4cHmkfcatpiMsX/jiP6OMV4iUgkcu8g/tBzoe1OyUu/9jl+NYNCKUGlyDc50L2ajsdJRRfxLbqgC0v6oSxX4ChHBiWOdzsFPA8uYpQRMgG6OYf5fjiy6tcXrYio+0n8SKzEMyN6ExtF76lQxA== 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=QHdqZRcwwr2EzMknT15RVkuNGoH9MZJHCg6KQHJJMcY=; b=MdUFRvP2/OVlKG3D+xCL/ljnkbw4PzzIZ8970BFNWGIC6ugmNkZS8OYkhsv1goRac3m0PXor/TLvvf8XPaAZiJSFh/neLwQHjCtnLRp39CoW4i8JLhqZdBmo7/HQnzd9I7nfK+kQwfINiSz/c2k4RPBlKnKdsiTk5pvBTluqZ9yj9jKgZsCwohCfwKU7eFY70p7xRbLPeuCYZbu+zC1Y4/8jbVBaU8GN3iMyzblljwvS627xieewIJDIXWWhbbbqg+npSx11SMXNB15UVM9Ri62sEbTCpal4Q7XislA+i+OkN4rcsqqpF0tveKlzAyke2gzzvxFmR7MeDtbbSyS9Cg== 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=QHdqZRcwwr2EzMknT15RVkuNGoH9MZJHCg6KQHJJMcY=; b=pqLilDanoIefH2ytInhYkuZiuvBW1BcUFKsFxdNAB1LPTvf/zgBamT6uA7ZQ28XQBC2p5Fsv+iGGiGKwXJVub3OZofpKoBM9k36TrNaPrC0ArdiesXpMJXnKixF0OuFOmNLnWOmD4/qqrAPiZjYsWozF6oqTRAV9Dk9HhrvR/a0= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:21 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:21 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 23/25] vdpa/nfp: add the notify related logic Date: Tue, 24 Oct 2023 10:28:47 +0800 Message-Id: <20231024022849.3092506-24-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: 6ba936af-af19-456d-99bf-08dbd4392b60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BKDgYaO/dzUYGp9pf+0OT0mMhp3xD1H4GYLlIM9ZEJiQuw+HJpIqGNRfsvx9hhuua3oJ8nWxCJ9c9ximOGMaOUXcDkGxehUyEzFOyBGQwNO70nj2N5uWwjK4cFgXkQXiDjsYXo3ilDZAiCGCdzn7wH/lPaDER1rA6DCakwuN8L1M48CfTjFBLPd/S2ceGPMxv0hR4E0bZmUC2LuxRnDWdX1M204bHfBTOgDYDA+0wCRctVZbMiztW5q3jcKkCa4l6qAXpgAYJ7liEJOXpFzNNF7Nfu2bfnCVhlg47AXdriRPoo/kyEhSNTXGHFGC06pJqGkQthm9eav419piiqDjsPCZXpAPEPAX41noOX6rGw/taTddQWUpsBkQoZUu/hP6hWOAlnqJx7/MCGcNCukozZ7rwhqW964XDoWuKYVxvbQlkgk28vNKZLPACGjyYCyflzhBaAgMeREpXq/qTjYCbwCxx0fZDapiGpyLCsG1kzIoM0aE5uOt/3lDTQofh9bqyQJIBDS41asa7TpQATepI8rnOxdFTp0KCFr6lK4Qr4SwfnumLkpXk9zO0vqopPPQH7pRfI+BHhnDKOcoVqUiD3XEoGs6j+tnhVB8rMFLepDcOKUVENL7v45eMd35ILGZB+oinf2z1pfZ7fCWo6wspn3VpXPHwjL7AOFdOOMlgco= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 985ATTpfSGz/YMwU6dCnpK/z0ix9uEjHQeZlwUit30NVXzr2wTFDD6KcrpRRan/28PJjh+HdQmxplula/liyqzyyk3D+rr/Ba5wmwY2GDPRLsuBQJHnn51HroALTosKKCyDnSPvZZ6LucGEl2VRvaeSq8DP9Q1Abvye1R/ze+qgXG6TNJ4qAaiN+QsCAeUown61PmKT+RWSBSaxirusNG1RH06yP4KUobnrjtT0O+w9eCYoOiSk3m5Avdy2I6jHtrqyO2VhjN8Aah/Ti0kENW7PhavT1tWz0hbuSQ0N/OqA/PvIE9TM7z7CmjBwEqR09z2l7svIB/V86w/wz3/E0y8TU2lvjVw7mlMEwzF4rBnDzvWRhAK6aHHXIY8WFKXnpdr5+KPCiZHM+uTIRD32kHAzK33DVgtS68HUjQ6+RF1dDCYmPuCEiv0BuAG0cG4aNIendvBVJgUe47eOvVg6A1oKRolbX5obtRhNMbH0fqRUuS/65gGrDXgZhfbq3HOQd+gY+aKaUUwF7Mo4myFQAsJHslF9UgXCCjH4KHaGrwwh7jUc3/GpiDqHD75vi/YFCzbJuD40UcNKlJ9rzSTNkFcAwD9UWu1Sweqkoyq7NXU7Kq15Wb3r0QZ2OGzp9GRUvTWSXjcM5nG6AFh/xICRTpnYNb7NkXOT1/BmiHT33O25GNKV4w4g4+l/OPUCM+B2pt66ff6sHY/FMlRlQoWqme+KLeNDnZmPDQ1OVuKDqzKKS/KO8jnANIvVPphKQjJ8LBAaXnCXTmxoxYOywKsbfzGP0MLcOoxWjpFhQ3Os3ANEvqQqEsg0Ia9yQoFlGC++Vby3eh8/jjhyOnxko4CWLy8sS1uogFtw6Kmtl+z41SfRUiFGIv0vOFhuIQwnOKsOVFRZhGnrGKEW9h0gyhLFKKTViz689SPOB+yRxMwyGY4zMFG9c8zZlIMynKdYSRzdneEF11YL3aSRTr+WZuwoEemLgDbGPNNaGaiMbiifcxAFJv5/C38yp5a+RcAw9P9uEfbyn0oA/rB6aL3btce3EF8xRpIr8L6P41m5yobRoCUCW9rY1ExFtz3QUb1wabZfOyXlRugrGalHONcoLSyLcHEdZD+ii8gaRCpplYSDSDSJfdmZM5neM8D2DejzkU3PWgCPFglDh7UD1tmZKujYwMW+8hGKC5Z0bprC58oqG1nDmMrliIBPEmd8GD0flfkXU4flLo2BTnr9SEkF07tFmutQ8j9qwABxugnMbnHLlQw5HSaK4UlOMdGoOWNGdTNzwsSnvWPPwZbJOodgXKZrNRHblhJ+hdQqxXq1ewaSw9k2J/iUYqtgTEwsST3olkQzxcJw6XLYI5ehK7ICp57wgwx4VAX0mdSkJP5IJ6qTpEdU38iB3ZW8MQt7qshHL4bAkxG1any4nnAyfdjq3ghfGb3y9IN+kGk8kGWZMAkb8jAJM94nC1OuH3+MSJfTkJgdPhppwsZ+wLlJoepWK7wLMuaMUk0VJ0mLmZUdQfqiGVTmtBcAHdVz6zlABO6AD9rtNovaY+k/qNJ9gjBJ4XvHLFyJx809HzCrBFQVJ0FYnUxYqUcoIFsX9MwjCFg/lx1EPdCJuEC6jFzNHSAAq9w09aA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ba936af-af19-456d-99bf-08dbd4392b60 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:21.1751 (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: /pv3cD+FZgsrJycwl9Ym9sEHn+oC4WkAcrEU/6cDN4HQcR/bE134SwBavxiRMca0UlBVXsA1iyta13m1BYFnqSEjWPGorHv7XemDxXeC1gI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 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 logic to process vDPA notify relay. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/nfp/nfp_vdpa.c | 155 +++++++++++++++++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.c | 61 ++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.h | 4 + 3 files changed, 220 insertions(+) diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index 465ee4841d..01a59e2cfd 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -4,7 +4,9 @@ */ #include +#include #include +#include #include #include @@ -29,6 +31,9 @@ struct nfp_vdpa_dev { int vfio_dev_fd; int iommu_group; + pthread_t tid; /**< Thread for notify relay */ + int epoll_fd; + int vid; uint16_t max_queues; uint32_t started; @@ -368,6 +373,148 @@ nfp_vdpa_disable_vfio_intr(struct nfp_vdpa_dev *device) return 0; } +static void +nfp_vdpa_read_kickfd(int kickfd) +{ + int bytes; + uint64_t buf; + + for (;;) { + bytes = read(kickfd, &buf, 8); + if (bytes >= 0) + break; + + if (errno != EINTR && errno != EWOULDBLOCK && + errno != EAGAIN) { + DRV_VDPA_LOG(ERR, "Error reading kickfd"); + break; + } + } +} + +static int +nfp_vdpa_notify_epoll_ctl(uint32_t queue_num, + struct nfp_vdpa_dev *device) +{ + int ret; + uint32_t qid; + + for (qid = 0; qid < queue_num; qid++) { + struct epoll_event ev; + struct rte_vhost_vring vring; + + ev.events = EPOLLIN | EPOLLPRI; + rte_vhost_get_vhost_vring(device->vid, qid, &vring); + ev.data.u64 = qid | (uint64_t)vring.kickfd << 32; + ret = epoll_ctl(device->epoll_fd, EPOLL_CTL_ADD, vring.kickfd, &ev); + if (ret < 0) { + DRV_VDPA_LOG(ERR, "Epoll add error for queue %d", qid); + return ret; + } + } + + return 0; +} + +static int +nfp_vdpa_notify_epoll_wait(uint32_t queue_num, + struct nfp_vdpa_dev *device) +{ + int i; + int fds; + int kickfd; + uint32_t qid; + struct epoll_event events[NFP_VDPA_MAX_QUEUES * 2]; + + for (;;) { + fds = epoll_wait(device->epoll_fd, events, queue_num, -1); + if (fds < 0) { + if (errno == EINTR) + continue; + + DRV_VDPA_LOG(ERR, "Epoll wait fail"); + return -EACCES; + } + + for (i = 0; i < fds; i++) { + qid = events[i].data.u32; + kickfd = (uint32_t)(events[i].data.u64 >> 32); + + nfp_vdpa_read_kickfd(kickfd); + nfp_vdpa_notify_queue(&device->hw, qid); + } + } + + return 0; +} + +static void * +nfp_vdpa_notify_relay(void *arg) +{ + int ret; + int epoll_fd; + uint32_t queue_num; + struct nfp_vdpa_dev *device = arg; + + epoll_fd = epoll_create(NFP_VDPA_MAX_QUEUES * 2); + if (epoll_fd < 0) { + DRV_VDPA_LOG(ERR, "failed to create epoll instance."); + return NULL; + } + + device->epoll_fd = epoll_fd; + + queue_num = rte_vhost_get_vring_num(device->vid); + + ret = nfp_vdpa_notify_epoll_ctl(queue_num, device); + if (ret != 0) + goto notify_exit; + + ret = nfp_vdpa_notify_epoll_wait(queue_num, device); + if (ret != 0) + goto notify_exit; + + return 0; + +notify_exit: + close(device->epoll_fd); + device->epoll_fd = -1; + + return NULL; +} + +static int +nfp_vdpa_setup_notify_relay(struct nfp_vdpa_dev *device) +{ + int ret; + + ret = pthread_create(&device->tid, NULL, nfp_vdpa_notify_relay, + (void *)device); + if (ret != 0) { + DRV_VDPA_LOG(ERR, "Failed to create notify relay pthread."); + return -1; + } + + return 0; +} + +static void +nfp_vdpa_unset_notify_relay(struct nfp_vdpa_dev *device) +{ + void *status; + + if (device->tid != 0) { + pthread_cancel(device->tid); + pthread_join(device->tid, &status); + device->tid = 0; + } + + if (device->epoll_fd >= 0) { + close(device->epoll_fd); + device->epoll_fd = -1; + } +} + static int update_datapath(struct nfp_vdpa_dev *device) { @@ -390,11 +537,17 @@ update_datapath(struct nfp_vdpa_dev *device) if (ret != 0) goto disable_vfio_intr; + ret = nfp_vdpa_setup_notify_relay(device); + if (ret != 0) + goto vdpa_stop; + __atomic_store_n(&device->running, 1, __ATOMIC_RELAXED); } else if ((__atomic_load_n(&device->running, __ATOMIC_RELAXED) != 0) && ((__atomic_load_n(&device->started, __ATOMIC_RELAXED) != 0) || (__atomic_load_n(&device->dev_attached, __ATOMIC_RELAXED) != 0))) { + nfp_vdpa_unset_notify_relay(device); + nfp_vdpa_stop(device); ret = nfp_vdpa_disable_vfio_intr(device); @@ -411,6 +564,8 @@ update_datapath(struct nfp_vdpa_dev *device) rte_spinlock_unlock(&device->lock); return 0; +vdpa_stop: + nfp_vdpa_stop(device); disable_vfio_intr: nfp_vdpa_disable_vfio_intr(device); dma_map_rollback: diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.c b/drivers/vdpa/nfp/nfp_vdpa_core.c index db9b8462b4..e2a6253ae5 100644 --- a/drivers/vdpa/nfp/nfp_vdpa_core.c +++ b/drivers/vdpa/nfp/nfp_vdpa_core.c @@ -15,6 +15,41 @@ #define VIRTIO_F_IN_ORDER 35 #endif +#define NFP_QCP_NOTIFY_MAX_ADD 0x7f + +enum nfp_qcp_notify_ptr { + NFP_QCP_NOTIFY_WRITE_PTR = 0, + NFP_QCP_NOTIFY_READ_PTR +}; + +/** + * Add the value to the selected pointer of a queue + * + * @param queue + * Base address for queue structure + * @param ptr + * Add to the Read or Write pointer + * @param val + * Value to add to the queue pointer + */ +static inline void +nfp_qcp_notify_ptr_add(uint8_t *q, + enum nfp_qcp_notify_ptr ptr, + uint32_t val) +{ + uint32_t off; + + if (ptr == NFP_QCP_NOTIFY_WRITE_PTR) + off = NFP_QCP_QUEUE_ADD_RPTR; + else + off = NFP_QCP_QUEUE_ADD_WPTR; + + for (; val > NFP_QCP_NOTIFY_MAX_ADD; val -= NFP_QCP_NOTIFY_MAX_ADD) + nn_writel(rte_cpu_to_le_32(NFP_QCP_NOTIFY_MAX_ADD), q + off); + + nn_writel(rte_cpu_to_le_32(val), q + off); +} + int nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, struct rte_pci_device *pci_dev) @@ -130,3 +165,29 @@ nfp_vdpa_hw_stop(struct nfp_vdpa_hw *vdpa_hw) { nfp_disable_queues(&vdpa_hw->super); } + +/* + * This offset is used for mmaping the notify area. It implies it needs + * to be a multiple of PAGE_SIZE. + * For debugging, using notify region 0 with an offset of 4K. This should + * point to the conf bar. + */ +uint64_t +nfp_vdpa_get_queue_notify_offset(struct nfp_vdpa_hw *vdpa_hw __rte_unused, + int qid) +{ + return NFP_VDPA_NOTIFY_ADDR_BASE + (qid * NFP_VDPA_NOTIFY_ADDR_INTERVAL); +} + +/* + * With just one queue the increment is 0, which does not + * incremente the counter but will raise a queue event due + * to queue configured for watermark events. + */ +void +nfp_vdpa_notify_queue(struct nfp_vdpa_hw *vdpa_hw, + uint16_t qid) +{ + nfp_qcp_notify_ptr_add(vdpa_hw->notify_addr[qid], + NFP_QCP_NOTIFY_WRITE_PTR, qid); +} diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.h b/drivers/vdpa/nfp/nfp_vdpa_core.h index a88de768dd..a8e0d6dd70 100644 --- a/drivers/vdpa/nfp/nfp_vdpa_core.h +++ b/drivers/vdpa/nfp/nfp_vdpa_core.h @@ -44,4 +44,8 @@ int nfp_vdpa_hw_start(struct nfp_vdpa_hw *vdpa_hw, int vid); void nfp_vdpa_hw_stop(struct nfp_vdpa_hw *vdpa_hw); +void nfp_vdpa_notify_queue(struct nfp_vdpa_hw *vdpa_hw, uint16_t qid); + +uint64_t nfp_vdpa_get_queue_notify_offset(struct nfp_vdpa_hw *vdpa_hw, int qid); + #endif /* __NFP_VDPA_CORE_H__ */ From patchwork Tue Oct 24 02:28: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: 133229 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 4DCAD431EB; Tue, 24 Oct 2023 04:33:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 694FD42E1A; Tue, 24 Oct 2023 04:30:30 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2130.outbound.protection.outlook.com [40.107.223.130]) by mails.dpdk.org (Postfix) with ESMTP id CA80542DE5 for ; Tue, 24 Oct 2023 04:30:24 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eiD1pcwwsGJf8dwFDEwk9Nv5DTOqIELk4XHRwF63fcuPDuwf7EdCm0kp9KXpLEkik74M+Hz7hxUwqXqGrsbSq6kXzilNZNiKJI/Vg4bwOfz2cB7nxDKc/8jBhbFK2hVgoC27TevfvDlakMf+5JPJuE50oIidUyHSEO2w0QHuJgr2Vxi78U1z0t+mSf8iFq8vio9tp/hbvrcL/57bDU54+dC++EX7hje3dSs7yJMkKMR0mhaxfH7FIrRamjgDrYZw/qmYFU6dsP1IYlc71AT1RWMmXZdUegfR6r9QAYUb+ApK237heIyBheWWFs12PdLvXZ4sMRM0v2NDnBRYBIIQSQ== 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=s6/uD0XlZ5EznMcVag8a7+X3NNWpa++VHqzaMZ/6RM0=; b=DWfEBj82INwO/jog4HWyqWbjZ64ypwpY4gFMY37hunUPGBxspUjTllHQWx0JfPqN9YtVblcwbuIHGtGL8vJVtoFgWxNRNcEkEKKF/pVfOqYcwB0reTAVLQXqCiwgWH1zdL6zsKtgM5Kfl32Ttu4uAun3m160nEC44GTfMB61orBjpQhHIMHGvjSxqcAqj+JQ1J+DZ/ZX2j8yZIAgfYN7PEYtKnDp6Spovi0URNMoD1zLbuZuWEwMD8bfnUNLoTXybovqqCBHY5eUEgOYooa5eAY+gLEKWG56cF81jUy4ZuxtPzYsWpWQVyhBjNhzzyTKvEo7GMFru/zeu1OQ83n9tw== 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=s6/uD0XlZ5EznMcVag8a7+X3NNWpa++VHqzaMZ/6RM0=; b=fb7EvzqnNJ/8Ipr2c7wgabTeGs5zSSAqC2WB0rRRO1nmaZPk2F70eOOScG48uI0n7rFhTm5GKOt+61PzxqCrJdoAO8PYNN+B9sK3mUxqLydZZNaiWIr0kG3PHZeAxf0MQEnjHBL3CWsv2NtQySF2XMV3qoOc4SIi3TAOJJnKmYo= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:23 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:23 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v2 24/25] vdpa/nfp: add nfp vDPA device operations Date: Tue, 24 Oct 2023 10:28:48 +0800 Message-Id: <20231024022849.3092506-25-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: da531f3e-d306-45f7-2920-08dbd4392c94 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mTKk3WhvweZcllgny3kNPWCIF7xtrNPcXkzXYdVkNLjbaaiRltRtRUAfm4r6zCPAEmK0oUuKD5GxYQJlTDMWcBYfqPBGPAktvrekfDUrNnR6w4SOMlRr3OBNQp8EBUR3mPkyeUbQSTVQt25uJgCcvhTmwy4HuWiHsAxZ1QXCzEsEgb2235jSh8p3xN8BiHlD2w9v419Z8LrN8Z1BanEXp0wo6wi1ti4XUDnjT492RuKaA5Ue69qWiu5M/iry9rtWE49eI9byaV0+rI+BDx+tG5N56SYwP6X1WW2SJpn/tyoAIKnyZy2jh8NwoqnizprFvgHV0mLhLRgyedEWLtvVV7Sv3us/BvTiYw8CDg8asxLt3AqkweXn/kT4qASxVlRqAJ+b/tv2r5LgQExNQmfF9LBxWzRhcErHfUPGb3w0LHLNHaKjdgnLJEF+CGblOis0NYuNVSJmrdubPnY0bfnz0UN9aXLk4NNov6KZ4weZ2e58BBmTiLt2+n8Gh0ODl1PMuSJQaJL4Oo9WESTBFzSIzx1utdYpL6exsw+XJVOIYyQgVauNZF7e/dbnW0g/DZSA0Kku2cFNkPLW1k6UAoG/UpL93iFTt69ouQUUzMOwi/mJPL/uERa6b2CZRxwQn6PBcX9Hft/1uPmvRVC8MTef1i5HVbWWh9XwUDKCJOLCFcU= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pAAaSbcVHiXBBhJ/p2yQZWW0qDqanskPls8CvlbkPvp2U8dijTVHJYViqVObrqH9nXO6q9IV5bo1Z7lAAAj+cuMk7emH7f7hIlkfEshUsUGD+bKgZFBmapgMGoweKDZ0OGqjisPplcAUKVQo4BHIvsQLUHJz4XUedVmMDVPbV2p5rXx8jq9w4dcs46Qz2JSoUAyWFL05wIoyZD0N1xwsa/LL88tlwStpI6/H6+1GTKXsWTfS+sQaoeA7/72vq2jHEh6bkOpXD4EOM4FWjYEl2fdhbxfdpd1aL0rvk8xEfgqGH6JgbrVHm4ZsQS9wd8sGI7VBYkt1iVRIXiNN4WknZ3OPsXCaFVrlHalt/Gf/boIyE/ghxyCtAsHEgoKhQMxYSSqYblZzWd91XQB0ZtlyiPwkDpya/OCKH3vDxHCX5Bj9KoyOiEGuhYva3fbzB3J5LQmb3rLhKDCW8knCgkdkIEw59wJg6s4Z/aFB2NuiO+j5Grh/ja+SSWSVRacGw7SO9X3UwtUqlfQXWi4xEwv0y/GSgyW6LQl3ZBXJgB95aD4m32+KKtIQDsUqxbyI0fegTGjVftqvyLLdWLRf+uQP52VXy9ah0LnjFsBgZGpIU9mwRAia0Hymv28G+6Nhup3kGqaOGYFNn2Ci+ipgiX3eIJZ4DqFYgWUE/UPX/DST901r/LiOIEg0x72w4pk8ia818KItBMMqkBG4+38EWZo9eq0U2nXaJabvzBAsU+0YkI42YOdL9ZhNJFWNwL+JfTK/6or83miVqLis7Cm8ZaErmQ5eUXUGHzOJ06BPaqSULosyW6tfc5xJil8D+Gb0SKmcz8nkraHPPdmnktjSMVmsbThwM1Txnr2UgpslEWuiG5XfcR5Vcos933Bwk6bK/z6QtonSmsEMsYEHVul1oslYXKCVBsviNg74qWWuy2kO0kYulw95YV6sOvJGfOhD9+iAgBFuvJs15kw4b2uhbQCAWmx93sqvLBq81MiQN5nOZVdYM0eWYsvx2jvs3Ic18oxfV/Z3VnfkDlgYkUHCYYl68kCB5biA0HWYMvz/7oZ/MzhDmlP86jt5P7ad1q9ajFo1gGY6yco7UuzgwShUsQUB9mnZZT0YzWV6xxTXEbWykyXr/fBHNw/b5vHzdv7aiSr+vb1PLyhMrxE2iRMF+UnxfY9VYs+qwa/UxvDxSVNP08buPQzwPMG3tgovvoO0VDY82mSQbCqsATPjZp+TGvI56DFf3WuA76dM7AMTIZtC+XV6J943WXYU5fbeB9NcmYeGfuLQ5x1yMIjwyOGxgRIOvVMvwicPUGPCjvJjT7OLicBjq/mfoG1cdFp+OhdsRW9z3QakbhXHBLqIexXrg/NGO6yMg8B8rHPp5R+8vlPYKEs7ljrJJncnSulcLi4vuXqQlyPfmDzsxz8EIKlGetLMa+iAtHiykJ6cSTXqpKuCVW1nxt6nTk4VyKYT3zBoYMlG7hauQOw5GnL1GoZ2PtgeDYW5qi1I9FCM76dfd7J7H+wi8pWp+zMlrrZf/D+zKzDAs9U2XQ7adrjrAgQ9Nbpdbl60r24avkKqli2sapALMkHe6xMryU3MRpqMb8tQqhM1n2K19cfOFowi8uRVA+I2mw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: da531f3e-d306-45f7-2920-08dbd4392c94 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:23.1863 (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: QAob0/gTNSEtn8/smhBjwbjSGDus839xCRMuVIERv2syJw0uFIaaTD4pa8IGUzgdHi4yGypp/LJDX+dfW7sJmtscFLaOJIKahlac0UGD7o0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 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 Implement the corresponding nfp vDPA opetation functions. Signed-off-by: Shujing Dong Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/nfp/nfp_vdpa.c | 213 ++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index 01a59e2cfd..860b5cce63 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -57,6 +57,29 @@ static struct vdpa_dev_list_head vdpa_dev_list = static pthread_mutex_t vdpa_list_lock = PTHREAD_MUTEX_INITIALIZER; +static struct nfp_vdpa_dev_node * +nfp_vdpa_find_node_by_vdev(struct rte_vdpa_device *vdev) +{ + bool found = false; + struct nfp_vdpa_dev_node *node; + + pthread_mutex_lock(&vdpa_list_lock); + + TAILQ_FOREACH(node, &vdpa_dev_list, next) { + if (vdev == node->device->vdev) { + found = true; + break; + } + } + + pthread_mutex_unlock(&vdpa_list_lock); + + if (found) + return node; + + return NULL; +} + static struct nfp_vdpa_dev_node * nfp_vdpa_find_node_by_pdev(struct rte_pci_device *pdev) { @@ -575,7 +598,197 @@ update_datapath(struct nfp_vdpa_dev *device) return ret; } +static int +nfp_vdpa_dev_config(int vid) +{ + int ret; + struct nfp_vdpa_dev *device; + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + device = node->device; + device->vid = vid; + __atomic_store_n(&device->dev_attached, 1, __ATOMIC_RELAXED); + update_datapath(device); + + ret = rte_vhost_host_notifier_ctrl(vid, RTE_VHOST_QUEUE_ALL, true); + if (ret != 0) + DRV_VDPA_LOG(INFO, "vDPA (%s): software relay is used.", + vdev->device->name); + + return 0; +} + +static int +nfp_vdpa_dev_close(int vid) +{ + struct nfp_vdpa_dev *device; + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + device = node->device; + __atomic_store_n(&device->dev_attached, 0, __ATOMIC_RELAXED); + update_datapath(device); + + return 0; +} + +static int +nfp_vdpa_get_vfio_group_fd(int vid) +{ + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + return node->device->vfio_group_fd; +} + +static int +nfp_vdpa_get_vfio_device_fd(int vid) +{ + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + return node->device->vfio_dev_fd; +} + +static int +nfp_vdpa_get_notify_area(int vid, + int qid, + uint64_t *offset, + uint64_t *size) +{ + int ret; + struct nfp_vdpa_dev *device; + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + struct vfio_region_info region = { + .argsz = sizeof(region) + }; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + device = node->device; + region.index = device->hw.notify_region; + + ret = ioctl(device->vfio_dev_fd, VFIO_DEVICE_GET_REGION_INFO, ®ion); + if (ret != 0) { + DRV_VDPA_LOG(ERR, "Get not get device region info."); + return -EIO; + } + + *offset = nfp_vdpa_get_queue_notify_offset(&device->hw, qid) + region.offset; + *size = NFP_VDPA_NOTIFY_ADDR_INTERVAL; + + return 0; +} + +static int +nfp_vdpa_get_queue_num(struct rte_vdpa_device *vdev, + uint32_t *queue_num) +{ + struct nfp_vdpa_dev_node *node; + + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + *queue_num = node->device->max_queues; + + return 0; +} + +static int +nfp_vdpa_get_vdpa_features(struct rte_vdpa_device *vdev, + uint64_t *features) +{ + struct nfp_vdpa_dev_node *node; + + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + *features = node->device->hw.features; + + return 0; +} + +static int +nfp_vdpa_get_protocol_features(struct rte_vdpa_device *vdev __rte_unused, + uint64_t *features) +{ + *features = 1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD | + 1ULL << VHOST_USER_PROTOCOL_F_REPLY_ACK | + 1ULL << VHOST_USER_PROTOCOL_F_BACKEND_REQ | + 1ULL << VHOST_USER_PROTOCOL_F_BACKEND_SEND_FD | + 1ULL << VHOST_USER_PROTOCOL_F_HOST_NOTIFIER; + + return 0; +} + +static int +nfp_vdpa_set_features(int32_t vid) +{ + DRV_VDPA_LOG(DEBUG, "Start vid=%d", vid); + return 0; +} + +static int +nfp_vdpa_set_vring_state(int vid, + int vring, + int state) +{ + DRV_VDPA_LOG(DEBUG, "Start vid=%d, vring=%d, state=%d", vid, vring, state); + return 0; +} + struct rte_vdpa_dev_ops nfp_vdpa_ops = { + .get_queue_num = nfp_vdpa_get_queue_num, + .get_features = nfp_vdpa_get_vdpa_features, + .get_protocol_features = nfp_vdpa_get_protocol_features, + .dev_conf = nfp_vdpa_dev_config, + .dev_close = nfp_vdpa_dev_close, + .set_vring_state = nfp_vdpa_set_vring_state, + .set_features = nfp_vdpa_set_features, + .get_vfio_group_fd = nfp_vdpa_get_vfio_group_fd, + .get_vfio_device_fd = nfp_vdpa_get_vfio_device_fd, + .get_notify_area = nfp_vdpa_get_notify_area, }; static int From patchwork Tue Oct 24 02:28: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: 133230 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 0F4C3431EB; Tue, 24 Oct 2023 04:33:11 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 71E5942E20; Tue, 24 Oct 2023 04:30:31 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2105.outbound.protection.outlook.com [40.107.223.105]) by mails.dpdk.org (Postfix) with ESMTP id 9FB2142E0E for ; Tue, 24 Oct 2023 04:30:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dhl2w4XcwpTt1ELfgopXyXnc1VyTudvTtpYFrbN2f0TLk2h3PEjvVQHwB+ayCFf/iF7+ZCw4j+ZIFCcoS8XllvuAKQETt3oaJ3DJnOkCxQOsjo4GvQXpVGtEnJA4n8TOBi/DYY9H5B8ecnZq1clPXMl4m3ADQd0fBazp0fgvWHN4CVgHUieVQ3Z1VH5uBiMhSV+6NFDL6fcsRtu69MKgUhWWhFmIS/L3yCW4AWTlXa+QudYcqmjFQW1ZJIzJVszAyi6kaflwHn5uWtC3vcDm073L1lDBhY7CxgHoOEvhxSc/5hk4XtUAUzdNPIWHMrdduO2xMhLaAiYnbU+yhhz8IQ== 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=wMR5ZTLjtpZwansAMbNMFQkD6Ynr32QT/2YjSibo8TA=; b=kv9hCnnP6F5iXA1CMbr9QZLumzvvIa3Ebjc45wYcoQbvCVbEmkGDGX9cGaKHYmskq42yU5qZZbYbL/kERQTATyBF2xtFb3hOKp/34of6tVzv+StjMbzfT1sQUJPk8EvC4q/GsRHJwNHmK/RGo/ogknf6LmN6joiw/5JYDpvHtEKQ4Oo8utzxvRbnz3iX1SM8izB9BLQOzSf37pShym/c2dis0vBi2IeKxUJQhqIavpgPYdATmNdxN5VBc7N7b2NYul3u8As+CVY8yt+oQHRjw/1PedOh3s67qpvYLxkl9uAbDsXBG/RORJ0LxRl/IUOrtzX6ZHT26nOQ5j+5Dp/jGA== 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=wMR5ZTLjtpZwansAMbNMFQkD6Ynr32QT/2YjSibo8TA=; b=caLZGLhPsbzKxyqAZyQqJz7yghsWoy+WeA9UVbydonGak+LIzH2ORF+yua9YTwGDyvwF6CTXi0fT+jCkukKPwRAA9hZH8EMACEf/6YRRIp71Rbs1OMypKoi9ctN/8e6gUzXnM9xouCyVj3mbH/Wh8UMDlgboarzpMa1JcIItAdc= 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 PH8PR13MB6182.namprd13.prod.outlook.com (2603:10b6:510:259::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Tue, 24 Oct 2023 02:30:25 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:30:25 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 25/25] doc: add the common and vDPA document Date: Tue, 24 Oct 2023 10:28:49 +0800 Message-Id: <20231024022849.3092506-26-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH8PR13MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: fb22f913-540a-48ce-1d2c-08dbd4392dab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PstLGlvbifzQId7IeRZXxvsISnmBal1zfjUr17bhmURAfXEjDEQ6eFMRgrpsF3HmnITa7WXUo3ac09/rtYPCCO2j8V+3YaSncVVgP8SKTpEmpZUw7ewpgZE3v53RRqxwbSlkjbBm7hcivpjQ4MfKZgx8rKNx3Fm9164xtninGnYC9uDSl2e0vZiyk1bu7inzAnnTX19rFrm0Ya0rLIJwXC8wO04777snQbgJQp3Y1Hvms/tzOFKuVCcRWwGahKt7susjaAgBriyRjFsQ+oP3TQNN93/fXAZrYDMBGQytIr4mlhGoyMc4jGF8/ZPYgzYEBWj0lthzGSfVQHQMwuKymmjkg9E77rriSoMhlaWLJb9gidXw/2KeOS+1hQbnwu7zy9rWfocRhrqR1NFWN+ftx+L6kJkaQkTmM2r9FO6wLtaBNEJWueUumMxBlsTpwPTIc046oYSfaatIayo7CMo3krmkj7IK/vMfv/oZfm473a631aUT/GLvTPxfmNQWtyOfE0popYA7uOqrtSeh2G2lleQ4hIJThDpJwLamtDCih8Cb5iWTTLIDVJ0/hEQ3dx2m1j1uNoMou0CcXdttJpknpV14fUZTnKl8KviJUFe7zABUzVmfKsVnsx7YxjKS0HgxQ90q4sdmpp3fpLk5K7qQ4FFp2W32xXp1YOPKCPWhCE4= 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)(396003)(376002)(39830400003)(346002)(136003)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(86362001)(66946007)(316002)(2906002)(54906003)(66476007)(6916009)(66556008)(5660300002)(8936002)(44832011)(8676002)(4326008)(36756003)(41300700001)(2616005)(38100700002)(478600001)(1076003)(52116002)(6506007)(107886003)(6666004)(38350700005)(6512007)(26005)(83380400001)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: W7HCiXlSuIqas0CtC3Xp9xaUfdy8z3CTSjmlhMhJBYASvO1hWgU6GotAukZIt39ojHWY48DEg65BwHsSMXI+vPbai5GOE4fnSgLF0qiEfcCnS8hmOIOECzGa59tqeP+KpfMJkSrIsxrneUr8sckyaZOhB8zq6Qxcv9FMJqtd0IiIE1DbnGeiDTeObp/jSmx+g5DTlnub2s/YqEuneuOQxmv01mheRRUKa449oRzaB2UxBxNfmAYh36lLWIpHojb88h3y+coMAR26tSd8n0PMTcfUkdKe3Ae5aysArsd1JnPlCXkQP9xQ/ap1P6zHY57l2QjZIOu/FZp5Xil+aeumxnf8Q5AAHO+ZU3tXcyNfikXHVH59DfBY/FR/pKXfF31eCqIdA9hjgPkKpr7xlxSgMLlGIjy+V5NV6koG5vXbPUwCej7GtPdUGiFYdsWbAqZTitrzP3JFEAyi42NnNoO4shNH5ODGFIpA1assTMOO58Qbh5LSEMTACC599QKVj6JYsRVq6iqJ/x+mZZ37ki60tvhMxwSYB1s6PKHLTlZXUo2Mmy5RtBYCCK7+GjdYJ1Cees2xYURw6dqn16xe6ISA5E1EHGxy5vD7i/b0E1yBceQ8LdOcgvHGpY2Yl7xdJgnarTjLGMAwkD+UiW3peeLVPp322KpwsbjiwFB5BSzTbm4zNkjzUGY1/4sdPRfJy29YrUIZ2BRSDMRGwYtInezWLdzEtACESTFyzkKTG6/Zr4Eq7kce+AKCVz08CxQyMhoOgQbqOhheiyj5AerIo1+vPcl+yBhFBt9M9mtY4KSHurKVw4lTPAIRKS24lijI807+E8lXugrY57YlZFgNP/7A3vc1bHXmZ7DyOmGZWwbeskO1qUhhtC7j9qBN0yAs7Tu7VUYc7yH1+Zci9aG/R11RgCRilVvLQxwJt+zQ0L72u8yoedRPTfTbWZofHzCJQYylvR90N1/b9zF7DqhKw/BtQFoTZh74jSie2FJbNzoCL/zIGzlsfeMhszUOuNZWpy5eZysSG+YeAVcR9uzx8mZzbLgZXFcqCVfArVln07wYwHomU5y60sLdJnAy3FAToFsk4QNcvXAL8rgtatkbxkQ035uNow5z/iVfPAj2WcX/GafkMu2Z0JxHMOH84YQfcBf1GRn56uMf7VnTfsOBQKenGxcATtSCQroAKV3Cf/YsbJo4zKJMUZ3wG6qjjR5jKKxFdDcgUMMTE1vUSeIcbUi1ksTUkbC2AFYnGv7LDAXeEleLBjG0hOeGZPQufAGSqN4RihA/duWue/UuKfFJzFQBsLJNqWckRkUgNJMbQYFen6BykIREPdWy1TEZhvYkgURVGTSDFxQZW4vqYKozj3kxQVFOu8k92XE+17BA+YVNY1R7tQh+GiAO6FOrQrguRTiVGOHuMNGH5Phnn2nrvLakK+3gV4GmoJTKAKpjDQUpUk3qluaNMfeFMjn78a0t+D+lTbHevHueXWKsTEgAVH27GtlsrEYnh0BCdupV5rXln9GpslqWNZXtwMYuSuLFTvgLjLJwC/io1raBPun54FLVpLmgyDs3ZWimhTlnWfj1F2EA4lVT6UVvgXEd9ok4IqlGkTaHJ4X4lEMbjHB+OIghxw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb22f913-540a-48ce-1d2c-08dbd4392dab X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:30:25.0479 (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: McVuuqkPpIBr6LGy6SOoDJj0ufdtlAQCxNTFStntmWDC7lY9pwIIhxSqv9HVixXP+1TUlv4U1T3LXXKcn0B2CVP/0bMkaAh/Nxk0wPF+O68= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR13MB6182 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 document for nfp common library and vDPA PMD. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- MAINTAINERS | 8 ++++ doc/guides/platform/index.rst | 1 + doc/guides/platform/nfp.rst | 30 ++++++++++++++ doc/guides/rel_notes/release_23_11.rst | 5 +++ doc/guides/vdpadevs/features/nfp.ini | 8 ++++ doc/guides/vdpadevs/index.rst | 1 + doc/guides/vdpadevs/nfp.rst | 54 ++++++++++++++++++++++++++ 7 files changed, 107 insertions(+) create mode 100644 doc/guides/platform/nfp.rst create mode 100644 doc/guides/vdpadevs/features/nfp.ini create mode 100644 doc/guides/vdpadevs/nfp.rst diff --git a/MAINTAINERS b/MAINTAINERS index 4083658697..b28cdab54c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -900,9 +900,11 @@ F: doc/guides/nics/features/nfb.ini Netronome nfp M: Chaoyong He +F: drivers/common/nfp/ F: drivers/net/nfp/ F: doc/guides/nics/nfp.rst F: doc/guides/nics/features/nfp*.ini +F: doc/guides/platform/nfp.rst NXP dpaa M: Hemant Agrawal @@ -1306,6 +1308,12 @@ F: drivers/vdpa/ifc/ F: doc/guides/vdpadevs/ifc.rst F: doc/guides/vdpadevs/features/ifcvf.ini +Corigine nfp vDPA +M: Chaoyong He +F: drivers/vdpa/nfp/ +F: doc/guides/vpdadevs/nfp.rst +F: doc/guides/vdpadevs/features/nfp.ini + NVIDIA mlx5 vDPA M: Matan Azrad M: Viacheslav Ovsiienko diff --git a/doc/guides/platform/index.rst b/doc/guides/platform/index.rst index b1ba11df73..07dd273821 100644 --- a/doc/guides/platform/index.rst +++ b/doc/guides/platform/index.rst @@ -15,4 +15,5 @@ The following are platform specific guides and setup information. dpaa dpaa2 mlx5 + nfp octeontx diff --git a/doc/guides/platform/nfp.rst b/doc/guides/platform/nfp.rst new file mode 100644 index 0000000000..f6c7be6fff --- /dev/null +++ b/doc/guides/platform/nfp.rst @@ -0,0 +1,30 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright (c) 2023 Corigine, Inc. + +NFP Common Driver +================= + +The NFP common driver library (**librte_common_nfp**) provides support for +the Netronome and Corigine's NFP-6xxx, NFP-4xxx and NFP-38xx product lines. + +Classes +------- + +One NFP device can be probed by a number of different PMDs. +To select a specific PMD, its name should be specified as a device parameter +(e.g. ``0000:08:00.1,class=eth``). + + +Supported Classes +~~~~~~~~~~~~~~~~~ + +- ``class=eth`` for :doc:`../nics/nfp`. +- ``class=vdpa`` for :doc:`../vdpadevs/nfp`. + +By default, the NFP device will be probed by the ``eth`` PMD. + + +Limitations +~~~~~~~~~~~ + +- ``eth`` and ``vdpa`` PMDs cannot be probed at the same time. diff --git a/doc/guides/rel_notes/release_23_11.rst b/doc/guides/rel_notes/release_23_11.rst index 0a6fc76a9d..f6dde6fb9d 100644 --- a/doc/guides/rel_notes/release_23_11.rst +++ b/doc/guides/rel_notes/release_23_11.rst @@ -153,6 +153,11 @@ New Features * Added inline IPsec offload based on the security framework. +* **Add new vDPA PMD based on Corigine NFP devices.** + + Added a new Corigine NFP vDPA (``nfp_vdpa``) PMD. + See the :doc:`../vdpadevs/nfp` guide for more details on this driver. + * **Updated Wangxun ngbe driver.** * Added 100M and auto-neg support in YT PHY fiber mode. diff --git a/doc/guides/vdpadevs/features/nfp.ini b/doc/guides/vdpadevs/features/nfp.ini new file mode 100644 index 0000000000..d830feafe0 --- /dev/null +++ b/doc/guides/vdpadevs/features/nfp.ini @@ -0,0 +1,8 @@ +; +; Supported features of the 'nfp' vDPA driver. +; +; Refer to default.ini for the full list of available driver features. +; +[Features] +Linux = Y +x86-64 = Y diff --git a/doc/guides/vdpadevs/index.rst b/doc/guides/vdpadevs/index.rst index cc2f858042..b0191a3a1d 100644 --- a/doc/guides/vdpadevs/index.rst +++ b/doc/guides/vdpadevs/index.rst @@ -14,4 +14,5 @@ which can be used from an application through vhost API. features_overview ifc mlx5 + nfp sfc diff --git a/doc/guides/vdpadevs/nfp.rst b/doc/guides/vdpadevs/nfp.rst new file mode 100644 index 0000000000..63636b2882 --- /dev/null +++ b/doc/guides/vdpadevs/nfp.rst @@ -0,0 +1,54 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright (c) 2023 Corigine, Inc. + +NFP vDPA driver +=============== + +The NFP vDPA (vhost data path acceleration) driver (**librte_nfp_vdpa**) +provides support for the Netronome and Corigine's NFP-6xxx, NFP-4xxx +and NFP-38xx product lines. + +NFP vDPA implementation +----------------------- + +NFP VF device can be configured in the net device or vDPA mode. +Adding "class=vdpa" parameter helps to specify that this device is to +be used in vDPA mode. If this parameter is not specified, device +will be probed by net/nfp driver and will used as a VF net device. + +This PMD uses (common/nfp) code to access the device firmware. + +Per-Device Parameters +~~~~~~~~~~~~~~~~~~~~~ + +The following per-device parameters can be passed via EAL PCI device +allowlist option like "-a 02:00.0,arg1=value1,...". + +- ``class`` [net|vdpa] (default **net**) + + Choose the mode of operation of nfp device. + **net** device will work as network device and will be probed by net/nfp driver. + **vdpa** device will work as vdpa device and will be probed by vdpa/nfp driver. + If this parameter is not specified then nfp device will operate as network device. + +Dynamic Logging Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +One may leverage EAL option "--log-level" to change default levels +for the log types supported by the driver. The option is used with +an argument typically consisting of two parts separated by a colon. + +Level value is the last part which takes a symbolic name (or integer). +Log type is the former part which may shell match syntax. +Depending on the choice of the expression, the given log level may +be used either for some specific log type or for a subset of types. + +NFP vDPA PMD provides the following log types available for control: + +- ``pmd.vdpa.nfp.vdpa`` (default level is **notice**) + + Affects driver-wide messages unrelated to any particular devices. + +- ``pmd.vdpa.nfp.core`` (default level is **notice**) + + Affects the core logic of this PMD.