From patchwork Fri Oct 27 02:59: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: 133444 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 190224320F; Fri, 27 Oct 2023 05:00:36 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2F05740E68; Fri, 27 Oct 2023 05:00:31 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2121.outbound.protection.outlook.com [40.107.243.121]) by mails.dpdk.org (Postfix) with ESMTP id 6D58540DF6 for ; Fri, 27 Oct 2023 05:00:27 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pc8TElO2K4ZRu9JMW2aR8vDLfq4CQPC1s9OM8PcjOu2VnvXD7WQMofXg3QNnsxIPn3S9khV3nYBo14OswfsLmx9+ithPKiompqD3oZPO2Ab1CN31POe5LoU4pLdz6x/JXIrOR0SkmCXYRARDXUiTHl91JSdN0UZh4Wq+jL4hSSQQzVGXWGOTlUIU0PPFcwYXYkKVgctQLwnuDJzb/Qx1tWylID8RAFwe/+/vsUFQGU0i7iGW8g8wJ7lfnQt+BfzlCwoj84lvJ0bB1t/KXBK34B+El2RxNuZ2m0KsgzuGSn5TDQiR4QC7e4bH9FSY+M1nOmHvNvaduH6dvYyNkEV1uw== 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=4Q9QnKwYORzPcV269h57iRczxLtSD5GDi7BNAf/pqww=; b=RzooYzf9ECptuQnz/mH7s8sVOik9ewr664onnr7NzFfEilf/GYDEObFIs8Nc6EZv0HYOK4t3FfmpJndde/NAQKkYpMV/YAXgUrhYVLp6WiNwRjS9gAPC6JrNv6LSLvzp+FbhjVVk3hTV+mGCNJ0eoe74oiEywT5uyN+1k5vHr5DwZzM9paqoIdgNg679udLwNTk4AhNMJeoaxEEw9eLUyWWMZ63dy1NnXf+L0zj+NkPjberbdOW/2qDLaB08e8VJ2LHqaXaUWtugfo2KcbH6rOotGN9o7e4N3EjTl/s2icSrGatURVuh2tvHrgihrtkqzzA17wprLqSA4/052UTLkg== 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=4Q9QnKwYORzPcV269h57iRczxLtSD5GDi7BNAf/pqww=; b=trTsunXCE976g9yRLnyuRtnbkVOctRBCNZRgTMntUOztvge3MRTBKO2/qZ9FMGzmCvtEP5L8MNoAuIlTEWP8IM3ryf9Ou9GzRnQEQydd6ucPJ/UWnhEn5/g4HFBPHINbC54FoSACBFO6VUiz5LIIAAgbfkC9cGK8zA1XVu4bkbo= 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 SA0PR13MB4048.namprd13.prod.outlook.com (2603:10b6:806:97::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.24; Fri, 27 Oct 2023 03:00:25 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:25 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 01/24] common/nfp: introduce driver Date: Fri, 27 Oct 2023 10:59:38 +0800 Message-Id: <20231027030001.602639-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA0PR13MB4048:EE_ X-MS-Office365-Filtering-Correlation-Id: c49970ca-c119-4d60-7d6f-08dbd698de27 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jwI4PAXXwlQF18fhLBv/GvmGl4lKCXcvRHo3VHA5s93AoCKlx1ZwjGYvBKWHIn6FULO0k5SO4k5bJ5kJcd1waK+NlqHpndAGV+bwlG+hvdIGFS2+qYQawdKjRfexNaBrBovE9mcaYdVJaKymlWEIB2v9UidqBoti9HX7puk7E6GvJ/bognw7+Pxzjz7EKFpZEqWQGyebnRD5l4RGLOpb6Sb3jXMOVOa0WTLKQmk3+k358mpMDVEKHQFR5avdXbqseRVJUmpn4uFo68N/uoEQPU9gSbZNrjnwihNEqT/uGD1CV4gxfp+8K+S5zvBb3AlyiSbedyLBz2JlaAzvgJhNbsQEUHRjkdyy5V+Zr1Inrz6edBcJlaBmzSZ9589/zyYy1EnRl+Q+ZoS7sFmXK33Pfero4IEyXjWfDwSLkloGD9V/6BipOF1tCOa/18gxRDjNXhYj1zWFbnTOVq5GV43bmyLQi2uSTFojJDLq13t2tf4NCONq66VBhRQyx1UVY95QHxJ8ZcxjAxZNd3wUunZoXJByKdmlzgPwCVE7zxpyyROvUuWf7Ws4VKjzM5MF/VR1/ku2LEqeY1tCyE9R4N3DgM0PXzbLtM/HeyMYjths9WPOFU9oNQq7QqUo4ThAI4l9rHUiBl5ZjE8n8b9aBSXbW2V5ApNy5vRTqPbaJ5/qgJM= 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)(376002)(396003)(39840400004)(366004)(346002)(136003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(6666004)(52116002)(6506007)(6486002)(86362001)(36756003)(478600001)(38100700002)(30864003)(2906002)(6916009)(41300700001)(83380400001)(1076003)(107886003)(26005)(2616005)(38350700005)(66946007)(316002)(66556008)(66476007)(4326008)(8936002)(8676002)(44832011)(5660300002)(54906003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YshQtnNzyLDJPml91uGnZ2dLph/m87S0Cb+SdtdCOhDbi8gpkn4pZZQLG6RVPW99/Ywa3VkjAFZaIXsuLEdwfpoNeKbQ0T/tA2VTakJbm1c7K38ppvkGkOBLRyH56neT/aSQm2xCt8DDa7MlS7q0UacQG6OJX84uoQBRnrM2Frxovp77C35Or3aKuvWnjabVI50qRompx1LTy+KQEhCFjXs9zlA14QCLlABeDqd0TMv7VT+bCFq5b+L0CQ1WI7Hrk4JjRgsxNoshGZvhXPRFHHeJ50yr1+30WsofzFaM/6ga6iAUZPxUsFpqjeWk4jGnJ2OQS9Oo+8XjdFL5dc3t7qbjT1iXw/RUSWSyhA8WZMNUatejtykBkC4m+aUjI6RUHtO7PwIQmxj/1LsRBxymHxklW033zgNRZjmsSqUdRQKPkHR2/ukTi2crDcoYjEIVkLN5/oBogzQnl2AOAwAOV2i9KdlcKNgyoxbZeqIEk3lVGY11/rCz4/qdvnnI9ynFhbIOwrsLw1gvR6SiO7Avd+ZbBgI63AKV5ntSO8zkUbY0X6ZbdRQHQW4T2rT7MbuMvotX0tyxz+AOp23ijOKkoM0361Jf2Y9TExJIkMurg0dKgeG3FDz4e45LcklDXOL0f4S8vTlBM2CPKFQ0PUh1gIqvTKXqQGs5+JrUkL2oKNbu8Hbkzlc4AB+oByfNS+4gulfvLhIROxyXNbAL77eflClZzka4slYuSmAbg7dUZOFXctWBtfwRYVedSLWJZiu64meb7kxFJlyvY1sPXzsqhmLXR7ZbWZNt8yvOUtwt+9j6Q1pgantpKhRakGq/eSQGOnK5tCx8CydMAzqNv1herqjnETvdrKRaGhYP6Ty/GzSPPwxrl6LRRgNaVylfCFjG1uAFa4UsmJ2KiVt8jbyP+y+i93AfAwnH2jinjvH0ke9vm9srmVnmStaUYDR26ns7d8HznAalesz4ac/uBZjX42k0mZoJk29HETTPg8zh1BgHOVN+fM98PfWmL6/H23V5T71VLgexsPKYU9CNA2NnD9D5LQMbOr1vZpZj3uZSzs6B8fcyzXduIDgNPOkY+oya2+/In9xDAeH/YSprTBkRHFl6wMtZl65+b0hRdqypgBXomgIPl0LzP2k/FxbbagDzwqBzhntoEuTc1JogbA3vRuOcoI91a9GpMJ1+ztPElL9ExHK3cTueShhZy/AAnny/ZFcKqCEHO3XrMcBmRW3dxVt6GJXFgLx1TzTDP/c8YCsqVGtYM1LSUAu4J9beMcIhSVxVisA+TTmxKFJ97lpuZZnv55sR0+XIS7yNg1NU3w4n4nFBLsZzZbuDv7uzcbcdXCOC8YewaLqRoXnGBwZc+MVmuC0oqQKqOkdeB2krBogrDI5W/OI/qO9qLFThNQJz4EQYFw+CHnKx21AUu1kyTyJ3e3c4A0+yDnnvg+xEYJlo3cjufC9a+ZI8fTK9+JucnbAfzEGOHyuT9UZxTYyS3Hbz4sqdqsKkVbxS61f+XLaH2MlYbguVgqFNts3eAMUCR5+5SFnh9gqLsusgp8bSC4oLpDd9rEERDswWGQdfHEkp337igd4OVzCi2vNw0i63I6msLKuvrqywE241gQ8TrA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: c49970ca-c119-4d60-7d6f-08dbd698de27 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:25.7227 (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: UYPzYnsncaP1hzXeGOnbMJqirziFoah/d08Uao+DhnESbny6XRohj3UeGKq8oMfb7FqoTcWLtx6I9ZPyUGEJuN2KzUPIm4mWHkcTGiSg3fE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR13MB4048 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 + MAINTAINERS | 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 + 9 files changed, 366 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/MAINTAINERS b/MAINTAINERS index 4083658697..5273ab9812 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -900,6 +900,7 @@ 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 diff --git a/drivers/common/nfp/meson.build b/drivers/common/nfp/meson.build new file mode 100644 index 0000000000..cda5a930c7 --- /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 + +sources = files( + 'nfp_common_log.c', + 'nfp_common_pci.c', +) + +deps += ['bus_pci'] 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..65f189b05e --- /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) + 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 Fri Oct 27 02:59: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: 133445 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 BCD1F4320F; Fri, 27 Oct 2023 05:00:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5859E41104; Fri, 27 Oct 2023 05:00:32 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2103.outbound.protection.outlook.com [40.107.243.103]) by mails.dpdk.org (Postfix) with ESMTP id 84CCB40E54 for ; Fri, 27 Oct 2023 05:00:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d30EjaYxg/lRZERi+1ug0V6n1/ErOvImYTAheLnHDrvlPiKQn4rwrfLY4ejVMRsk58r2q0DRlRpFzbQuqC2O7gnMS4xxRTVC3jhCdWhXbjY30CV2le2VqmHeTzosH2cznKBShb84Pkgoh43ZDZTRM6DOYB79HESgG1x6oI84opsViTreWjwxSupwizn13Be9cNBe2Ck41o6vrA2VXF3YUb6WlMXTZS/+LhfaYg4f/aqUR1WZviQB0nPFlqo8vqqQls3bN6PtFQQegCuNg080TJUgdik53xx2zhpEJA5aBGnhDDt/wOj/3y4VMHNpVpYCJBXq7ibcg9JSp4EskuJKBA== 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=saXq7zV6M0EuBG3CtFQd6JNiqoncBLswsLsHO1l9sxU=; b=hpMfOfBOwkPRkCMNJyQzWKYEq4DLvR/Bn86sxNhG0/pgfjtje3Huw2cGnCrioy+25kr6wb4Khnn3YtFnRbB+UQMp766ppXwZxJLlpNZjt0Pvbk+L8ficRtXXSYUAQU00iP7fyMsMHvEzQpLxP7GHPsmsI7XTvxWqMQuYOwYXhn/O2sxB806ucVvmIToQjMq19Iq+tCnf9+D7pzN1TZ+UkRfIGRSFKd121JlZFKWjQLjxvXRI3OgYKaqnU4Edg3BiKj/5K9QHPSsRYvEv9iQ8cs/yEjTyLGPphx1iSq3BSmNaBHnWQTA+7QSRpsVvogies80er0D4L5q9ft/crcxgPw== 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=saXq7zV6M0EuBG3CtFQd6JNiqoncBLswsLsHO1l9sxU=; b=qrQgB+5RMDuql+7c8Y8cLbH7WIqbWeEkYnQa2O9zP5pCnDPB67dyPqA4wiVLIH6A/QjlasclPP0SA6u5S0EV4CjAllc0OldWnECPiIxAmArGO15nlK3cJqJ7+zAiWOTT+6SKBYDbo9sVofc7uIYok9iZApoIfy6NBj1Y3D1APwk= 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 SA0PR13MB4048.namprd13.prod.outlook.com (2603:10b6:806:97::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.24; Fri, 27 Oct 2023 03:00:28 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:28 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 02/24] net/nfp: make VF PMD use NFP common driver Date: Fri, 27 Oct 2023 10:59:39 +0800 Message-Id: <20231027030001.602639-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA0PR13MB4048:EE_ X-MS-Office365-Filtering-Correlation-Id: 456a6dd7-94b6-42cc-8247-08dbd698df70 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NgY+WetbOjiaVUfxB4LCU2JxbzVEsLvrF1T69cVPZEcvLHNavhw9OF4vkr2A32j5+lE4KPUfiX5+8/00TMZNkEEQCU3pp31cGiaER1I0fJnZoPqwufcZIC+0ADtoY7xgSE/WZCY46YnbCkZ+Wl2NHukofJYOqdtDB+fAP6+xClb7MCujYjqS4SdDCNNszdMapYS2O1l4kk654Hc657Uya8tRX7tfp8u2LWttJfj6nbP3pTkFSOWre73ZQbORyfyrXCymTZB5vBPJZwIU9evDDgsPJeuCkJJ3T/+kTGHx8nAX+ggjnd70FqdoWSBgVuXJGdpuiO/zIFO52+38ZC3tMDXogWWx9L3BT/SyDW4vdgvM9MfHcpPy04dk4C+8cRFx4hKLHVzDKKVcZPbDza8NuzJdriY1OcxomHbhHGuY+ngDNApcE8rdhE7e5qv0T4iY0BIq1sdEFjFxRoN/jsdz5ZW+4kUKdZOAvVKcm/Ub6X09HzfwzWVVyvRd1a33Ttt8ycN8zZXhFvesueVTwV5ZjebAVy1OviaiMheYwGh+rL/bjkgF/cDGW9/PoYxVjqWSzRQAd7vk3Bt2ZexNapPBvkkTScuEaGZo8F3Sm49rUzBK02dIX97hzT4kKsn2kESGv5dO1vL1TluMV2tZFbs48g== 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)(376002)(396003)(39840400004)(366004)(346002)(136003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(6666004)(52116002)(6506007)(6486002)(86362001)(36756003)(478600001)(38100700002)(2906002)(6916009)(41300700001)(83380400001)(1076003)(107886003)(26005)(2616005)(38350700005)(66946007)(316002)(66556008)(66476007)(4326008)(8936002)(8676002)(44832011)(5660300002)(54906003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Lb+89ULUn/5ZVlRNBS4tQSmdCS0PKtkYHj27zA/FgnNQPNrAxyRKTdcJL/A2jEkuXXG/34If1z5/Jrt8rZr2OiVWLxzS6KOsHyN4hM+XyhbWS4iYXvKsCgOsD3grJ0FKr6Ddio9MhBoXFOMHdHa9faa8dDgLoApbfjPCbHApcP8zM/PdtBmUWhZHLU4H+mQ1/FifnKkAxvNUG+zdGK32PPp9FaHu+mAsSnRPM9Aczcr3/4jTitRZ1UMg8PhGSQeVouWbNhBv79HmoTfVm/5hFyiFYbj4o0AvZLcbrX2vNMAtcYdKFvDX1jVXsbp/A540tb+4KqPx7GeWqXfh/40/Noie9lBnlD/noTmCKLXHFTeSzuH2GYna5euYGi5KOJbnfw+teoSQTV4cTjX/rvVgzjPP8vzUbOxwB/gXYy9zrhWzMHEtHSyXrsroodPpUWWmV7VdQFxR6znfdj76tfMjNWUjWCKj2fGw2q3JKbte2j7MmtcXGCC+yj65Xh2969juyXWfqdufunVVSSW9ahOn8Z2uofkDJGl8AM0gxok1mgnWAILm8N36v+xR4MpERemEN+ksN7KGFpSIBty3S5BUxfwmO8PbIUEDAX6EYAY7xlMcx67VNkUHszQNiV4j+yRCAfO7yc/eeNzF/iG0h/ZvRoCaCycYiHf3Md4DbgpNk45YBfbiYnAF/+QDNxPTi3h5IT5Q3kgHkk2XRshR84MTzCGpNbuogJIMc0R6zQoW8mQIHCAR75LNBTlSp7CsB5RyTxHFyOXfusP7xFeRkyfM7V6aaESy4nhdy5ntmgY/Wfwmy70YFsVud3ZoIpFbKUVT0uchzl3gTToSdf3g8WswOp5Oq4ev7svgenBBOIxgwCYm55zltJBpViAMF24G4PXKzgZ+0NpVFolDOty8U+gPWJDyzsHxsMCeec6hG3/LwK0rZ+GxNaFprL9FvgeKj3/O8az0/ZkXEEsg5nCkwJ//ManFJGmvEXXKZ1g2DUMJ+yBEIH4qlx6Nfe1ec3V5Z6lHlm31Hoga2f0La7nPewbTd84C9mm/9YOcn9HhUwAVrDKowb/E/FRJSnV8sPJPUEmQ1WRq1CeMomwEQzRGFR2eNBzS4h3yWlQusKGfvJiLBQuSwNKP4o7/4i2WtwKz2Nq4nrI3UbOSJKp2icHyAvAJUk9KzR1dqWGPCf1Cmp/6ceaJ9VaPWk7ZsXXYOG4afX0R4YeH/bENiCH7Q/ntugoh5N7lLWyPsY1t8ZQffGrELOJHwR9g3PuuO9b3fy4k2OJfdmWJWaLBQbT3LLdi0I0olDXZi6Wes+nO+SO/Y5RDCz3q5QJ8hPj/bJN4EJBf1UureRdijUY9RuhLN5qrFugi62NFPiMcvDc9JkF+hESQ8Gq/Ay3NACRABaaw8k7WJIUgtJx0en7HZLNXg9zcVMAYzQWPHBRBYLBDtIYn2dO5biwDdFV7UeLDAJVF4USsu+4y48ie8/UY+nBk0d7g35ZXqdYRKglYZCRPKNeST1xQZexv0tayHnKodF32Mh+OYihkZmW5oDhAR6WYMLlNO6F/SiTz7bDWPCTgxt2YV5LnCCa2uv1d2JnHORDCKNkvwIId6Dom3pC0SMQSQikkxv/BUw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 456a6dd7-94b6-42cc-8247-08dbd698df70 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:27.9580 (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: MWHyQLaspca2GeDEEQZGxhctmdJGlrTqI/El/lWnXLmeg4bW2LWMtTjgQUZcIuv2jvmFaAYTW1nCsiID2BdAAHangfKI+Q0N8PwBdoNehFA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR13MB4048 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 | 2 +- drivers/net/nfp/nfp_ethdev_vf.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 40e9ef8524..4702f1cdf4 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -40,4 +40,4 @@ sources = files( 'nfp_rxtx.c', ) -deps += ['hash', 'security'] +deps += ['hash', 'security', 'common_nfp'] 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 Fri Oct 27 02:59: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: 133447 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 43D7E4320F; Fri, 27 Oct 2023 05:01:02 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 408E140F16; Fri, 27 Oct 2023 05:00:37 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2135.outbound.protection.outlook.com [40.107.220.135]) by mails.dpdk.org (Postfix) with ESMTP id ED13B42831 for ; Fri, 27 Oct 2023 05:00:34 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JEXNRuuV8a3cAmmruDLLu/2r1VXPaysJ0v7f/2HqdKwwOfoHU3j3TkOhZRNy/9quZsX9oYbl5DsHo5achR5V6mEitkKgFfPItNb1rLSpc7KDvJeINIPcyyRNkqRSzM4YQeVdg7UoO10qTwk9Kq600JpDiQiKxwrYTCwI0eEFbB+OrOYMz3o/UYwEvdKJbvYmT8kNo1Ku4EymbUzlMMJCt+SdtfBn0qp5UkBP2y3xTj+i2IWkEE8V0U5uZ96YA8uLi+r0Ggg3olRmT05fahTSjdZXbvGJxiP1vTP/oOSrtIcHQZg8V3x3rkzpdb0NUlRtOzXa+67nymkrK5vp8MUqHg== 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=E+Y2v4545WdH0I5Jn+ygzlalMWSTo3Rrl8LD6x3juNA=; b=GIBMhfVcndoLVzK1XibFrvRyaPwSAJE7tvc7aY0JuxfzEq2kAQHPkKyVFFE/Ww5VdxO7OR1BQabnVPlmXvM+RSfFM7vhQ45WPeoz6+VfZ8eMNNHJG+agesZtsOSXS5rRnwTTfGYDYYRTowqSTsqfLaR25/aF01yVzxEc1kT1KWxsR1xCRbgcUKZjWgLMEgwjn85jZlFmuuRXvodWe2JuxicIjN2aPoZDnYhr+IRURM5IvXkZbuKLjV7rSpPiYhcDk6ca9HjK2PJdMAHPpFH3gQ/MGhQZal8V/XNpLGuKQ3pY2zEadPVSamuNuh9mjldaOcLGfE6Zikr+1BMSdd4sVw== 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=E+Y2v4545WdH0I5Jn+ygzlalMWSTo3Rrl8LD6x3juNA=; b=uSZfG06cqFNufesdF0Rgo9cIZHrwRU4Q5VbCNr/6hmo6HXWo8RIllGB+JjoTeSPGrPy+GWYf79kIiETAOgyduppgKxkuT8YkBuNBgHsqSrsGBkpX1/PWpdshnHEACTdXEOWkG/Dt/GNLbQtmf2lZaU9tGGuWarrFJaVAa2GK4P8= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:30 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:29 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 03/24] net/nfp: rename net common module Date: Fri, 27 Oct 2023 10:59:40 +0800 Message-Id: <20231027030001.602639-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 3903f46d-e46a-4566-3922-08dbd698e0ab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MolITu/zSXHEY+OxP/NctRbeBNlLFdVw1pnzuqX6d0uQR7SL7RK22na0ORr+cqucn2qi/cDU56LfUlFrd8bE9pcjTjbgmaAWbDgh86qBndq+GiFELOh3igIgkQfQ9wOU17JCmqQCY/SbWid6nFsZcDV4d+jvEU8OMpnA3e60wYCBcGWSVVRGtm6pc28weTN65SpGPvQM6m5trK6krLxQFzrelsL0EOm0L3Pv1CKeHpg/YsLIQXcRUKFBVSyADWOiHVVhOadVYlZVLUQH9u6eFlE2nu789tLJ5+A1EBH9wCWYUsVZw0rzqmNkHYhn39xoJTLRkANVaA9ISutwGckalqs4HizoCYlna0xJ1IVRXC2ETOCjZt3dVhwHDbsP3JJXSrQlD7RzBkLsOGp38kS3HLjeoIe2S/1Nr9dsKnKNzldUT9s/oNfpdETij4Cja3Pdj3GlsP9I+p6RlW1PrDjf5mSc4sqjNcKSPO4Ni7KAa5iK3H8ykvzoYqe4KGe0UX7XsVagIvOu6P75pSxqo345Wy6bJPvrDnoT1QFnhqKSJ5KnvCvOB1cRacS5FSIK09ECjpNsEcthdGMuGQ2mKNcr+j8FvsxmNTwD+OAURnwGArEjQM6jYq1TCQ1FLuC1S5/NQbyWHktVaP8tPKmUiLyc32pd9l8dbUVFB0QH4JKd1Po= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TYQ+h9NEjbP42F4OUx7Rre66ub9kTzPqH6sxvLcgpcFkzmBW+ec09zBbZ2rbQwtzMzSZt1rdIyZmPmGaSD2ogwZVtHiaYkn7j2KGFeh9Fkb8TfpOzjLra7D1swXpBLTTUh7qCflHIPu0rvCtM2SqK6EKqOu2Ey2jg0s0pUapKJFB1qMU3P6PNXw8luJqJ23TcRu4NfdXPouKwY3gINfA329ylRnZy7yxpx93SY3xx/WPurfFvIi6YAzMV7AHIMlgcnTaKLqE1BNfIvCt6Iz9HLPr1dZv+8fFl8g2zEudf+MacBIMYJKHBY3LYZ3jyBPG0uzqe/GQYljbvsMxLkU/8S6mz4Gtp/y5yvqGOlwzWU+XDU6iMqE2maSeN5dGtzeB9uelsWUdjYdswkiA5u/6IvmOFhQRVJM5lJWJ8BnrGbcOP5psDVImp3BeDZekqN04KmJmQ8LKTfXroX2Yvnsfm8u/xUHzFCIcl2+tNFTw1w9nbZWPFTH0iOdlOf/LMVplwl1g3kkkoaUbmKwsm2iPPaboLk3kW5imnXhf7G9sBUNdOLzshsbPJfLkz8Drmovu0pPbxXvhrM13WZY8OoIwrwGD/SzgqR1LXnQT6GiHV92uLZ486Uz+KfzhWbfOC+fi2GsxacYBObC8yUq60fei1WGM/NI45Rs5RBDfyErdaHgnF+VTYfvueHGmP6x0fGYeAB7XhYFw1mLs840Ie00E5BYPOW/lEwc6l4oQ9x7eavX6x9FNnNL0rCzwOM+8dApAd0OV5lcg+n/wqii7VaR+gMiyk8yncJ/E4SVQDfn6+XQAoZ6ia9Q2X5AcKOdSFuziJAhb8WCp9iBrCdRx2MAAhqFwEB/XjfUiuhHu3gfhjr1M9B6cY0q8j/xjy6yba+6gPbEIJKa6E4PopK2TgTlSuVFaeQNrd41PGeW456fPkURuBoO/Md+ViMUYBojpQSJX3sxEL6xMGKxOj2Sg1XHztfcSdQ1v+iDm875ebStBsvFhsb539toc5/lzZdIXKyug6N+Hb7CE68tT1wvRQYfbxfV7u4RfE9e1YxO3Ym4ScU1kA62cXKu7x1SB28nZWVHG8cVc7rilFXJ1n3TmFxllOCpLT1BUVMv+Hfr/6gds4bQiuWn5Nc6gz/Cj+8P7qQIg/ZaTb2j+BzEQi9Z400J2BZ3zlNZcKc0VJV6LV4re172jvnr9KIIrlyPRapSFkRUXnpsTNZNr1qCFEZoBQ3+eKmIb0X4Kr7WB5CpzcPQ2iVvoBMNRGqBRfvngP0VfhZ/9IVsRz8xf0HWWtEz//lwLEc42T+Eoc5fwTnzOevmW7TxI+tjVxznIW2DfQPYu11pdBnigLHoXRYaw1jdVA249VXIn2zvB4RVCMJ0rXDiI5pFiZUectBHpcxcdmGlnkyGRblJBuTe0/DeA1nf6HCuR1yivtFhhCLXQ1KvUCzrVRNBML7FZYF+EQDDnfDt4+TcpUrWCDo6DyDN6vpAIs3i2QzXtBdF4S+9OgkCuXXiym8eLe8T8nCoWjwZU6PO9BJblOGH6f4E8vYUZviizbbzRATf5oKktnU4uB43aLYYtFfEQb7AWIFmvWTofqXw9Kyk8WgglNWCux9wY0Nw1PzKh0g== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3903f46d-e46a-4566-3922-08dbd698e0ab X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:29.8805 (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: scupIXC8OIWVIxixSJ8Ergyx2nlMPrfiz4EWjg37FUXOkFNvvf4Yuu4CoXB1PrcBmFhx29NGzuq3YmGOeTs3LSVaD3JhrWEf3xTTH+4tWUs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 4702f1cdf4..4b4c587d5d 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 Fri Oct 27 02:59: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: 133446 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 2A9984320F; Fri, 27 Oct 2023 05:00:54 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0B1E942831; Fri, 27 Oct 2023 05:00:36 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2135.outbound.protection.outlook.com [40.107.220.135]) by mails.dpdk.org (Postfix) with ESMTP id 8E76B42830 for ; Fri, 27 Oct 2023 05:00:34 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZHdHCIHtRwn/ydtfYsMMEagdTVuENG0PuGPt6fmyOo+WyTM94dWHMC8Bd2FShGa+Q+3BzCAKKsINawOfUJo1UXkU9bilPtyFMxRRz2CtqCeKNQF3MdpFrAUguVJpTz6xIVhJWmmS3vd6OW/ZpvSVzlQi3VysadQZGPuXvWR6sZST4c9y63ewDD5GiYNHEy41MrnMc2yj9fYjQnNu51WZt/LHOWXHI7k2OZmUyg08LELsufdcwSP9J8gCjmLXPdIgxXQjLFBsBi4zGG8MVdyU08i79UmRlJiAs7vW0wo2aFYUOnO5kjsYLFgTgD5w+SvAuNYl8YHPsztFneLrclKp6Q== 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=/3gYkKRKCZO38ayDuATCOXAHxe4M9czHYEA7TYC6Dbc=; b=nGbSc8HrWwNUDb5IElFnGY6hcVrsFT5wLJPF5bhVkyjjZMhFixKlhp34qaGiVnbTISVQhk4nltncz7nW0VxWq2ad5FkjzWINdjQTQDpb0yMaQcBJM3JKfg9KI0Y4l45BBGozxqJsaZIoP8GHF9FnNXZnwo0rpfM8SELW2OrTgaBugZAkE8SAfcCr2B0zE30ZKpwhWOe2rYSsY3CrJ7CgUEFbADRs9fEkSMFWNI8JjQEgbe0tJ9mEzF2FcGLPJT4qqrS+RfN9JzQGyvP028PD8SQyuzH1DYAbwJZfyo5RkuJB+wnsK9qVbC0KW77s/eUpCMlxF9z9PtPyM3JeZrRWhg== 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=/3gYkKRKCZO38ayDuATCOXAHxe4M9czHYEA7TYC6Dbc=; b=vXtRyhYCc+D3vYWZO/oi3efDQjvZx74rsh1F9TOhmEasucS/5QLZBevI4YjvGwG2GlHEiy172c2mqQmhAbi6MI2sESpXCzjnRm0+BJmdso8hBPolFBj/cx7H/uBZWbQPqFmitjcnfptuozMj2uevaujgnurs4aGC7UgWaZ5E7jo= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:31 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:31 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 04/24] net/nfp: rename ctrl module Date: Fri, 27 Oct 2023 10:59:41 +0800 Message-Id: <20231027030001.602639-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 54c48386-33d8-4466-7c58-08dbd698e1d0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DRhP9qt4t/+3ETvxlDq8Ac92L5HxrGyBpWIS+dgqqARoChATjzJIZOUw6t24WXhRh57qyxlxLacN6PfUbRJFirmyQJU8MwD4JfgUjTB70IgXhyYbWJDIs2oipbNaQA7hPp4oTreK+e8ZDIJRyKjNFR+57qg7p83W996IjS48DhFS8HRg+lFwbZFLcppat+tN/bki8dCbJ1NAlr/ZSX8BrdFz34oQwQ4iT9MWVNwfRrEEtmDvBDHf2jPCiMNTY5Rob4U5nupXmkBYkxKrmf/flXZqGniqvP4URc/OEgOnY0IQxOfgu/gt/EJ7KA5Lcikl95W0J+GDxQDjWzIzN6I9WI0P/q3xgN0/gm0zI4deweRBmPqGhUv/SxtIz/ySq51AO0aaARWEbVo3CxTYcDAFsPAWGfNKolIS7fqlwT4l2mWGthhzmoWJeLZ4GlZS7XghfJs4hogUvSRK4ZMPKmeomKR3P/QHIw1liGgcz4xWucfPk/KcSD3+FvDoFgntyOCZHQcwGzJFft0ZVazu/11+NmFxoKlVNx+7nvTngNVuqt3VhiSEWarffhQmFzH38uzs6w3mmVAF2pX50T8J3SOQsstjl05q98GGCa8IK9DKrHuN1iK/gl4rvQ6rPy/Ql3DX1ipUVHe8jG9hXZzZUbodNRhaoJyWSo+qqR1QsfJFrxw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HKkke7GDHnNZE4hbEJZNVYEqmn1nohlyvmjlnx1rqc7ZMYTOucQldjwffFooRqEYi4DN9cfGVGm2pHQuZYxtea0QgrtvK+NCUzog3z0M1SFNqHojwfgGNfEr/KP8ch4S5F97+9dGFTr6323qFzCj2k/Z4Z6QBpXIHPcwtnMLh8n99rkeus6Y+Ar9g91Ofcj3OxwOa0gJVQGs69BDscKFFL1eb5z4VGjeT3tyEGzOqUj6aC3HL4d2MfAXwOkXxtjHsZsXdPMncgTRIeqts1nYuT0EDWCxpy6uxik1u9Lsla7UH5Hy2gsS5JuiwI5pS+cdmvB3XFvCqWDAKTeE9EqO/30bDZiEARrKRZ3Qn105/WA9v04te0bUnOMYT1Dn4rhOI2c8n9FEEjFUcKeNQ9+/NpIstfo8RuxXipeJerFjTfQoP7187avAltdQ2o0+Imp3XS7YSkTra0UWcHEWQLqgeGT2Mh6/voJfHJ1g/cL1SALEljsKrgAQSbRebHj2FqifsenFw5WgX4uQqNdGEPxxhMO/77vIRwd33gN5DhovWId9qKnMWSQT9Kt53GICJWxHgK1H2eSpG9f5dIf7o4UdKYpQxRk+wDWbvo4r2pI0JDH7rA6zXKobE5t8LKpP3SPpTsBqmzKf42iuDtsYXNslU0cCy/cEBKfkAAQ2MD2Tlz+Nd3mQMbEcGjHKNM7PmU+y8JALC9jWgGhIcoV3m5b7rbgf9wsB+xLq+fhzHtJbRn+VuqMpAHv6QHpRMX1fS7U4Gx8H4EBVFc1k7Abqb0/D0YuE3YpvtV3JkmyUaybC5rwtcZZdqz9f0ZgxR3LWnY1CYKy1P9ldKByGt54FoKzYRXh3xUuueUqplz0Ac835g754dyV5lZOCymTPzYMnCu0Q6mxSrKhdfdII0cXeJWVO+BEmltOlmDirREaGAVNk35t+8aWrWodDcg8pdg+GyXxvcX4K4CW33fN5jrf1TxYHJWbZnt3YgHRYfhZ/z9sdiAeUJky21kg6YMQ6GbP/CFhmz5HDS6A96+MrJDRN2YJUPi6dixbpeIhXRbwyrLG50yNqzi/V6MN+pPBmBZeoyRvq4s47kMzYTXs4q8VfEp9yAwOKl6e3nG7XzRvF+L9TiavjFacUOXAwPbnNL/C9QddkHukRl9LuSXziY1bp7aZbBnileJ5I8sQHoxq8cxhOrsh4DgZIX1D/QDQO6zMqAWd+GbtR2GFTqxn5uyrV1g6i7RpAUvr2lsKmgA7NQ88FnIwrS22/OrM8SWl2PdwNJ/LYyx8nPb0JFTwxkwk6LtahdDIpiYhXvTk7PB/knXhA1fN838XFVh5w+85SELWjH1GGwHg7BBp4+lJe1jv5YJGwQtiTivQGdSIN7gGtLfVZSXjkKaLSNmWDeSgb3YSfJaHAB77VO6wqgWbPz1pKc6JR8xKBf4Yl4fw0KSQp4ntDLKhWFt24z4nsc9GmiGOD0qPd0/wKjpVKgGcPJMolipWbIftRR5HKeoG9KD0/JuHXNl3qHn2tSuLyxkwmeuvR90NhRRuhv7zol7msdCb7n2QLGGN+1IHCUl7txN3YeQmm0oH0IITUwbje7TOCQL3hP5B6CaSGBYBws9Ei17Pnz8b2gg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54c48386-33d8-4466-7c58-08dbd698e1d0 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:31.8179 (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: WfItunkH+VoSHzPDnbfE6hJivUYUZB2tJ/lW3nEyKTeDNH90SrhrwOQTD/mNPQGE3jeyg/0FJZODew9C/jsBfF7Wc8CN84NZTBNCQZFI3Lc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 4b4c587d5d..fa99c3b6aa 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 Fri Oct 27 02:59: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: 133448 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 985D94320F; Fri, 27 Oct 2023 05:01:10 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 800E242DB2; Fri, 27 Oct 2023 05:00:38 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2091.outbound.protection.outlook.com [40.107.244.91]) by mails.dpdk.org (Postfix) with ESMTP id 8C8CF40F16 for ; Fri, 27 Oct 2023 05:00:36 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DCNYixMUxpEmuMBjAPN+hHQ3fUbSKJydHS4nz3X/TMUtMlB+eNJW9w5zeTey5zAh4q/Zeh40bC7KyRu+VsV74m9eW3yEdNH7s/SVvlx1w9i0QTBXxoigd9CUFoCsMwPj0tL8B2mmorAzMKjYrWL3MWsntrD05iLx+TRSVpYsbncHQ6LVrqCiT5C5mCQAu1C6NUU7C3vmX0fPAWfR7doQdJA+if5aNgNd+42fIPp43MUng+h9HgPSrNvN5wVDCI/k/TjdQ4+er9GcaLMwspy6WORLq+Sfq7rZFhcNu216a03iX+WucougoJj+l4oa8fKsCXFZneSQItXscKJZKnkTbA== 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=D2hspeWido1zO2zN6bTA9HalaB+p2ZuzZVcUURhZa2xE7X6xhepGEDTQIjOzY1Jxj3P+uR4iv9CXSVF02CQRcXgs8dGOLK8X/Jig7HYi4DwD0xBQvOikbMzkfVxamm+y4oNN3eW77omK0i6vQcZK2dBD5p4z2p5AZIznsFe17A+63KGbyIKqDm/ehu5ss1ze4x2rc7iuH5VTxWDIlw+dcW7eoMEIHeVV4GnLRiuV2XDVZSW/aCdvXBVJnJqxHNrpph4o2KZc4TDIc0esHA+scD2sZzR5Vk6aaRQgWxD2ojCps96dxVrmFhrq3p91MMx+e2QP1DR+cdIPHpKOwZxbhw== 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=E4H3Y9XRJ9IXRqwHuZBeaewI/5EPR3cefhXfcDEikb2klEQFfDjF0wH/ANr7QU82BgJkNlVgPoXpgSPX1giWjwKTHMyXCYnycVXUtPyq/fIsnxaeR+KfY1qsYk1wwOWkdlQk2TqIJB1kpgv98zf78qsPB5Xq2doiaeUVN6jhWas= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:34 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:34 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 05/24] net/nfp: extract cap data field Date: Fri, 27 Oct 2023 10:59:42 +0800 Message-Id: <20231027030001.602639-6-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: a56428fd-9e7c-4f9f-e00a-08dbd698e33a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: b0/wDOY/BYvd2RWecDZUBrs/er595CjVW4Mpe2M4d9+eDYhdWeKD2HQZ2+ecOYSBDjRKtTsS7yC1ImdJVsKTnoSeoiEAaP5Ol1X8NjGU2qS9Omcm89GGZ+wSzaz0sxKcaBAW1qXcKMivUVENKxSPZzG/exwxGEXdSXVXcetl/Xe0OqBj50ZwwKUYpiTNtO3F/m9y6tdABp6w9QXJm1+jERVdvYXHvjL46HQ5JWO6SjUw22az5c33kwL7WwI9BAU/FhYoCQB5chE67dhcmJuDpKVRzMtRfsLFhN1ujKi6gX7wJKFGPjQWI6Qhx9wdrmsYnoVcbizgehaQGXIGWoBP57au6cACrVSNbL9MEODUZ4LF5bawHtsJ8QoBBhsk/zFA2ZCvY2Wa0cKXOJHn1nwCdSRU8vhE6dN5Gsd1LVUF970bqxcuSirJKg5rb4GscjKTMvdZOPLEohkF+1XziO9MaFa5RXwvhG2H9I1hQGm6jp0XLCyEm5cYGcAzNxee8Wq2A2A2yUgKijEpD0JNv9OHKSWhF5Vfa2YxdotXvlUuYO8yS2GaDOX5Q6fEAP0mtFdNia7saZAVBjI+dr4Z/NCNi4sTdyjrWQ1lFV45J8cxAk97IGzmHXHNA30VooJNdQxljk2KvBONdcYSzhZf1ERZc0FGU/d8xDsgjr054wPPgws= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(30864003)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fBKieVDzeJS6mZKcTNK2aJkZjA3dUjHNHVxoGKHGPNIokUuUsdD37vioHjB6tT0GfZXKMCMCjVoHJ/XMk/aeGTYKK2i07nVwnyR9A1G+rykgwpiVFcirPfusa2Hhr1/lbJX+mf9029L2hCpb0IkT5xj8is/0ntFtB1gL6IbFVyMUO59DFjSIMHx4qUSJSQQ57XkJkstkerLazfh48tcC3umEHuW/XTdRBz432vrCs9CZZpFTsJ6xDB8/yaIR4NRJF0YQ7YWFPI2H5y+haPSRIRGVOZFvPeO4aDuYuG+5c6m9EhK/esnmLFPd5C8U8R0j2x3SvyGmQ86njG+88CgDq/6VcR/MN13p/neCfvOJPoyc0YucOxxObKR+hgRQOCopDmR0ojWu9I/OoPHNNxjEnHuTbOEtCx7XBHt421dh3jfO2j9O37eKsG3dQm9l02fW9ENHMdhWMqp7/M9K1P4M7uoUJ2amqg9LuomMisPbVYbvFBuZHh/a+VeSl5PLY3YzuFJ/SOT47gQimewzjo+3DFjN87XWXYdGe7HGExEpYMOFluOGGCCTCiQG34rLBWYjXgy3t2u07q7TbEdhk1kC4f6opJpqT8RDFQzqk/JIZOANpQ3bGzwyTeRJxf9G3XgmXaWZhksrxfKQwF8oaj3rEafufnm2SLnmd/TS8OlsNuvEMEHXGfBfzgGJ5SJj/K4qC+BT4d4idsZzSQx10obahud7SfuzuoLaAZkEnPz20u7bngHAXoBklv/scnZfYtYIVeDqfwUo+/17KfsZ2UPOgFSyM6KEkKgD07tPog2fE/37DEJKcGZj/RLpbXiupYgC1xpoXMqUy79BP/GUyHgDPXU7p9ycZKJEB7JEo4jYNw07Ov2Ns9/zRTwgBgPqWRcLiRMgUWjSeKEiYY4gCaCQR3oemaY+vNFg3EA4qZuVA0HEm6IueD9/XKqxlMg0cZUwhi7BCK6A5g3B1ciBmBvlHcOTftMCrvThkbU2RzcYvhM5gh1GtkDWO9U//+Bofo/h9dZZ8fREkLhlckUUn0VoKDWFlk+pQjfkDfK+aSra+hfjgGrulIBQyFVQbUsQO+aPZI3KW6KBq+I6hH0bqmNJnI4JfK+SSMsBkPi1iy2ei161GR6tSBAjVt+hy/Sr0/YdW1pkEKwocTlDmnrWTtm9y8Ob+MadbwgNd2f8hcqsJ2TQmDxHXuuWSwCHlnx8huutZIq50LXTANqhkzP092DO13d87xGmL6p03zHCdekVtzSQSOlMmqbuKfPRBXlpYVG8LD28ANlsVXWKcrwVyena637dt07+V93mC/VcbFcdFxnMVbSQG8TuUaJGdz+iPcxRS1/kJD+qHf8Rt8mAPKM/z2oweh+vYc5TA2ToqP1c1pmqXRTYFyTzN0NlYTmlTjZyaBwnXNq9PtP7muGdTg21f3rfeLwYYnARvPhq0PV6eKFsWEvOZYM7YhbwmFMwIcJUfHe8wbvzJEF3fPiKp7EXuI7d4c6wogxNJBPRJzgJLM/1bk3LhsPosokXvyotNIx+OKRrUYDJRyJQSMgrcSjxqlIwiMQbqFhh6OG8tQWGvj1lzzyZCP15qx/Gmikp7gjcgy8KtaWj328C5fF+nb7pgw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: a56428fd-9e7c-4f9f-e00a-08dbd698e33a X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:34.1702 (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: RSbbO6u1gtpij/04pQhHFtMcEQHTA5esHd6VNzz/gSLGZF8QH6g4M3B/+TFEDcyvTvQtI9WrzxnEgPKL1yH3hbgKwpKgDilg+kUmRNjIKlo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59: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: 133449 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 4F7564320F; Fri, 27 Oct 2023 05:01:24 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8161640A6F; Fri, 27 Oct 2023 05:00:51 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2117.outbound.protection.outlook.com [40.107.244.117]) by mails.dpdk.org (Postfix) with ESMTP id A654442DA6 for ; Fri, 27 Oct 2023 05:00:37 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VznTt6EE/P2koHNN/jrYh7VQvVy4OLNkPnIN9ehf6KkbSQ6ssj5gpKjQx7//s5HQUFiRpJoXHBJ2Wel1Io8pA6rWOv6Je2jIbI9AtpkgJWWQwC5m0FywlBigGVwEcoEsuc34go3tw0ZxO/3kAwOe1vxXRqpFI7yd361zXHPd+39MJrdSQSlSQRjtfOSFfcYIoaF5JkiUtYEkiw8TCwmZ6rXdOqrOQXPycdYxjUsVV2Ug4Ngo3Rd9F/AqT0H5+E576FVMiWKndZDgF8tmQyz1mClE4s+vPW8i1Ph+yoSG3+i6Uqn/n51eCb7OE/T29QKicr1Wfoq5kPQwB/4uYoCnXQ== 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=MIS534KNDVVUw2vGWj1elvLfPklXIdO/iOi0PqsvnrNMcIPd3R1YwpUbUZkG/D/qDERXZfsIQF37WGoDKkID2H2ehq0uMbcqUKtKVzBw9xV1Qu/dsXRp4ovLpKbyhujz05GeCpb9lzUHrzTJwvMfs5xbe92KBoSg5fZkM+CgvbFQsD/bPCtZF2keoWuvNBi+E6K6Y5ruN0PS1ygmxEAlf9/8VMWCJI2vkLyLnAYL/k1uABRcWqcORfN+gBZJbHen+gOvktvF+6CWnd45L8rfbOiP26t9GY1+j1NwzE6ucbBUOtP4IBNihvgoP54O9weDInJSpu1U4OhIdSgCh2KYmQ== 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=GuRYxDrRhgZ1QEAxp7tE+5IJhncixlePbs9Es3utMbDMnut4jM2MIm13md7xcFXTPefv8C4M+uEzF9mFzT6QOyJ0LQe5lRbObn7br8k3vwvT80mgPxPc9aMKu3bQMomm3cXagsewPeaT3RkH/z94ZeEVfPQZQrQMJWaSVMMZDyA= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:36 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:36 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 06/24] net/nfp: extract qcp data field Date: Fri, 27 Oct 2023 10:59:43 +0800 Message-Id: <20231027030001.602639-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 09a86d50-0347-4cc0-5ee8-08dbd698e45b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kkhkeBcbSRetxFSFMNqok1g9x4UbaychNi4s439v8FRH45We1/72x5U9K400vCtlJrnv/B20BQFEBrNwdVo/xiKVasJH2GKRiN1FkXiZqr56HeGWU61pwAdh+NBXwNu+PsyPaYr49NgG5cJN67J2f7ub0l0IaIbwVgrS90UFegj0bemu2HMfQVdwiEG5868PEcvi1CR6EJzJQkViZv4RQFQHl4dM2l5zacHlPVcr2WEu5JaPRUOAkqzcG7l7A/rBJbkr2U8jexbpcol7lyHQcpsA00tzuASRYqGANqyBMxMftDWA3bZPG9zLjTICrEvm4CzKJP9npSjd0fe1PFB1Iatz9xxoTdO+wC8RCkeoVk95kALGfZ6ILCOCEAeG6pk1Ol0Qb2gOM7Ph1X8no7pCxuR6IZYcEtwWn0QhA2jEJ3VbqSZU7itlJqTtiZdsj9+HePdOepGSuO7V5Z7Fz6DEM9irUrs6KD8QAQc/9b+VBEdeJPf7bLptoF04ZtTkyNlD6uxmE6Nf9GI1M0WalM2ElPVdqLMBzXOSpb2WQOceAjtmFj3KfMpMcNgYRnOu4wyOuR7pQjC7D14BfTBLZzeit14BJaKVdfvuzXVuTdNZ1xm0oFzweez7L1NlGcU6dcjqCp5IhWWdktizqQ2pkjQ9nUOs+mgkBRyxSQGvr/ip7t8= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w/t+4DhSWVwokePuM+J94KEeeWJT6rGjWTbQrtVX9XTWNwsqSAzZBTbjcKgzc7tvHbt575urUvdQwZSL/NNpriCG9SDxZgtgKM7BHTvex4g/ceYtyD5T4I5czpAKI9o2wbihyXJIPIowMmBp4M+9e3tCagEHhSJJJg8N7mYSu7XhALbczcxYeS8YZIasAGNkMNhMOCX/PNa6/SWIo0Zh8Htokkr/PrXSakFx9l+MbRFEaqb9Nhb3ovf1fXOUZ+m4qA4NZcWR6ShMbShso4HuI6jMMzYI3mt+np7NoH0Dkcg3DIs5FLptBy8akeL6hIDIb9qUUp7otMW/8tuob70gjcSIjIn1z6UcBnbXmCNA0Q0/5uHcOD5/jO8EQopuH1Z9R1KyM4lR06EHJWdKjoWhpgIdxWx8+hCmcqQPHeowqKLw1w4/6/ebSiVAMP2UO9/vqYQowzfp2UnAgg4Z00/rgb3uxZ39W0B46XcSLBZkTmQJiick+mN/0z4vto2osza9arKOTcvrdj2y75INOZS3dekL16Ca49gNGm1JlyuAzy9MOPwsSw1d1Na/MsjMYnycF9mD7Q64mYtFAHk8yzIanIMAZeXv1kPs4RIGBvvsRgNGTxUHf4T8DVbiyAku0VAuxb6q1uOieikjmik6uCBl7w82NC/3Bo6gbC1EGOlyg68XOLO7Q4snH+/FG9dZJH96oidAtZgHkqQrXab168DLPg+EAJqYEanGu2pahIpsY8kijAnWr5LpgF1r/cRXMXasjrblNdP9vT9cONIZXjAZI1/cEMbG4mfYyY/JFKcC2WovY7wrlLbd5UNFELj6TY7/yINvbAxCiFtunmSU/RzDpYbWWX0v+vyzxtjQ2DLgK8iYaE3HYaPUZHbdHRbksc25s27S0PDhgJrgO9HwAlTyjmmcOuTFB/IE4Fa5fWc62msINOtuPUdcS/ctrNlkIsJgzk6nianYQXehcFEyBsQst94G3E7whUmWMYJ3IECo+Qd2vt+PtWis7jFXTCjVDywpv+I7cNTrDy3EvjVG56gVjnTZZgT+2u/8KMXEwrOx3Zw8cYJkQc0l5jdz3slfc8awzEm0FklJXMlMwrQt2eG7WhioYvbRpGF2w9fSw5/x366b65E7Nc0GgyMEELu+VSW2V2JIS/KT9sypwuUahVSdgoZP6NtBPBaZfR+QalnFA2lQ08FLDquPkJuHP6nns+upR9uw6g38PJVCL6pAeY09vhJ5SToz9XMabEEuilC60FMK4e0kMGRvN8D3wfHpeZDgoZxDWU4N2QkT8pv6CLgDJ1owfURPwU8Mc5G/sVKme/SJAWRC9Ts1sI3x4+Jo38g7WzfHYulrZwOYFS7T0Knplfg5V5A+TkbnOzmLnKX5Y9o6cWy9yfIuoxa6lJ52MEcR5AEjWwUzSN9pvUNBVRc4HnoZhKDtXN0PCKX6zgnkEt1zQhyUIpr4HzFEHrPF4fuKSEU/SDIIFiiiSvahgkPvnpABBib0F0mRdGBBBCgJbY4pzT9S5WxS7uVmiVfKff6zDh3u7jJc8Y80YPfDCn5u70dNJ/aPQMTTdD+gYd3jHgRSyS7eWjV5EF5xyp3eNNA2hTpqpIsCumvXmIJZd2C4gQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09a86d50-0347-4cc0-5ee8-08dbd698e45b X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:36.0536 (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: n0QUHI1JtGrJXQlk93WkJ4XharP+3qyxW7RpdhVrkQMDNxZM95wiHuwWEoK/NKspH5mGRQhZ6eBxBS/+iGdJA7mRD72bjI0yiUIKSg++z+g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59: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: 133450 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 9B1694320F; Fri, 27 Oct 2023 05:01:36 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 79CDD42DD1; Fri, 27 Oct 2023 05:00:52 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2134.outbound.protection.outlook.com [40.107.244.134]) by mails.dpdk.org (Postfix) with ESMTP id A7E4642DBE for ; Fri, 27 Oct 2023 05:00:39 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e1F+x+obw0ckwvSpusEEthNkLwR6QUBe7XvagR1wCiX7pG5jiz9ZYhPQgC0J5R69hVxg/pTi6IK3gcwpamJwsvrfLvQHcKgK/0YxnSJSirqL46D50JyPjrbe4vtWHVe6U00rG4BadxgL1s3nPMtYSVPr447JVw/ImavCBoOI1h6Hck3tpUYjpzd7sqvhGzAFBo6lKl4PIlCx+VqtVasvNUXSWhPYlMTERMH9XAtAD6YMwh7UQVwaAuVdbZ8QkVUgKhM1NIxBhoQKMJuGxjfy2wdkzAtFpC0nGvDuCkY4QSmv8m5qpw4/kCN8vB0vQs3+i7BwHsohriXmX/ojPqVvuw== 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=R/3qylHNRvdfj4AL2T0TGNLX/Xqzfqws8qvcpLrYQzAaPssHYNCEpnlJnwQWVMaFDkWh9uhu3JHW1+TLThNMCAbjUqO/XajHC0qAF8EOl4VCc1DehvGDFQsX8Gw7MmVFEdHs7hmxmZ1MVegXoxpdJU7dd+Ae69Suzlx0x6y6pJPSKs+50aNIQClrcevIJUkTs+W5XTUEU+F8rPU7WPK1VZpISCryHhyFunwMklTIGYa9VN1e2C9YicRqXvqhjetchto8uaeh5qFzvb9pV4YSOLGNDy41aQ/6nBb4eQDPS8EfntrlXw/H4xK1EwsThKMSy/o/M5EtG8uSGlfiXeBFSw== 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=b0TVtgjWLgUuiOwAIhVXfGZyfymQNdGS27zfLs6Ugky5sH9DWtoWcHf4p8Y6oqgyW7fnBO4L0zr9ixB/WkJvJSbA5KyXdVlAsy+ZxQhLUO0bh3NxW543kR0dGbXTe45uuWwZ9IkHoZmOUGau6SwtE+Nxlrzko1MgAMZyQ2iIaJA= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:38 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:37 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 07/24] net/nfp: extract ctrl BAR data field Date: Fri, 27 Oct 2023 10:59:44 +0800 Message-Id: <20231027030001.602639-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 6adebe27-ee69-402a-d99b-08dbd698e57b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ueLk2T4mPvHCvxHtRVv/6uxk9/ZWW0yMBAfqM6WvsC4cXKgQW7nn1q3TkTuDWagpq/Xy8G0/tI0xvsPk8WBp376Ql4/GKQEu+OEpZQoiH9WlvLMn+piBxQyBBlUSYjgzlBsDrHg7NfQRRMtvt8XOk1JJaYxftjmf80dIARUHxqQBxZcGCBH/2UVXEr6mvvigR6azgt3mY5FTj5s6Ho71BeE9FWeAunxlMzU95dlx+tjQDJP3StN3s/Vi70fTbAKhx1ze524oEJgkgT9FEaMfYSUws8/3cuObrU7h9MxgeKYTG8YQynUF+W3ymyfmr+TNaXpBGvYHgTsbGp3YixPTTlv0ExCYC55AXNgMkmTqxnCd8y29uQtgZ3u9AnUgGjpBCBFB2BqV0MPgDZrZ5j4SE6lIbxd1KOyQnEEATmpx7m+v++SPh5MUWhMAZZYsNib8qlM0gDt4zSqVPUR1HrHRpZkm0QlTtXy4bCUC6ZpHVPnYaHR/Nsaqg/EK8W9KNhtNyAsO9ih0M0hhGfHeHe5xSJ6PdPd2ISYXeDbfESdDBw/bwVRvbOJ2GBtQUIqNvF8AzLTQKuhgGrTFbUCGwL6NoaYRJGGILOtb4LG/nSXNwKqXmPOcRLWqkTOSOLenG9ZaAgDx9Nda9CJCFVh9TH8tIXbmCYtzyfpL3dzGbLtILp4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: r237/wfvx6OIDmjoY1895m/xyJZiyoMXj1v+D/eGlcTkrlwMHWTgmkBTbrcDPfsmk9EmId/5t7t9kvMHKxczu/5nT7DOhmcC44huQAfw4oRXblDJj2O8duldw82GhtYfJ4VtixEr7k/iXjfr17UgA/cqvNgUeu+FPp1kSVKIWVNlfA12AfWkHQiVavn0uUWikBd5AFctDd4OHMjAfXFguOZyJW8oFXmGqWcufaryneHNb1ig1IYq/zQSxa0c2b5hAFHExoVmt1+xZTseW+SUQGaxF/estIwDCDwfiNk99SMTuPIuv+rga8fZZKeGiEokL3pLLWouKwS4w8uhbNz7wXaTi/1qGNQjNHTAm9H3SkyZ+kMgXPELcAEyYNlApvL3iENO0FmMohedwj4TzGjLLurV09ER5KaGk0gXMyCOLj0kPQsf1HW5f9Ig+GKOlRpCaHpVCKLCF/in6QZhVdr3ZVPshOebUMp2CNcYGBA0wNsUaqx26Z659UPzlibasrSxRLjv6Ug9FLvLR2sI1Yhhj6kx2MK1UF1xyeIPhR3ph+LpzioMsjOTk44R9x9uxSHGy5nPWmYBHRQNlnSnr085TdBGZhDOJ0z7P0/0zPP3DMI6/muqx3ydTk5eXCIiHKzxOOxOxqrDFegew4V9Y9vJDaOc2R5Ou3grm9QPywtwUO30+ToJNHjcFpNKLf1zxhORs2zC+23bvy9uyz9rgwJ+rzyE7kBbdxHtu6BKD9f69+aPXTaFCUx2xWsJJGex2D9lv7S2bbe5XRjWdMALuOmqnDOAkFYYffTrcqXi4n8Id1aYXVoa7dOXs2BxGnoG2VmN37hgEUOpD1vPNfCd2BlXj4X1JCh2H9LgoSgp5x0jF0UGChgjSa29/vjb1HTf4v5sCpNhVR4f/6kBCux8aNUar/lubdHLgD9eSWxcPBcaS9BrETq6CnO1q2EKyo5BfvJSX1sbQ4fNcDLUfqti4PO4BqgX0lQQl0AipdFW2I48HSk4us1ldYB2d3s4rfZ1MlHQ+BQzvWePiQb08gfTA1JrKHQ8GG75T1L2I6FfreuMStfDMtjOASN+7B1vMehhD9pWJIMnszGPJROY4MuZ7br5O0AEYtEl0WtwYMn5ffB2IaBA+VWUBl2G2eVPUPpyygyzzfKvHuYO8NSRoUW9A1OCNnrhlW1OjV8slVzbRvETmtyalP9RA8v8Sbvh9wl7alYrNfOh9qJTGUZgzAIxE6TlsvniHFSzxULxnOICzt4JMYUNlCttA/9NeaBbyA7br4k7nOM62jws9J2QeYE//nOy//CCi1rfenv8dMJ8JXo4pu1sGriAOivd1qntYWGdQkXBKKyBduzHdbWHH+/9OBURAiWdy8k525kp1kJD4gSuNiffdwvHNUaHqvU0xsQvZqwE6ZRPLq784hIDLlCoXfFeTCv/o1h4r5zBrWAX9S9qVA0pMVkkyIYXdzsngfmc67zmmHb3Ja8K24PdqCXCc2SanoiNpcky5CO17BKHVZ2GM+oTNbd9xzYSfZSvxtDorF2CbR2KW2xr7J6jKOLdm2weoll3Wf48E2UdlJaSCihe49klZdVNMnwMWP6Xokrfgez4eK5LwOi0KRui5u5O7aoMSQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6adebe27-ee69-402a-d99b-08dbd698e57b X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:37.9283 (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: xl0v+2SZcV6WEkiILMMEb3a0VQ7SwTOr7lwC278FPTWCdpxGS4cEy/wCRmxX2TorMw5J/4nC6xNGjREpzzHwxnnaisftoAUomy7cBzYVpV8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59: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: 133451 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 BF7B74320F; Fri, 27 Oct 2023 05:01:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 032FC42DDE; Fri, 27 Oct 2023 05:00:54 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2130.outbound.protection.outlook.com [40.107.244.130]) by mails.dpdk.org (Postfix) with ESMTP id A803740291 for ; Fri, 27 Oct 2023 05:00:41 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EI79rC9FJV6EKQFSo+8HH56rP2apDIY9BaumZf48Mz8Ga84yhQZQtjUaNr65zWhc47K+l0SJcLG+L6r8X15GQUBzoIgP6Bvx9cgFmT+nZyvZ7Ilv4OiMTlz+p/qOlPdlC5LZKTdOb/m7J+U46srFl7j817BBwTIC9ZZMRljFTYzsXKVaqgxXZ1XnyxEJSGW03jX0qefjpM9zXf76wyDjs1JxFEZJyhGS6TFXXGGEANtZi/b/ipENwd/7NcmMQW0f5PhV40H0F+JdMqYcvqM3o2//q1QPW2iKfDzq6yBETi4PK5mCn9flvEIgkrRg+bBvvOKTXIjQZIFkZ3k9ANicrw== 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=DokS1Ju9oa1R47YzBqIWRCyCoqbokCz4e3rFUtKSbT5SxdgDRE6F2+8No9+wdMbt4waK8IxsyNUTUjSpA/DsqAwgE4xSIxiqUHIfmpUumueebPwJx8Qi66YUr774cP+a8CtlqDUdm/EYIO/DEAWWUM9aCx9bwRaPxdE2anuE86AjLg0hjGMffsmbzBC2NnlvikGngfxFZaUjpUqe47Y/ZiYrtOv4rRfaieFbmgyosjgyf7ELlBOKEtIomwWJoZzOov9fsaqIYbk2KLyFhUWhuGr8jmyBqnHg/xTHnbtGhjlVsTA2/m1ZFJxOvPUDq4FyZfC52almj7v6wT0L6ZHmzw== 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=OOnvv/aNFYZHTJNx8kHPmsuBZ4hQogaNe060JuIAwT+Y1XH1cX0C2GUx5TymCKfuO7hO8XkosgmJueCPJ4X6kj+4mKkv6kOUIqYIe33L1uqjUZdtrusBtEoxrp5jBNpP3v/rZH97Quykc0ub6Qmb8JwPhvCdiHfkkjjx1ibGTfk= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:39 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:39 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 08/24] net/nfp: extract ctrl data field Date: Fri, 27 Oct 2023 10:59:45 +0800 Message-Id: <20231027030001.602639-9-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: edb3c1f9-c859-4bc0-91b7-08dbd698e697 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8gJFyrcd+zNTx3nwcCVv9SKVix4EBH8DivuNfc1K1+LBi0sXtxBLf5cn6Oi2crI3KhHgOyydng0qFWmi17VN+blIJvIEcGQk5yfwi28Z70kAA7O0GrezuH8gYTKrG1RzLszNw5Fw2Pruh/1IWXRKPtgdINaYwSvaxELTL5VaiP4R71lprg+JfgYfmyL+9YP6JnXWySkVMdeh00bRrNN9+nJCLlSiMYM7vFbx9wmfZG6LOliGpvH/xB5nc4hzaAc+s/4kJxd2tARkkidUF5JCtwsOXmHY91/znkfVkaSyxZIHOBUr/7Ltv8Z+Q93dGwKLlDvptQaSaRg4iagWOwy3UlJCMUsSY18cx5U2ZMnCQsQvhDnyhY7sfyMcAzbl8MXleoOpA5mEGuWq/SOxIfGEedINKQXFvry9EP2DM8rMpTm2Xe1EWjW8GI9wIziHMVntWFwxA1IWV58i6NbG7WOhrUOrUNcjDUcJ5Jl371dESYOX7dVs+eGjKyf6rHf0MeYXCRrCW2v8SfDigh1jPgqfI4QwDMju8cwW+UY7bOqTT8KGtldbAM9xIo2KG0rewSqczjovctl76FD53D3/+OngI568mrafrBzP6o4s908HStG0GxoObeHEN7JjGqSTA4EjzDHjQLSYzzHCe0mDcal9EFUU8u7lyezb/rZ5In9EUq4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(30864003)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w7EvsL5plTDPqnBji52hDZJZ7Fa3VQjdybFE6w+FkWERgMmbzw9wVKT/idVRKOTBuGyfLiQDFrcRjqouUb17oO/ONVO2Cf1stA8Udbu1SS925bUpU+uWHzcEGKJjxsN65YG5PwUdNUhR28jHGOHdBXGVsDeGSICDdYwJOmhIb1tFXMIuJUEcgtPlV2zsZAS4DmchfQ3B6IywH1cukdOHY7MXd/Hxo/EfJKygqzojUUxuvgC2w+JcmHDULDwUIDOxGYn69GQcLzy4LwtALWNvJQ5z2hgV6GuXGRqea1Zl0H4knQ8zD52oyKXEWdjUaEAuIf0ufySc0LYPu8ClgAjU8U/ZT+pczTdDEMSnXpLzx6Qs879oc/FUh7+0BqEWxcJh4joCjeuWM3Q7xI3uHh4T6yJLFxe0IDaKaXAYchetywSHA7okufd6TVnrUsfGY8b3Bici0kbdKj23qQVJ67nXfmm2xrXOvLhhMgz+5XKiZSFqQmqa5/JmtuKnzwEj36bJUm60W3e+oaT/XKct5wafW8goUVqPdUeREikJupvxlLaIFDRna/itbO7i9dN9Kclu4EQnxza5T1dStsF0JMueYT1+tb1AVaJJgE58f2ikxDCaj4o00cO1Aqw1f/VsHBRXXheJDEeW9+mRZYLs8Cnqo2lc0PLMLwxpKGwWw7HbS3uObfQ6oh4ZZmIdvJKkNkMHlY4O7K/pz5/BrgybfMhICnY+Bs9F18u7h0GFbzhCy/x76J1Lw6cVGp1g7J5KYOBXAgMm4CJCsp1M+rNPGQAIJzxyMr4stPENy6Tj+f33pr8a1mysb+4Jh9zHF7RZGCoLFiXRGNzxbP/KUOc7VAP4aDTpxbPDCxq/Fc++3Kfv/LHS/0oPa4/dhHo6DoRI4NFJOP9L8sWTK95NQP+3G2Z+MOlz5YZ0T5K9w0tweBqihVVkbPlAgBkX/uLCcNOKzF8nA440KMKlHbVys453WZUVwVeC6LUkTgxqP5d5zaFLRF5mTGlyDOKbN6bxuRchyQWHcVqaJmsyBO3rO9CDtbFYwaZvg20aaxQkvMoZFByTWeI9F4e8a+wYLfUKrd8GiAi5KEqXeIVDpaQW61hpmN/YAYovJqFo5OHNLIHZpw1pOaPLlBz5PiAaZMU2MOHcgnqSzDHQ5UszHApJ1emKEp2NjdnkZm36YuBDKuVnYDYWioJuKI9Mqzfrg2azsqgqfqnAIbwHEJJAjbnyHxMnHnF6HdN7ufQG/7vvdzZpF+zjNBixHjI1Di9zGUnTk878JlNk41pZY/N/iQw5evlMdGprAo5g/er7ardP+YA1xWZIWS1ouJ87/cg85wHM5Uk7SUz+7kkUgQSE156kaI4Zpv4vQ/h7ZsryjKVyXJVuJUCPWa7APNHinYjHsgTFnj2JqRK+GxYNDM2k2llJTgRZl10qDSL52aQLeLQhRqUSD73PD/FgGmsuD9ruknXxXvGizytVWkK4rX2iBENHRsNyIWFp+ZNUjLXUjuVheWkg1+uK0uAVTqO7k4D8g5XC52Ep08gNVhF6poiOB5oM5wlWRICB8iT1yy0PU8MpOVXmnf8PMT2YsdJmrAAITM3CWcxwSOoZeCz0vh3Bb3ZVspsS+63JqA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: edb3c1f9-c859-4bc0-91b7-08dbd698e697 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:39.8073 (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: L22k0FMB2897/D5XnEzYPVmgNg+H5tPvhy14uRDNhlJ1oKb4MQFNvAvIl1FplMiqEJHx6bq5mDcBgnPXoVixxQhekhkJrHkYICsOm2q00+A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59: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: 133452 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 5A76B4320F; Fri, 27 Oct 2023 05:02:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A130842DE7; Fri, 27 Oct 2023 05:00:55 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2092.outbound.protection.outlook.com [40.107.244.92]) by mails.dpdk.org (Postfix) with ESMTP id 903FB40291 for ; Fri, 27 Oct 2023 05:00:44 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QR/lM4cYZrbK2Lpa/fcnOqfSzFEmuHNeo3lulQSWiuY/YUD7O7227xt6ynVmQxVKjtKwcMXaws1ZH1WSZkdFwdv9AIjEVv2V42WXrqD0NAKWQxLMFj9hclKnCFjBOqCHf6t4BQI+6S5mmsJmAgmYDe/rycf3oh5QszqGcOERbowG8Q1gNsK1yIEwE0uwAQoFZgIg3+YpRAvdE4J2nTYfw+HRTxC834pzASZAgX62m7q3zUyxXheXFv5X5iZd5xv3c/D0hPHX4fp1ZiRFKehb9J/4CEFg99CNU5cPfWyWxrkHd3fUQVxKZ56i5RFwZjEf9cjjPHaS99oOvgiiHgQ/nw== 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=kNVnO5yAG9bz99985uk58O+pm+Q3+MKKQbUlml2Ibg0=; b=kn+cUvqDKTsQTs74taAw8rJZ8ZEQtfTGuZnhfuQTd8095Z+M6Mbluuferh9+Roajx2ql1tyi6MmvTh31bqHhfU8rDDP/xsUXJVuVYlGa2W0u0pM56onmSjYOPHGtbCT1oErqmHMN/07andwJnVbulx2/ny2E5XqrTMbzYeiJ9WIxYGWcD5xCwT/xza/sEdc2t9EHBPiwcjAHLah3kRaBZknUrUmtrNgHZC4s7KwL8wqiiLOLIEKmntDGY4pvsu/vmW+8honu7cMDusZa1qLgZi5qxnIPUeUoXTqX9XW6nd8kB62FMqgM23IreVOojEWi4rkAVhif9E6Eu4NpvE6nKg== 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=kNVnO5yAG9bz99985uk58O+pm+Q3+MKKQbUlml2Ibg0=; b=byRU4r9attRI2edfxzSLXpW/hNOuVaR9V6jUQBxLvKcpwu9FWPZiD/lzV3dmNw7LpSahjAz02WSuInDyDsCzvAwOSMlVoajVzbVrkDHTZgj7k4ipYYRnPJTokgycSrQ5fOA42BZlYbz+yorCgx4PWqOvU2T6fqGAPgLlZxNLX8M= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:42 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:41 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 09/24] net/nfp: change parameter of functions Date: Fri, 27 Oct 2023 10:59:46 +0800 Message-Id: <20231027030001.602639-10-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: d2b0d8c3-08b5-4f6a-70cf-08dbd698e7ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FxCTNk015jJadSOECOko7cBhvbguYJOgq/3Ek6wi9k1i84ZcUe1NRur3jac4XEIeTIP1EX23RTBSHlqerhK3l3sBwUUPsB4HMO3YRY0jkE8hcgVbsxFztF1swuLGxgm3sOc7Gvq++y+tpiU+TbkXhKjPnLxwcSuRZk8RgoZ3ya9PZGeUAdJk1G74dV359O11jR6L4rV8YrOS8zzCDRgVDM6mHVMr5fSjl+qs3Tv1Q494fbBvQkGkpAcqJpnVKiqIX3GHjOp4x8dvAJGy9bI2KprFGYKShxNsNld2KIZD65qHWQBhehckPsj9SSxVBkpnuImozNuGUEevvMkHzFwUwuzJpSMVdil2dzwCRSHlMGP9T0ROGEVYbawDaq/etwHIF/BPSLN9hVjBTs7JnnkkIlXJHl18wpLfURj+ooHVmewKY5/cqYfIkxV90CHGEhM48ghIT2I+gNha68Lps57bJBbCbWFcU74FTJRuhl6z9h4SiZl/mA4On7rXAQsz52xVRd44q1RDSH7Zs/0kgobmfaF5KBufMIe2cN/9XcWkEFORVEegjDzuQAWPEpXGFQqadP+j1E2MMUPA7jCF5Gcem4IOpDYH33fuxAiq90jOMNHjoKCgRJF54jSpheMq00JVkR2+qx8TbcR95xqS/pjRsEl1yyPg7FjRPHrg90hk/TI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(30864003)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HlvsROZXA05jrtrBXJHa41pFXP1JNdG2Vr9j48L0ba42bigFPEjfLvu8aaQRGOFLW5auRdwUEq4eMcDjTqAL3qsP5i9qCYEBQoiKrL0NGMSIolIFIGnaV6XXNAcImPay/Bbfyro+pEV/yOOLHfcLWYQUNSJKMUC6wkPnoL0Zhua2kCAfhdJMp5WgaIjhcELSm4dcaKRsyPhKj/AfKMgikEZ/AWXP8910KwlhBu2r+Tk69hSneAX/Djljq2FI6PuA0m+TNs+MDiwp4yLTjl8X5RgoPPiplUwQ6Il0ukSsLr3xgsmiJ+jyqEPlzG869hc/ZT482nJP8p4Mu2chAQecFfPwzmlLGaWaWbW3HY/IFfwWOdJ5DY3/Vfv5NI0HJYVT1Ha68cua3TfU6We6IrzGNgIDtJ/4Sxd5gxcgvdXrCxielwO8xSnXhnKzn9e1UISBS94HyhTcOKY2Pa8GI/q4MvgKICLNt+8cw6y1T6A/a/DbeYimYUrVfMZcxP7aL9p2WGsw+j9ycoDuSg54wgw3i7PIuz3QismFf1VLBrmHsv+qDj0N+p8ctmxtSzTivQIWOA3/s7D4hJDKSHz8JFDHl0dz9CX9t6iu1St4o78z4vQ8bZg8vLOO5ZFBJpEkECdHA2QbZqMrhZz8YGlGE+9YhOWSrqpD31zhqBxGlQ9qGXaLg+zcA4EHmgMe8MdxPhPN3KMC/2d8kJiEqsjuORvds5C6HMAKZ6j7rtDwAPH1fTKyUTbuNehTrlwvncFRirJS6JJY7UI9GrDbAOJz+C+/oam2dL1eTLz6ii1A1t/Niq1kZYBdFY48+JGA/f3l9aukqKYDYSO6kvJTrVL0lrZIeWR9iYz1LlBIHZELaJj8aZEPyfpL6BOmU3N5uiHOFK/wAZUgerafteR6ghpqbRsGeUK9FsOAUhHVL/P/tTyn9lkcABWq72nawDwRwL+EwuazC4MuoWxb28PB4R+wfVnwuste1NTUBW7+fgtd/5u7BnNO1YYpO90ftxUNeWv5rIu+dsZQKw6GBoL8d/DufqSot3WJ0PFdk/MFyaeSJ0XnBVTQb89a44Qld3FcmiPDcUVvuCyb8CJFUDRjcWv8Y9mIK13R5q0lYUiVH0I1ZNB/+TA1lnorTafBZxoduMSi+FBxUaR/F3SoL/AAYUxxfOnEpSVSwLkGHfHxNunwUfx42bdKf0JIJ3XzHijjM0v+bsmCH927qYn30ieZ4z124TxbzfjmdR8n0ICZndrQbLlcLMito/PuOihyOHlXoH8Wkz4ywxU9P1zmlH7oX54eCl81fWddPpg/SnLSbAjp6boGZR+ceEi7kesdkZQUu3B1h/yWHI0G6mDT+4I4QRiOJ022ateNWDJkxnoavZiu8MSNWxLuHLhbdEq+0BzfWbxUSOFK3plH6Du2ZE0GCbmlC2JfNOJci9IVxcCFTU+U5ch+V/aAtNDXeh2RIfXCzVQsvndS0gVUHiT8zDcGlZG9MOixXEzA7Aw1vbnVSq7Fa4iMtWv1I5hlDNqwvCMTqgY7UHrp2wNJkkCkKq1os6AwPVO4Jo7Z7T8EIC3jPx7lJFSK6cZqHxxX8z2nnSXoVWF8DgUYQSoXdBzsZDehaiSFVjTsyA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2b0d8c3-08b5-4f6a-70cf-08dbd698e7ba X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:41.9098 (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: s4MS7EqJVSIPweTjQQ6tkDTlDZNxdNkIiMF/pwvVFmf3ezCf6ag8P4BJ5qwZasjYgpjShra42t6xWeQ+obfsMGxmae1LWPq+K+1dRK9zNVo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 functions 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 Fri Oct 27 02:59: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: 133453 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 5C55C4320F; Fri, 27 Oct 2023 05:02:11 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 09FF142E00; Fri, 27 Oct 2023 05:00:57 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2091.outbound.protection.outlook.com [40.107.220.91]) by mails.dpdk.org (Postfix) with ESMTP id 5B0E842DC1 for ; Fri, 27 Oct 2023 05:00:46 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dxzm7wB3NWYW6pDtWqKBp4FLUAHqy8mPPzHSeVGicSXsxfdgtcNVF4CBihbGTCbSDcs9jhMNyC4JGgcU3wBw8U1+49rlrtsnbTaBEvlxjChFwNHbDHTEYLVf4x+lS5bE4v8bKmaEYiN5dylif2jGTmKi3aChts4HqDf5U7jzUOKFCEAAYpY4z6edtWDWah9KcH8HzL9cukrFbGLuxkjV64fYmz1cfBV8Z8iQiASxLuKG7t3ULh+x9qXxhTYRANxXCdvWt2KPTQtq+hhauzDmjQ/exp0zGfGD12QS/SfHaGhgx3TGpeWNInfE/YZ6IWlQ11wpH7oJlQL1kI7Nhl3WDA== 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=SKVpLEtKzPYa/INVQg1PBs1b7Z9x/L0gcDUgS9pLv5d0gn7KkLRegXHXHNxArPOXuxFqIv5Vw9k84Tg4rPP1DRWKaJ1CArmNjd/cDl7NDXUOC97otcHIUiiUUs5acLcEUn99jgPyEVOOd6aHZ5vSCwNWR+zEO4Rv9c0OjeUNQexqUxkcmUhG9F0sBVOuXqm79R51Apg/Dpeaq95l3NtDmzohhU9pPDlWyk3A76Lp8YKI60wj88x42ZWxTnWwo9oqtScpPero+1nSDzyJMX/SkuTUQZdGW0E7pEt5hei6x4vcC5A2fL/vdCKqXrtnRD8rV6MEld5khPn6ZbYJHwy4xg== 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=BghQtopfR30QdpqtF/dJvOSjc1+kOoIuagxOc6Ug7zuf2c2q5DnZklCepZ8dj9c92L1x9WQ8HGWB4+1Hzt3PZjHHpULiImx2+MSNy+/zEuOuHzG+JEGC6b0Oq0Ri6ECXCYp6myR1uFsfNc+ulXEE+AiPz495aJ0fOFD6h5OsfYE= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:43 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:43 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 10/24] net/nfp: change parameter of reconfig Date: Fri, 27 Oct 2023 10:59:47 +0800 Message-Id: <20231027030001.602639-11-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e164df8-f435-4b58-53f9-08dbd698e8fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vkQ95WQEqPeS9LEVOcXAYk+yF0/820/EDto2b5flsI0IDIGsSsnUemI7tT2x0k/1mTeXz5NehzSrWIORf4k1kWiBKVyRBUhFiy4xyKRBoTaURGsLGBKl+vCpsAtu2Bp1kHiHoCyeymmkFZWt4gcJAynw4xYqF7p7uJFer2XFrjPOWStZ1cvOZ1v7Llbja3WKjJgU8MF16kgHq82+soPNWeAq4VMTxTsZyu2pIM12nqlRKVZMQ9iotWpO1cJyJdsOQAxKdtaGmIRmTyyM9Nj2KRtsHJS7pxjM5Iei4NputPLCmjSKuTOGPc1cFiA156nQlkKzMdUc6xsEFuiWUIYYrlIoHeL97BZSr6AE3DvRe/mYjTtVQeZTpO/Y6NUa1Ds2OAe4rIco1RTBf4xdhgTblKZ0j4j5qd/PeTQrgZtCyb/NDXyp9+F8KeoJ0r5M/pZwrrnRh3UcRwCSmAezHfi/P+K92WjC2yBMVKmKoxq05uBcyJOdOZFaJ8+E8S7Cv0RwmtfgK64NzAef5xX77txxTEED6pnxTURvPR7vocfqZTyrmitK5blYZ05n8kmHv/EPP3vfwFdJRKuwz9TATaytDEaK9zqoCCWETSDFkTYLHI8WJasqm/WuUlKfubbHwDF/HpjOL6o820WzNAMOxYp2PhyhLPm3hSQ8Tg2XGjm/Z5A= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(30864003)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WPyx4XJIsx5hweG152EUaFiSaga/IshrOfLTzJaZncpnA/HfQG0BmCVSzjrhAhTOTwcWWCBOAbisHMy2t+OsdSC9l7egLI6T5SKMxPo1KvDX3hNcnfHjBUH/GelL9lteSvC8R3p77u7MkpfsOOGpVxUwai2Np+TzslWsEpVm7zsR6rVAkr3i7uiNNwFQxD9v1ct0MYDHNeMVK7hUTD/W8oAZqPY+f5qw5EiOOS0XZ+WhJEIkFBW16VzDE8HWWv6LdGTdf/8CYg4OhMbTExwGXM6vqCguoCsXQB2fZ86S3PPtw+Xayf7f0iyryBK09z56lErDm1w9wSCAEL+QG/Vc7aEjDWu+VhvUCcXhyLOcdPME+lH6NLmv3G3BkizK1Jz3uax1HfyxV9QVlLn6i+RZe2Q7geFyotV3F9OwKPjeutj4VC4hnztqTGg1ik5pr95xTj6ILh/QHt+zqYaV/d27Es7XK8KZhfnqs5rRZrRY7gzLK+O/79ZAT/tIA8PHSMdgCc3KPq34NB7Br9lc2sC6q5Zb40a85YW1OiAzYiDS4dQ2XHee9Xwa4SDFqSvDKogI+tK6PvcH0kE9VV3gHBI/e+MXBQXQIiVF3GFfiFFsqbXHCAn4lNYPJrb8/2OD7oS/vV+PG0MjJl2MjY8BfXRDILdBiMCebRSRy8r7QjnZiyZEIpB62SmZYR1KwW//2L9i8kjlc5ad78F8FK2FSal2I+qIvUM9Nk4DC0LIi6EboRUN3BT4VSu3Jdk9d0o0y2dduuXEh5c3hbA6RHgiYHtvhxlary/vyJKL1rXXX9ez+/QxyshuvKQlJVR9bSI6lgGGrO+R/ed2UgPUvoSxukdDgcdNGJE3mLtdQ2aEI18e5kX5onIleiWt1Iu31KYDa5Fr6hkMhtFFvfDAfQsNIRvU/tmhv2ZIdETSiUu7h/C52qGjJZlfOg5Z+l1Sr06noGCBjdwtA2Lm/LnPr1kC8stgosrSD02cB9Amhoulm4uEl8NC7Io85iAdKwqhcD0wGiDhm8UpXXPfkWefAvkyqfUSDE7Q2OUdxQnWWB2a3ExjiyeltYL5c36/epZbZ7/iY8qT/EwFOM7nuaop26V/MM7hxa86iJk6/L6QabgjD1tBgQjgT6KWVan/3hr3SikkOCrunuOGDe2GYczfW8fDXCQdGTl4pTwDzeoVNbAWIHX91pnTJtUcsEFJEenDAwGajWDI8h1Xv6RiFLyGWnqZ0Axk3Xk0JLilcHT28Yr5QFZBEX8H09sU5FNdI9Zw0hsaRThoUvKBrtmjiL7AOeaPLGvRNG7zl5STGzmSyr6/apmlvd+yAhLgzL3nysw2r+07m6eYa6snRri1HCVoz/LcsvQraRyIZ+fyAAmxEK5cXygLn+/XjmvPsACV601uJgSSzFNwB9pUHsvf0rVx7ZP21oOSY+okDtnfGZfXSB89Og877w6WBhGfnCJXjsUx4o24L13x2dRyaEEazhHPYmVeGppBG8OtNiBSriC7iJFek6nZgxyP2HVJKuv86rAr7uMUKshcynetQNzDRXx/CaHlrTPYL/CzRYX35kygj74WdyVF+YMDSphBo1X4W7vqlLHnq+1xLaqogWJTOa2ml0Wf3B7fqA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e164df8-f435-4b58-53f9-08dbd698e8fc X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:43.8368 (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: 0ksC3boHZyrpHlu0HWWOLyopQ434Qee2AKXpfFV1Edoth4cN4GvRXSNL30hV9OpLLtToESs4TI/R8Y31SuXhWTs2ij/jhWvHIDie3Gic6+Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59: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: 133454 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 64D044320F; Fri, 27 Oct 2023 05:02:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 55B4D42E11; Fri, 27 Oct 2023 05:00:58 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2091.outbound.protection.outlook.com [40.107.220.91]) by mails.dpdk.org (Postfix) with ESMTP id DD98940291 for ; Fri, 27 Oct 2023 05:00:46 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DMLSY49n5Pj060vndxn/3j4FDHWT/QGjfoXWe5QjcU8es6zPu9ZLR+SRHQStPf6y8hd3HhJTOfSkYfC9vIC4LohwjP/5Ip6dm55ArUBdm8qTZqd/vTKgESPsEWr6+eiKqYYWtbUVXRVtC+70fmV0pW9LprbrBNT6OgmLPgzWwrcxN50PmHODTdbxNgoGxiX+o/hXi3SmWPVd4dFOBQJjb0yPLnMmAQqVyYOZzrwyApqBsb5EE5syU1KwAK87si19BlZT2+HIT9vT0podHOGslQ1SR4TQajTW4JVgE3f2bPKE951U6LN/c805KnyJs1J8G6+PKc+jHy2LgsY2DsW4fA== 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=ljhuw4qCvIsJWtRowbUK6Zlibn6lFCTZYr+a8NJhOCXP267rSr1LuiuXTzw2VtvGfkfbJkxWieFnksI6WwFOeXNSCGUSonrThPz1zNI62fgLf3pVn5aKA/xkj8GilYV0wA6GIiS2Qv0Y/giIj6QkQXCLgY6yfy2CFyz0OLlLlsNQZdEx5twk27j55zEtr+VpJ/kcIpSqP81+gf6ObQtZCk56/IvX51HDq09CBDdaAheTYTRg6e71qYdAGntNSM9D+NwrQ8z/5/MwaiD5zcfzcd1Sj7+hLS8xoZKdIWCv98zVUtIuLiixdzTea6uKWsuZMSjYiz88J0v0Lp62i3rPjA== 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=sUzvPKAAChC7Se24o1xrQ+d71yIwynE/OfwgdAzyhcpxdx/XqLEeOfa62RHbXU6GZOOvJDKX/Ezl+8pF/ktjkCnSkkZZr0AdxBk8miIEszRBL/X7UUgRxP40ry37MnzpWkZM0nSbe9xAe6Aieu+Nu6v6ZI2ujMlfKGKvrutRcgs= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:45 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:45 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 11/24] net/nfp: extract MAC address data field Date: Fri, 27 Oct 2023 10:59:48 +0800 Message-Id: <20231027030001.602639-12-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 801a1fa5-7cba-419c-9203-08dbd698ea21 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vBVQcM4X3+u7i+UD5aDx2YGAfBMQjeBcRSjWXeGHukDMtXtM9ZvXSpK9PbJgc/QXexlC67PuoN1pcvnDeAx8XYf296EWfG8Xkt8dlpSmuKi3FMydaZ/D0QoTlJCLwzyMsc36wUcdXVbVc68zOpVCt6jhY97iu7WBqnT0CUYrNynEkNVsIwHxNTyaTdTOla/3tFugbzIJ6uIdUidscQZbwUJ4uEbWrj7kkn3HXClcTm+FcbvMug/p1ETlKQYb+wtgxlSInsLmAL6q0Di9r9tNkpUGHzUULYvFgbQ9oLUeBY6Lr8goZ4RrXe/v4mEad3M0yflXU4P7YEOlum0nsXYX9ZQ7wxDmYOg6D2E57Aj63KZHAx5R2S1ne1HQfza8KJUjqR2g+QdpG5aHmCxHx0UwtIOZ2/i/RSjGdyeufyVuHcuwtFqcerIPY0fZ3SEdLshXtf11/HT+fmnCiQHpHkOYu0rlvKKx1fJc8CSziZ3ETuFfz542nw3VI8S8d34EMMgMVEbtX54lwx223BRXuk3t0O3otCULKBggvcRn/T+z4T29R/lfBzyjsImVAFtQeW3KdncrD877YNU7MXzNG/qxxiVNKyuaKH0XY6EbDSwckqabPKUiz5P0ApsScInRRfDqk/hFGcmP/v8Wb1t6R+Y52fd6VFw1Pik4Y+6OiOoYsc8= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lnFUwvehOalytk0dWbQypDCMzHCbIVUDMwr5iErp8s8hwbE1lZDEeqON0Tws+kHGC4XeWVZbAOGmXkHOYiybb0qgOjie3ivTOd3eEjXaMl6OLg9vVlj9tf1QolH+59+XA6Mv6biUlyTN5y6XVCNOx1IAtCESOcVGttdaguY0bNNgHJhPNM0vHzIvIRW2TENd8wXIuI+RmcuKDy6y3FRt4wqk3nSKrefU/4eWBhyH+aPSWepPLo+slJ3UkUioEBkhK6KdutuLT+yiIFRrQrmPyAKTX5yYbmXEZr7kSZrhlAi8VVsJQI5esDkofw/yx5CD/VFgO1f7VO2HMLlqHxrOxJVoKBDGtlYmARZAoinZ3OHJjXHq+5+L2jm4AHyxJwuEpb16CrZcRIT8agelhB305usxvpR5xZFxRMKhQ192xQp1IvUm7lxjyBcFkQkTIHwapEgshpVIMSS23F2tMZUjcvhC3CDN/fI76k0zKP44TTbFU+eXQlXGkVLPqw7EIqCNnUGmKncuu71VVGe8NpzoyICYgakQCBjiwhnXpSjZB1uJaa5hmGvUy0avGEyNUCpUy6TAyiC/BkBtDxG6xGmwxv57i6k3MCYRL6ACbeU4SBBxvHBPxETmOXgAGgOQ3NCPQGiI66GySNA+khmrzzpn7T6zk5vTVoE3FyM26KaYcbsj/9vPnt9y9RrRqtrNnCY3HTXNzw3ef3yn7jw4bj7L0sfOSAFbseLQrv3PSXofr4uUwNY7XF2a8aKJwZT7axgsKR6XzkOuy8mnjK7QufwE1QttszT184BgeBZJ38cPal/1vqUyEA3HQ44vjVPrxd4jAfqhOjLBgCmwB8JwHNhALFlt626g26i83lyFu8yM9jlbG4bYAoJ7c0a+WjMyvdDTFBIakUl2BoI+9JYwXP6AJu72jGLjItSYvJMj3O5tsJv++Ud478ZqXT7s2E4VNiHM4u6JfZmiOkJ3AxURtqIDOxz7k7b4wNfrxuj+bCx7oOTFVyMG6YhPvdFAo2FP8niAVdRydGPZf4OnsNtBiT3VBEUV9JkQKoLS54fiGhYsK8/MDaorK8iW+O3pTYNam4Ctwrikx3xYiQifs+TvT/nAEOkKfSj31hMPVLou/NO8pking/jq9s2sZCRw+YXjwAa4sNi4FkIq08GzV1jyK4i3tQmTWOiTJLvq8/gEDoiJmNBSHOnfsvVDwMrzlZCYL8Ci24AGEN8E3pyHtYRDsunlXpbaXdcWxc3gfIzbMHY2QNF6QaYVIdUfED30F79hRw43d1ploOn/op8MTiJpFNrRq0nI5ios3+kOgzszKaAor80zpC5vRudNJWYRH5Z9iCNQ0eA8mw7nHwP0gNi1tnHcM71hYCUSLcjczv5LpfiPLc5Qw8x8C5aFGDJDQpB/8adC6J1perONHtm1oqdHJYPoXULU1HS8yUm55wRCaW1pEGLTfJFApB9pVyiyVh/v3ZMHXmAL9Qqvc8dsZbDio+zHYzAgznCL7XRtcF8uuwE/3OrUPVbksZnj66AX3C/ywcWavMFqJdogmyWJpqVpfTWTVa4wjYXrd+qhbyRa/+3/UNbRgVBGa9lT2fjlT5acyBE2yw9t5Qw8jmBYewNvKHFtnQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 801a1fa5-7cba-419c-9203-08dbd698ea21 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:45.7147 (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: bLQPULTILdKBnmCbKOTfMXMp340elc48NeKJp+horVl0fWFkdBYJEhWruZyhM5mqlP9G0M39Ki+TuuFhoZj2mZer8NRL1cB9NFbO/zTUMzs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59: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: 133455 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 894B14320F; Fri, 27 Oct 2023 05:02:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B043B42E1D; Fri, 27 Oct 2023 05:00:59 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2103.outbound.protection.outlook.com [40.107.220.103]) by mails.dpdk.org (Postfix) with ESMTP id 1082B40A6F for ; Fri, 27 Oct 2023 05:00:50 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VgcrPVRFw1epBwDFXmnQHbePvN0k/y9fYEKgSdfNimACKrAs1+muOBYsuU3mPl35KYAd3LT4bG5Fn742m1qxXTJsEw6sEpMmSPSlSKDVmMc426a5GdgKsKEz61C9Vyue/8E+L7Yq4EV8p6014inPKTzpl4IkSuso8tKKanO93VHRBYeGYgp2a3Wqj4xoz3LfMzcQW/hvZq3MSWeQ6DkxEJQn7zNr6CuwbxGOLiuCQjCUm+5kNb73JRQ1IUGgmbXRq/58Ju2BNwM9kt5Xq93imkHxtjTmGDQuTlJWWDXVxE2VKLOs8kbV1brOedKaKqimeEpW098N6Fkl3uw3hW5xkw== 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=RYsedqQ8m8hJj6x6uo0KvuIQ6vCqckWw+h2A8zzyJAp3kWILRItCYO7fQbz7S6EnQ55Sjw7HsN6PK19hm8bWs2SA03yzRlivhVL0qnrYPjVS/7nBIsy/sZZ3pNgfLC43ABmm5AnDqVKB4AMr3uOknW5m6fi16n5wZ+Cd5fDs3rokNyzeBbTYV74AlbrjeZMAPIcbtCP82Wxkg/S9jDtR7VkkDHvrV5PtYlNSBWqTFLU+OCDRjcRLjM/MaUGnFDrNh6x13SweaNQmNSny1qILTjnDwrhF4P1v8/SgDyJx5DjvXF+ytV8O/XMHb7iOcIaHrsSWifsQiwJXwz8slpK93Q== 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=kZP+dROypgDXYMyyJ+Y5eDQwZEyW38/U51rZ2G+GbdlAt41IMHau6oM41vpKa4pIm1j1jyxHYLOjbO9aFdLzvSarPjRMCTyTm5fKu6MRl+CmzMqhKP0p0QU7GYqA6MGTIN7l1NBrCvAD36GWzklyiMSfZgl0qtSxaQ1nXNZTmK0= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:47 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:47 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 12/24] net/nfp: rename parameter in related logic Date: Fri, 27 Oct 2023 10:59:49 +0800 Message-Id: <20231027030001.602639-13-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: b09782a9-5ba6-40b0-acba-08dbd698eb3f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eoQcmLdx8Lm7Di9/B5KtM/L8CXO2GmqUAvEynHD3v87ROQEhSGmtawRIHZGEGFtOby/yNA9/SyRwov1+M+XhKDuqKKdn1JdbYwdT4Jx6M3vVtwuPDVoDFIb/xcZg8Zeb4rwT2g/BjZH5Prx5vGThMSgcsWOPkPPfMkRUD6GruVxvvqGuZYLsPPLZrIFromJtMLH4SOIlcFY8MX7YQUdnNisGYFm31BK/dzUqcvoby01rvgiQ4F9zVBDa+eUl4atcZDT4zDWjpDLzRCLEfa4f2CREnDUeYSJ0JaZvMAXWJHHXTiRsgWI2vvrlHKqH81vMhbjo52lr268Y4dVqzKxeIqDkdEwfj2CKX/SgD3bo8ynA0tx3s7qdG5nisOyE2ppRzfMD45f80GEDPzKjyl+jMfa3pVqpc7ElAj5RqQhfvyyIP5rwHihh8x8xTX6Ubj0rRj/7MuCmUqn4hQofGPPc3ePp6uU9zCylzerzoUwnJzTkA9SRNhH2iznceVS+9SwXIIwpU9SA3r9w4PNH4+gzde01KL1MCL2zYyxG5SVr4xeiAI0gTm0r6oGk4mKaFRZ/bKpwP0fEC2brHSJX2LTisDQtsI9OS9MNv7X/fn8myhH3fsgqyjgCKv3WDiOQ5PNpG7CuHh4onas5OZ91oNrsFq5erhNXY6prai+eQIcVyzA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(30864003)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3cpocA8VcYzxpVCR3umUAz47vL4a3CydW0fvwhb0ONNKLDot1zAkWjdsGIQNEIak35hqAVZEpy5Qgn/IO9HT1S7p2T75ZTql/yxTfaebJfH0sVwPh7RJpDMBqsq7AgooiFPoaoeBWGyr5O/wJ1ErK4VIDDgvDMe+15lwAmLvqtpF0VohNXQaI0NIs+Z28XpYVhm6oTRZnb53bEBGcBWid+Cuzu9BAMGoGlMVdwnIKCeUAF4YDxGZvLB7jDKhWPZbLUx/7TzoWbJ6m1j8J5W+7AWgW/erUtIrMWTKSp22bPjQulfFlK50TGLOT9gOunnvkZtjjeDKasgtQId1Mm3ETD1byeEuxeI6hWEND122t9Q2/YKlUUVIZ16tLMROislcKWQK7v+nteRgjQ753ePyCuB1EYtJvti/jj0AqeDodzu0xIyWN/PQjXtEjuG6mMqoG7oLr46ggvHbXyx+om4TU6xMmUQLbEao6zHDB8n8+E06f75j1ZyXUwCkbmUjIK71R259Y0QmbDo9uenh8EW/tNmHVBQ20GfFna8v7q0zLuzoDJR2v8k1oPp9zNUs0eCQwN2/TPVll4lf4xvYZ0hpM5ySpiN2WD1OBhKCQ4ZJhKl3myccTxoskZXnDS/d5aEe2g2xLi6b3M2cIhguHhiFgiiPtEJeoK9AMk3XoRozT8QRHhJCaQuM/egw1HuLWVDqzsWNf7lpa0NRcA1gp9VFDh6ZqB3WTdmcRjPVm/fl8tXe8M7OtqAXpyJ2qKj1z342egfOT/CtXJSreCM2Wb9ViWV244+OAUw+C38rNnjBbTg0IZGU7qVQqT2IozloqmwYGNDZSkzb6mUGdRCw/HuI4QGLWBxs2FIikhVGRMLzJmOeZai4ZXEweXgyrKhNPbO7FNo2xqFsqVB6bJCMQfLWCFfBi/XErgCxMTGjch3lqRYHSj3YTbFeubM2NnG6AYe7vpFKMV74AsD3VCbqNy1qdwgItl1owl39G/sWrRPHJSTyUsDCyrVp0Kp2kQqjBaaCQOLz0zYnm5nJ7AlznJegrlp5Tle8KDfQ0nePLH0AOn43LCvJli+U1yFA13+Rjgbd2ZyIQl3ehJFfs21Uc6MGDRRJwWC8IoBNdfuROqXXjLYbPj47Cjq3XmPcvQIbICshvQSUvf3uSpBgLL1hypez3LWS8Jvyj5OGCdvDspQ5nooeTaYkBoI9Ox8Q3ffA0vTI85Il5e56A5/Bgm2hbZp3RpJNSF7KFCnItJ/nQ+LJRR4Z04J1h7BgaWhlUS4RgkRpXA5vFPuk4QW3zh4V2GMMIiDcXbq1ycCSu4Sb9dPzASo4Tf8wuR/a70xiEro4JDdaZyYFJyW0dU7t6jWrSfjyV0k18SvlEob/FNRGKG8s+vZ0Hg/7r/85v0t/7kdCSppqo4ILJlKkVGlDLdozKanT+yS7heyBGTkI1pk2QceE3i6NPfs0YTC3QsthMuB6JpRwKxKJmpV3xKlli5T7tAgx9L1cGFYMiobBiMC1J14uh+RgW/b/ajDGsU+cdU93E79ntjPLAzV8N8tXlKUV2XnNXLSTJamzliWtvEDdwAmhG1jwCCgtEieT4WQmEYRi2qQ7Ci64dp8GXsIswjxR4AesOw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b09782a9-5ba6-40b0-acba-08dbd698eb3f X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:47.6154 (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: 2aGusf6yvwcu2XjFVpKRGmFAWSttrYMTQHpEATZqXNeNPrW+ttbrtKnfMDSQtFz3IpBoPSNy5JVtOPfVrRbAlRd+qMWPiRTTphhn+U3RqNQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133456 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 C1F4B4320F; Fri, 27 Oct 2023 05:02:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1005340A76; Fri, 27 Oct 2023 05:01:07 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2119.outbound.protection.outlook.com [40.107.220.119]) by mails.dpdk.org (Postfix) with ESMTP id 3200240DF6 for ; Fri, 27 Oct 2023 05:00:52 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AgItz7WqhmibruKs3ri+fonDkwQRpFRnrTTd4kTaMKwD+1DybhxO/bcKz2OTPClxUgLkEqmpZNhhRUse8bQcK6BCj8zdTwRG4D35JI750oCm/2RSNyvRdTCROnjQ9qYC9XYYhHCRYJEGRhHvS0b/KxeN64Zyat28dvCFxfy0F8xYxyJo059gaa03cR6EeavntB/nAXTipEzGPR2PpkYl/A7JWrW2p81RmGoBe2h+NH11NTrcclD3iypmdiOVEOUGLOmKbGuCJIhd3WSOXnW32Umkb+T+TZ7i/Fh3r9/zYLQ+20Ilt0zUneSS8kV18lnqzz7yZPfFs08ArXelrmvE0g== 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=IuvCn8pYcgBW0Ur3DxxEh8yPAxI1lDc2R8ssYZofWLrL4y/XdFOd5IXpGgscr1L6Q3VgAx0WIFj80Pl/HoK6pbWpptiGKEi8Pp8K9iMYh70aI62GjUQVCMFJ1GFUctCQ1N0VfyDX9vPAWjlDULDx0wB19idKKZxQ0Js9dYKqMg35ZxCt/+XaHZspiDkOz4sBT3A/HRsvOrpQ2FUvAX2vwcDZNSDcLPBiwB/KW2rGAHJhKAlexqrC6KBhCHkidMaQe4WGBPp1N4y5oOH4Qror6+f6lL9zTKpHGCFDEUItPrLTmSN76Gw85fdD9uT/7fwrZOU7dzBCRbdx25t7c/QkDA== 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=qVRTWEbfvbU47qBNUhN06tucJ8kBmjRtWjWAPOuapEcS9D7+yiiG0J4D+8WzQ7oQIzn7wutLGKJpBsmUGCQcltvA9a9bQXOwY27xJlcXbjWGGep0CYOba8MgizTplRzNKIVq0bZSM1XRJxydw8+eskL4D1oTY294aCgxH6Uapxw= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:49 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:49 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 13/24] common/nfp: add common ctrl module Date: Fri, 27 Oct 2023 10:59:50 +0800 Message-Id: <20231027030001.602639-14-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 6bb85965-48a8-4ebf-c4c7-08dbd698ec5d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UZ+NzfOT6XTvAb4rG8H4O3WzHURtqdFCdeRz35Hah4QoUy0fGWCQviM7FizX9PdTdSlRNH52wrpmG/Pf7GJMw5jXcbkMdqDWrMR6aCqNQWlPw+1YG9baUgIMsourMGBV25q9eL9yV7FI1eDl9Ddwr3nqM7lKZq9Zd+9DQojQXOUtf1gdDaGiWLNZzj2+SfzffIU+WdBQbT77/mRJZD+dT8KjMkB1IgcURcxO4xKhxcx9dZhFm30HW4kLzOT57HHmURrfvKDQnUxvavfC/pg9hXRRAesBclM2fsSIBTFSNbF9a4/vAAK+/MpdMhFDxA1E0UqAAlTME8CVchCK6Hg66WB8T0TsWYXf4RGpP50ENs/GDJBdZ3+nmzGtSyzAsU/tllFd2ZPNUqucrLAC1nYYlst6MNYz4rCvxvztmPgOdZ65ZTYhqoB4xUR2ATdvVaCJvWaapkh6PHB//Y0wI0oQSOw4fF6woqrari/AX7S9EhksB6yVKZm4vkmcEE2OiPRLpg6R1pZbU9YusMXNP9TxwH6ZI5Bn269pua6M2nNNq7PqKG3XNxl4FuB6WN+YjdmFrRrWtBiuVSyekf38Nd14mvRS9prdX8UdE4IT03D1m6+b6mszcxHhQtykAeoLn0Ty3uRX+3gDcS9SWoULOJ1uEvAWerlknJ2jmWB+scTSr5M= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(30864003)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DLcuaKb1WCCsqLU8QDv0MCjfmgLvoEdRs6rBzsn0ACOYRQumEOa6BntPd2Mlou4kmTCyckvmcERisqlp2n+1xzD4wVyMilhCL4igr7Gqne85mcy9AM1IKPZrhunQeimWGt0pBZbECguhi7IiImafwy5/+LtgjbJZflaVt7lZ4VepmzcESajCBtuCfbir1lLW21YWPWywz64FPWibfARYr0XcffcvEN1yN9PvnaMgIP+pQ7ps9bhdUDMWwU9dKc42ojZRH2/qbweGoG6SLrhgd4TCItTanLeswTws5ItmYtvjqn3JmOq3G5dtBgbEay1BwfOCSysQdZtQKHVDeafgfBx7ObMiRexYx9UFsQLqCpTYWHeg9HeuRVykt5etOt8K0cLYeDkdfBGIcwBHrHX+Owwcm7WlKs9XoDeiFnJ0+kOwd/TCyD2u+YzDHSA+VEE0ENaXAntqYB0IaMYAJfU602X40SKqOSdlzlcv/94ztt2Y7ZA1ZHuAZPnsn2NFggqkd/FKLqbXkRrhx0qhqLL7AdHQNHFall+GqllpICQv/afrRBDlRlcTfa35R09ka0Vn1E6XwRWUSgu/cnvBBOUWls++mcNo7AUHIPyf8GFZFVaPjCc9O/hlCroEiV9ybqF+d3wWJhCgCleNjYzrxFNLlUyudRJe0y2c1qRCy+n4M4VPYfeeRanmxrzdcQAOg8LeOOKasKJUF1ijYoXUzighk7witQtYHWYQZTaSD3vCsrriW9vtx81/jTmwbI/HzqB61elJSlFAbhHwK1deFB/akgOOqHQIDo0gcaEAjgW2qAWOUzOvmJGQBBzhZ7s4+LY0SUy51xJkdPBKzG9q2OkG+kViJnM5ASuDZa7nvzxptO0d7BNgbBpxU99KwAkI83lpd1nNaczqfZ7roOiJU2XIYlydZqf538kW3w99oo8j1aEDkf38RW7DTzCH00DnE7ZdBd0KNLOZ06CBtUtJc9weiJOsoE9OORpkdKKlTn21AeSEW8bofig769HxFCLEA5DiYmqeSMSJnymDHZm+Gvx1RFwcSgwnGngPN4FVJ9OKYsV8pCiItwzUtheq9F+pOatdRM6fPv0S09TSjpVnKBG6RKOVfHhqUqrrJbWmfocrfAjFRf+j03NGFTr3RbkpukjB+85s6XeuyFiM42qTAXpQw1y4t1MJaWhN3zFBm7btkGZ3okLYwkb5yjH1xEOBbZFxvdlR/GI9QBG+RHl1nhuVRU7ZILTNkd3pMSqSbFefIlsTn0FwGHFLJBgJ7eL7BXWOu6vplZDBndTjJFTQWRKiLoAglhjf/lrlXP161djWWRuFez6Hl9gltq8cca8y9zM9DrgrygLe5mkFe6OoHmVz+SL34LfUrKyH/FkcbJ/zKpGx6IoboI1NiI3h9oJShHVANwpBNI9H4xtkJLUhKWeV+6zisuBbkNrjRuiXaBZlH7G56ocmDh/8dVNOE5/o2mv+ps1F54FXvvHq5Q0MbMK+Ilk/rpawY/pA1KKfuQJYN8zwvrM+LvlzklEgIhmHde9HWPJPNSVZSZZ9wEfgpKwyBFkyOXN0KGK6GRAsDVp9UGqPH+HI4qYbtz4L464aEH1TtfljzCTxw3VFaUEkiPANuA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6bb85965-48a8-4ebf-c4c7-08dbd698ec5d X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:49.4952 (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: u2bxF4NC1sO1JIoJC8XCnmUW+bce3xsyI5g5mvz71XeQfTwKW5Xtily04UcYVMQw6GzDYrqtG2jWJsg4lRIDGFfm4nLQFyc1j2JWSRrE3H4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133457 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 B89684320F; Fri, 27 Oct 2023 05:02:48 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1E87742E37; Fri, 27 Oct 2023 05:01:08 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2103.outbound.protection.outlook.com [40.107.220.103]) by mails.dpdk.org (Postfix) with ESMTP id 82EB24025E for ; Fri, 27 Oct 2023 05:00:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HyFCRYUswzscz94qkTGHU5CKNxCCg5qJvg920bPeaI9SNSHx+4SvvHwjqOy4UQZVYGpruZuxsLIuFVByVqRDPvjELA8RsCccoSHx0QdLCGlwSdVzTXB9BDScANL6G15yuxuyTaS5pS/6Sa2VGklOisj/CYK0Ild8XBprtZ/+3AVTKvnmcNJtd1gj1Qq9WP18Y5HTgGD7BbS8oz7APTfHDvHPbsr76zHA0kLAXxyy8/iA5FJZI6K94KdDRs5emES/yNEopDAuDZKHxTSueW4Xp5MD5iMKoZ7FyhF8a9hysHzdLvz5Rg1EF8ye1mBL0sltJ18uezp5MZx3lBlKJJFbqA== 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=fDwI5Zoi65eCMgzPUHQX9XViemhw7FCUOUzA1XaHSbo=; b=VbKJnzE7JjZXDTIo0tV20LSF0KXryv7ncKyqJMS18W+W+F9Ro8O2nUq/S1wG7pNEYn/Opk+XuUNzSTNsdu36RtxzgbIpiuElwECFBhSS+KBl8mKJc9jhhvY9/zJ6SRjOCPAL42ZV0qtSGbllFjUR8PJ9WeAZz7SxnOzTjWSxDU4auI7XI0QvLak2QvXDXdrUgh+FBvvhMwzYFCgLVm3vQ1OlW6I/vIYf9VIQQ4I74L5Gwj8H/yQwrxFKhvXS3INK4k/zpC1CZwH93peTw+c/kwmoAzUrbifdYhJDQm0pXACy0w1VWpm/V/+thLAVR7eu2QT7xDLYX6/3aVAf4id/wA== 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=fDwI5Zoi65eCMgzPUHQX9XViemhw7FCUOUzA1XaHSbo=; b=k8VOjJxysgRzk95tCiED4KaGpaKpFYB9HmjgCd0GmKAgG2+haykgLYeCDxE2ZiXUyNnM257FPFUGv8coxvjHyUWP9ClnO42VHXlP3QC3MOar2Y2Gn18StuDzQZ+8AZsmMO1fnDEgeqZP0Y/iysksuOtq/Be6MHOzah8wWlcoRZA= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:51 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:51 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 14/24] common/nfp: add common module Date: Fri, 27 Oct 2023 10:59:51 +0800 Message-Id: <20231027030001.602639-15-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b276d46-092a-4537-a429-08dbd698ed80 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NlV324cjgKvSFT+PVrmnqrYzbaA4BD6CSbc4q8rdr4zhb+e5lDMUI5tT5uMCrnneke+R5JqGXGTedBfX4v/B2nFdP6EJ5sXnG6/gxCaTre4RxLQY+i8bqvPD0aCh2fOlp7XvGRCOR1tiCXEoN9QK32Clcl9WXc5to/SS5I6Y8E1L6vKC6+Om2tEJBf5gztvM0PHkMDZu4VB15cLw1e+1MZCwUg4rDJZYFw35QifWNAg/p1RueVzGRDvvAcEiOmDsvF6VA3R6uXTGPSveazDo4+pLl4kVMzZGZpCYbRr5L7gcHtj3xNhXOhNxBPyLJtjYGzMhhX8ZkBIr7WTnB2Jltgom9C1kPy2Ib1kR0zOtpj4gOJxjf2HSiTF82Gp3Tdi9wScPNge+0zAU+aQxk/fC0SKExvI+m/G/Rpf0wg5XxFoN2M0SiL8jq+9r/adnLBP/HGh3kGIWB+O6ciBS2DtXsTWOO/qBdUS26HKb7jZxtb8m+ZvISyyUiBKNqaeKMfAYMsglJFiwKGBrUMppFoU/dD5BhATBSy70HDfuB8ptY48M2bHmuZ0N8ugufF8QTD7+MX+Lm66ZlyC0z8luUErYD1E65fgms/hya8GPQEwVvau8kVBkxgi8kB+NlLosGg+MdvlHcxmB+Aia97Yt0Fz4mBDhjAuSt6ja7gqQPF7Dhjg= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(30864003)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jD7X7MkXDcwkoRQMu+G5+MP39brdZaPqVhRHpiw//LPWHShBss6mgMAds0q0PHIqjQx2SkGopySor/KLFVW9rCaJGYfxDexq/lsIXAL8DBpAPb9vgFKS7R9wDHr2yMzrtI+d6KdjwTO7BtTPtjYCDkc9UDj7XVGUOM2JXFVF1Jc1zmZlHMdAiS9Gb/PsxUZRoPKZ4BhAcw9tYbvmO2O9NQS7GRgmM09M9jl7IV8uwkVjrAEUVQ9L6Q4ERKqzml3fLRdDvFqm5ZQGaspWDzbH9BLggTmh7Is4z3SyYAHmmgHQ53xJyydYrYOcbN4wKAiyf+clhDO0WVMxzttDipI/Lvt8GsuPoBz0BfgeMuiKBVSTIjIxgChtZkKlD0CkE/6hlqNGcsqvUjjw4bQWJEC1keXP7iBuDKTLo56X4OttzXjUJvqKU6s4h1qSGXDaILgIqpWeqQwP3X1GWBuxJx3Ce9wi4ETpgEUX8OYKmiQvbrcAl1QsW/ZzIfwaDiCFxsC4yeKrFwTSPbBFUph/y4hgRonKfiShO+oFVZ0tWogWp5T3OlqMiCgj67NJZz/6xxArq3uBUkOdq49N1GWSiusQzediPZF9CAHiUWFx/vHyKEHMkVroez6BaZuzL/S/A8CBw+jvVe8Nw372x+ezjqyejOHAKDGTAunR1JWb8pZagWiEabnQbvwxdeZ1etEddYtNkkDGxYT9Ti1A6dfqKDS7Grk/zJNBz/fvy+3h0L9/gYvjIjXFvkB+EgEwtX9WZjrpkjod4UXydoHkHT0qM9f410jw9rYZZ5Ny7D+iG0i9HNSVhpe3z4GWbZMYuSyp16unA6G+yRE0PY9Yje3+21dmv25l1PHBfbY5QDdmi3F0N/N1zrnJYv08k8vzAC+c/ZAqTG9pyu9n3j5XTeS6O+TTHyz3Buorp7IB+ZfcxFHFGvzQJ4EFTS1ivM7A9mBqs/eB4BAMSInRAzFeV0FG7u1F3CYi0Qz95pHcqCMpbS5CYy+r0cu14X3a+t9tZlwtm0hJarZRkHajrNUbol3xIjSsoBHmtWZUVMnSFuIMTO/a+uwLvy0MiSvsqpFmK5fsu5c+S41mmjhUvhFJinwgBkq0JEm4VKHUE2YF8heiC9Q+V4gvQlJff2sXb/ujTJNmdbhBGQq9L2aE8mRTYtun/WUMfR1WM/YXrpRgPHbtMDD8SxJieSYOkmi9SYuFjYtqRLQfW8n//vU1Kwv9c19QzM/kOlYWg2YpYktoAowM+h2NDwcDTXAn/FLLbWJt/DFRzgPvqoWN6qvfcEYmgDySOJ5Lv3rat6FiUTUUvmwDS+zFnS5nZVGMY33/fscIBm8M55jSgr+FnD1sq51Hniot7c+ELni5RMkicjjwXv5HSxVCw5s41HnrQandFeoVz4KCBskdctrbSbPzRglF9/dZfGRIDELE3zxWwrfoDw18ERxMxbjmMb3XmI+fY0ITsSVRvnnG6kzR1SswCRP2pQ44naCbzn3hxpVBwCMF6lFk7zVJki0nKpRpgvKvlwmlqK6SXgAjoOC+5x8A4NmPs6lhykeHrRpuX9DEeJBFbaIATAt+nl8FZanTvHNm/a8FlTLlZNR6Ein8/URBuF8aUA3HCoHAqA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b276d46-092a-4537-a429-08dbd698ed80 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:51.3905 (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: 8rssZhrTjUJyaVVTMHXfjXxgqL7uh+tORx2ddMGj4Y49RqF4icjUlobj0az49PV6z3J7pWI/AOQNK1OAyXpjL0Wti7W9ZeIHQZfm5kUGexo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 cda5a930c7..cca7fb7796 100644 --- a/drivers/common/nfp/meson.build +++ b/drivers/common/nfp/meson.build @@ -7,8 +7,9 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64') endif sources = files( + 'nfp_common.c', 'nfp_common_log.c', 'nfp_common_pci.c', ) -deps += ['bus_pci'] +deps += ['bus_pci', 'net'] 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 Fri Oct 27 02:59:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133458 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 CFDA44320F; Fri, 27 Oct 2023 05:02:57 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 48BB14281D; Fri, 27 Oct 2023 05:01:09 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2129.outbound.protection.outlook.com [40.107.220.129]) by mails.dpdk.org (Postfix) with ESMTP id EDDD442DA6 for ; Fri, 27 Oct 2023 05:00:54 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S71wl2z2uW09/Il+tpzAw4CyN/b6iflWceOLseRFtKz+pU16OCUdZpCRLmuUGYlxBOAueqUtpq7SsULeu45JvH8y85KM5XLsk7dma8fz4fGmT4rxMJ7NyI+9RrfBpye0ptJTD3PyYwLqDxNr1MdIFcFSgZEYN7vRHhRrhVuta70d+8QoVRMgcSyQR/3ESsY+jS1iZ5Af+TDwQs/iHEz+3inPHEarz+BOv4UUW/EPs+N5mczDm2t+4YX1QRzX6083fjZwFEV2pPhsOnnlL5SBDlZpwZl666gd8PaPR8gTaNoqhH8dSkHkPXAIU0qfQ1MyfpCkJwIQ7zvCPsfDvkmqJg== 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=N6uCA58I2jnjS2VJ98ISYMT1e1nnUM0JRNI8cjJOmaFJETEQEQGtPZbfKubXzfyIpoxJ38gIOhBWyN3uZAqcDH9TR88Ypf4xNaOnr87jLI8PAV0JNFBJXeWaGuDVMhw9yIGSDi+Rm/GBTLuOKt/xxuoUdqvBGtuhvHAhSJfxQGFjhuddVnYaOW/ONzWQxp+bjcVyehOs8M/6gUgAUHfCSoKL2hzzfmSMneyYfhmWlH9K+quLxjuczoubbIJUi1eLt3m6xBuZu3LACGZg7l1Iy2fWXrTVN+ZAAbioPAsk0mqrCB1j+b/UPXJi9qBvIYCz8ivipSthwjMDK9+crL5BTA== 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=JDbO0lfE+eyGrRvrzDCm2X7y8o05TdaORMVDrH9MQFchZpaCbref9s/yD/TmUjx1aw+SgrLRxx+X8SMXkwl3G5krUF0JKc0PE3t6W7ukF2VexqE8Z7kYAzSfXcoAEqZQTi3eaDdeP5qS37p/FO47QnF2VNvlWCFglZwEKFaUqvU= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:53 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:53 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 15/24] common/nfp: move queue logic Date: Fri, 27 Oct 2023 10:59:52 +0800 Message-Id: <20231027030001.602639-16-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c6f6f5d-9b72-4f86-e779-08dbd698eea5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8d0OWJCA6BMpOYz20jHht1EHGTVKpx29hVXOF4MstmF4ma9j8NsmJyXbFrxV+8cklcJUP/59eHL0gjs40Kv3Kw2Iwxf4YamqHfs7RMmUTLL0KOci1bM4bHcTlrAkDDCNjiCdymh6rS1YkMDGKWDJn+760micck9ooKLyAXF/h+ko8ldZswrvXe5f2BIHnWeUqgdbb90QxGZdIl8ns+jh0d4eujnDUjyEuAHDFM5XxWZJ/J2glRXKDZqxV4vLwfSjV6SD9F1nMIXyNE0Pwd9YHN8RV0KvhfdJIT99fYBWtEuxWVqeI49UEAfPWePzz+BVuN2aIsFaQBGOH1DfosdwPW4B7aSYF46bDPqnQ+oe2h1e74y/cDIGlCc5wuO9RLbg+p8ApoI4ruTuF5KzTcbagMgM3wQdZR5NYvG63X2DpEVEhNbQhPJdXVffHvKsxnsDKAKzoO0iaulzKHlkq3Uaqtbzj2kg0JSAOpKa/GBE0S5kJWGtWbyusWuji0pn7K5GLN836k2KC5eWQNkUE9dzjxTPA35vQvfrRtKENnLvrNIM7Y+8L6QXnDCD+14BP8fe7NkfFXL7cdZMr4tVMq0nmSGlKGLBhUgDmdjDh6Jrd4+DUrOCf0JfpwQJJqHFMaIGN5/3sG1R8D8ZE4rroDVJu8QR9ByPhQvDoquI2CZxesU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ln3aK9QU2ag7lKwHKJdKBy9CdNg+F80gyOfBTKIftYKeI6jemAFxnz86P1drMw7SB+EXJdIHOMeJYFgl+gYGcdkuR0RTnvwHSsGQRHZUdBbI0thN8B7N8P2DC8etrO/UhzsNg/2TKb5YdYFKhsgmME0eEe1vNG61b5PDTXAbBcEAXvsC6/KUI6Q5r2TtYkO/8XPV5pfacGXMBe+BnE35j/zlk4IcOXPy2anHD9k3p8MQvsszds/92Zd3/+QHE2rjHnu6oRhWAbibjs+poNZKe31Bvj3i8p5Hkef86IeazjeqgqylmlYR1muqQxWc5LVsEUPBuJ8CkQdpO+eyWvFqiLVoqe8giTI46Rwjl60u4aEaQgcrnfImnlBWaTtKOx96jsNh/z7KM06i1tbm9cj4zCZhfn2JWjbthm2lKAMcZK6KgJokl4j7mzxFZPm256mFJV3slNG8L/FUfcwAIZDLpn4K6p+VxOM4deX4ciA/4gVjc+aM1mElK0pc3/JsMOTN5AxkAA69sYB7tCr+tFg2dA5jq5aa2sIlYLNcbXDlKoDWT97cCyF9j88ol/GszENg1LUn7cYDHrirHpug94FPqGAv3u1C4zqpIVrrkqqdFeeIQIsSGdWuQE6X5K/cxdx1U6eoKdWVINwfSoF0M1fKCMQmW6RwytuIN1+KUx9oJJdiWF6w2JT2tcqKGJ8LXw4aZY/CJdixBxwc422El/aFzdg3rr601JXRBpQriqDIaX2pNilxI7l0lJYE4RY8VdIGe0LfSCDkg+KJ2jka5n7gYJHAlclnGLzpKhOzHodrpTbHmhDRZejOnAmHRHzh2jjhxwaZtKKa7QYFP3Wh3glydZH99aQeTzn84XKuTRkamwAF3rOVmdWTBpH+yyWsbpjjyV6HqxLoOEfOLNjy1Bs+lNdvypXIrwlorkOdikUtA4wb8BgKD4IuNOteflQGXjEiJW7bqJSITOu68ZE6ai/r1b3X3nkRarwcjgSW+NN6nwLslWDF5qX9xQmtxLQJ6XsX+qNjym/2fj/JadVx3iGFZGtxn4yfTkA3VVNck5UIZmGQ0pfWG96wPmu1okV7UfrW8vufzecf8Pxp5XwypJs+DvJvT4zvgTxfHwcYbHU+YzNkD4QbWCE3fR+WA6vR1Lc66lGGL7nKJPYOsShky8ok1c16wwzWqNlKopE2eiOsfoMK+RbHHwsLiqsF+cD0JJOQGiokIIfoO70KQcDqsbM9tL/2NCgxKPRRkjQzVF4UNCgXj05XJ9FkFUQ4721O9BaEqxGTTtl9MEuO3ytfzpSMqzUfCIvJy491sBVXl3D71Gyu8CfP8mdUekRdir5hd0VFuVDH6uNFk9KvoZ/IaRLsT5IYEuvZj1qQriiXMxYqjHpVcpVMJFSZaFllt9cE8crex/ZCLqm9CrA/oGUTM5KhU4e2x1MZtA6Y42KEjlCitepWnGaYA7M7jAxvpAUVb5S4j671n/4YH2poCmnBGqJLij1YOvUKeo2oslipJRVP7LwYg8MlQL+5MFUdk+i6CZTQijsllQk6tvFVoxL09+oFGXpyxpWKytm1+ArRIKyi4mn0UKJsGAmqyPqO+quuLN+PaCZF7gqr5XkDGrRrOHwBFA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c6f6f5d-9b72-4f86-e779-08dbd698eea5 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:53.2965 (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: UAslnqt16QL8/a4ex5iKA4rPhfCPLydvRZ0asI6LqG1uiqkimYZ1QU/Z8vj1ilrHWZCn4p1yomyA3Ja9c8hSgqE6W7EvYlrXezwlKXPKC2k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133459 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 8119A4320F; Fri, 27 Oct 2023 05:03:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 913B242E50; Fri, 27 Oct 2023 05:01:10 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2115.outbound.protection.outlook.com [40.107.220.115]) by mails.dpdk.org (Postfix) with ESMTP id BF5E942DF0 for ; Fri, 27 Oct 2023 05:00:56 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FRjbc9RNj6Jl6acWQWUQRf5xZX7QpWYLDGLkkvn+Zl+JFlImWjHjxnc8Rig0ArmGP7Yf1NVWSeU4IhUi0rzUTK5Dk27M0dR2Jk2T1ir8e7n1x5ZHS1Sb4wQPpXKbs+j9HtBIB4tmSpPOPKOQMKr9rk4dPjBKICgpTqiPBYQSV0W1autsxRDnGwcZtB92YidtcbC5RtAe3FF3375prMiQJoBaXMNbKRtFwrGgVVIejHWtRINFHpGfr3FXWfHckiKY1mGTPqHMooF7t48CKMJ6p58pGIMSeK+mQf7xzSHMjJLapDmukxGrmXpdZLXlDujJdzzbYMHOngf8wHtoUFnSNg== 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=nKeX48pz2FrHKaDX3gTRSVaNHxR1INmWwHDNFVnwHrAZ1mJSMFuQynzDK5MgqK4zrIMUI9aVhhtMO+u8muMH38Gd0QCQiiQjEcfpSKarEImK84oiRtX/yemNfuS860fjx8/iZsTQMmwk/tgj8cyu4PLQUi77Tu1XFAqDPtSZ3veXhupiHDYKX29TnbAVPOYbQRzz94CeUQ8og+aED0IT2IX40HmhYy61PUmWRPEOLuvyySmLl1XvNzOzOHm9LSOQXmINaUWBKl7PoS4+p8LYpThaB8ddNKLJgb9rBd99Ctl+odQ8Tmy9HLoRJlq1YXEIlTBg0vcFCE+H+Hk4EFDGDg== 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=wFTAE5Zerh6/I7uhoQUVk+2xSiyWLURdF02cbH5qc/JM6DF5clU7GE9w+7LchtYtYh7WmFO09+SK3rKBCS3JnxXOccHGu5R9S/EcsB/IjTTtYDJwoeAQpqJb9hXhwN0rTTGTKwHQek1VDorgNi3zKfq+NJ03hEeO8C3Qx6GDgKw= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:55 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:55 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 16/24] common/nfp: move platform module Date: Fri, 27 Oct 2023 10:59:53 +0800 Message-Id: <20231027030001.602639-17-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 2926b0a6-f40c-457d-643a-08dbd698efc6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +wnW7uXLykXRRyAJctMMmfI+jk+/N/ZD7uL0UdobbsJzR3GTBISFl8QfbrhQi0Mtl74wFiixKdE6UKzeiswvXGM4h3ZWmILzd7CeYMM1JVvZas+KelQKJ5ucNi7F9MSPFwAsrW9QchRN4BsF+0c4iAegAzZu1aD0c40N23iPkb7sCzNd7tchlnz3bVGyLfpFD+6kkKkYBWrpsXApve9wgbmGIchhfXceuYesSRMMhHrAULSJXoKpZ/+IJC5wniVdNbd3sX/CTgDa7I35GstDJC9/s6dNcL2f0D0KElRYgwj93XwM/OLj2ddpdreipwFwOPuQh3JaDrJpVLivXO+/rzIpSC6ZnFvq7szcKLWx2mohqbMeXigI1Kd11ernAQ/Walwm5KArP3HjqTF+ixUStFavFOFfLl7CE7U0OUjhvYcPKv9Ekr4ch79g6QQOPtTpP0yR3uC8uTJAZJm2hXsNUl6DlpQyg0MfC0CjtIkdUDcCMqNh93dgOEP0dvprdmtSn7z/iz4MSJaH3VOwx1B9lTGqDwlkms+psKBqnQ+1ugMZ/0klj6dN0usQNxGjBBFbB3Lb85q8YowhxUK/9GYav4XwbM8X4Kw1sqjPR0+YtBkz8Ae9LVd7jznls2JHb2WDmBK/Uedu5NNDTe4lPPCZOOSxoflnRgrzOGHXK0uhBrQ= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ysAlEjlWSI29qplSavzGU6ooKkKunqIszOw91CFBQlgW2NTUbtCwDnr3WLwHb9k2IHYglwjPEmZIMYVRGCjlxjZAeMTK6bkSwGkPW/LYx9t+P6dsBCcwj8TOkvC4FCBHxTIsYMFPa9sHJ2Piab7bp52/GjiXCql69RmM8uSx0tGJEMKxFnjbxHCVYhdRGBhnOs5ikWnd7Dp116DTrQJiZ8GMhUmfavB3i8Wi8G+uVKOrGFBMlRhdtZkCD7WyhHRe133/BWd/4SmeI5cWMLyFaREOB3NOhq7vyYk9+96NB3k0/FVUqRlbayl8iammuO1QU9Be4rsHDWapFVUBlpFNuVNFNVMtWv8W+Yo9TZ+vxOXvaoWmXWa8Oc6NcutUsfX+QAV0gzlTJGcQS5VAWlke9gUmxrURwK+POtZFqiJWReefsTKJdxz+VekToxayKjYGnkECUQsTPYFmbPwfURVk2NrgLcXsrmMsmsIs0tA99qVECQz4ZHajx9Rw2IEg8weyP2dpUbj7uaa7xJ0qvbm4QCTA7FptgIP/nXnBV/3MraZEsfrLNU19WiAHvzbzXt20M7Iih9BxF/yjQXg+MR1oVm0i4DNbKCJTRCM1MxrmHbH6Ou+aEgI3HI3Wv/TsYZAmUoQ8QhJm58NofJt8/2+It0eLIEhT5h2/0s1SZwHpPEob7rIdYcbRbR9d+14BCg0677BL7Hz2o2JD/vaQuRyeTfcW5WFFUvHWQyufQFTlh6rGmokq49tIOjUR0AIjqGKJhJUK2UDvGZVcIZl+wgx7uInneFKMEkPM8Z6Xsrwl7Vegf+RDK0GDbL5Xwieh9y2r0ZMgA91FUKUUaCl+1oLGSiEoQeQwPcTAaT0J7C/5AJVgjipVJPRHNoVzvVONtqkfeABXGETN0l9irS+FHYW+kqxZDkQnBMA8m3kMsBm5eIzIT7vs0TP0FubxQ2Etauc+dVUg1UED0nnYBM6vdtGF0EwSFiaus5wrOjuInetO1IFDcgP/zynGyCHkR8r8Qdd83sPIEIGigohi4h7IybtwBHuHnjSAvCouveTyx2y0/Yr0uSGVOF8mdKhb2a8yX1KzGMrf5wMIJnxYoTlzbwDjb+Imtljl925WTJvT0/oQB2XvBU//Ejs3ncIwUcviBqzi0jsAMUmisk7ThUG5vRM8RZFnCPOcvdJW/UBU1TL97MwZYrQD23533ctjcoz3SV3dYUVsYOzQqQ4HEqeKXneHRwmtDuvO+CdIDEiJewJqErOz2WuIJVlLICQkWEYyPSwG5gaJE0aevSGNF6badxYm562RJASWcZBHjMUhwbqdD21JpQMaaPj180VjlJnE+8PYvmCp7ZhQmL3gKtYzVwpj5tkJmmHLGxrNi9Mur8apPaQ+ODWvZK4y/AJsm75K3+wXBRxXtCRJTlpU1fzSmoOqINSZNquX5HF9B1J5RVY1U8R6zfY/aWoev9xkTs11/G/XoiOZCjHLYHaVK1urHlfqAGNaAPKtXuU93l8j1JQhw8ihZhNrp8dYpVMFUEp/+HFm7jI59uUFhyFXcY3AednEKMPZiI77dOncZpuuH6VVzM5zfL87VzhKdNC/BctpwoKUrtHiCE3A9f8zHjTkOtdwow== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2926b0a6-f40c-457d-643a-08dbd698efc6 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:55.1768 (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: wHMGgGxVpml6CgmytgHXV4UfqmFLv/ChgW/BQx0RTs9E6OuCw0VKL8vlRT+Hm3YorX8UpmrWf9uig+2reZLdMu35UWwOgB/KLOKwsifqH80= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133460 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 CCFB04320F; Fri, 27 Oct 2023 05:03:14 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DEE3842E52; Fri, 27 Oct 2023 05:01:11 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2096.outbound.protection.outlook.com [40.107.220.96]) by mails.dpdk.org (Postfix) with ESMTP id 94D4242E15 for ; Fri, 27 Oct 2023 05:00:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CpSGmn5F5yzVqsY/7K2eky9QQhl1e4e67gOhXgHlvk1P/4TKqgqEsVKbfJNuPQJ7/rEvmJRVz9cJ4/Icsj5LYPW17ujwHoyqBUMnrcEiONAKS/S9AHIfd0Af1NEFRUOowAXtexsx6uZxjL9gEhv4PuN6s6c3n/rclE4lZ9p2aoU7Z/cqKRkRjn9W7eueUYzMgHa3f1ZCj4Fy9+QV5UDasXUosqXHVw8icJFnkSk6dwohLcPlch1bsLSn+7F6KrBLITEkmqSXnO4w6MqJAaigRhJdaDf9bFgNO5pXW82ZQh4E0qzVQ/7Nc2YEuYaALWLZGA8TQs6B3TuXxQ9aBLh6tQ== 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=EF7xNBqUOpQNvYGZKdJz/UOxNnBLoG0H78eBn7k8+VY=; b=cZc0bLL2nZEYwRVFL2RUR4+p5VsZtSApGt98B+MKb96tq2htsyM+5jYYgqqGS5ZnsB8wPE6JM6T+YG/hBev7JGMoBDjfqBloY+sj+EXd1YQRlVvLAcPb+qzBjcp349cwMX0PvjaHl1/2LuAh/aJZIw70SNx1IYOKdI6Q0t2HxCQp91qgKB3dPXhIHi//A0ckp/wtM9JlRPrNIiN0WPjCO+vNyYX9ML/6beOgADEoP5xdoq1m9Kuz+08FRtY8cvql+2Dv9i7SO5DuHXwdrGD6pnRSquXSXmhacF9arhsqNomeCx8OPkGutPhbLXdnzbwMlxQ8Jy85tEKglgIQAM3hnw== 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=EF7xNBqUOpQNvYGZKdJz/UOxNnBLoG0H78eBn7k8+VY=; b=qp3KtgN9kL3ZO/nJo/HrUsKn0NvLewJh0tYarL01h+6q3UQbXI2MWZxEOjjFL1gMaP1t05gEwpYwPEAuZppAj7MFbfXdKNO5Jnu9i2h7rEvk4snat70T1ihtRvudkLRDL8H4bL0MSCFqh/jsYJSSPDfsD4bVjBJKHu7o4mc3uaQ= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:57 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:57 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v4 17/24] common/nfp: move device module Date: Fri, 27 Oct 2023 10:59:54 +0800 Message-Id: <20231027030001.602639-18-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 33635518-7c79-4089-1a7e-08dbd698f0e2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CJIM7hewsYfLluZ2VjxkluGihgXrdUQd7p1vIjdU4Ol08vdDIDopCethVHTHFLbBp6Sp41cNd/NB0iBEiboaVMMdZDZv+pJc6Qfc6fYnmCSVrsF5NgCNaPpMfaJNe+NFuL6y/0Nwcj0eIKcuuqvCuH8PJOqPabul1RMSrhgMnfGLkZDjjaShb2I+evw0HzEympGAF0kLlMN4Tn4PYSFY9MF1iRacbYDk/lDb0ANWz0SBL3XRaob81h7ipBds/OOJQ5ydp/85avp7JfhlxZyip4b8DeIUndNG3ICNVTqM75FQjPwPcOS44+bgUz8OSqBAYWF24hr72KLtlDtwDx9kJ9L58sY5oy4IbnC16qMex+fe9asmHHTfNCk+STHeYldi7bvdVALHDOJaEVvGl2f/ZlyULgTGcuCi3ABIioI5EAN6Jp7i5XV0Pz/bpuN4ykKz0kpw+UODdeHERipObo9M28kinp5JUi/F5Q/Wz0koUjAaDjmCfNk4GzoJSBRyiZTzJ8YN57xQtMTfSILa/b0l04ae5/JlB6xdFTODkaR7N10qDYFBkYrhUCXOkKYPj+W2Yue0n6Mnu4sTfdHCKcYvIDk7/x6STlZ6KDVs+5Ga8EZCV4r8XDocbFpURPDXnL72zX5u507vG+kigGf9bFkthQpSBwXNM+FkFqDAiAAobzk= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: F3/VoBq1OZ3ETiFYanJkv7d/ldbR0KFqzRJdih1bkdjnTeRhkjm7kxImqokMqZHS5Dm+ljVehp/IvWHwPfAZVWoEAMRYBuZALrYpYx3NXjhqNXqvsGCZFqBXijLthQtF6GKJA1bZLOVtsc6/DSkfaZREE8qZGKoufBQNIgQfErNtfkvW3HnqWPcA2HG1t73Fcps8AWsonHaoN+HlGG1/4BAXb7FQqBQ7BcgM+4g0zq0J2lNqe4JLdEjPtn9eYi5iF+f8fSvP3NraEYPcYoJU5LCM6u7IL+xoHB1a7O4xuorkjn6Y7alZXaPsmELw9SyreGsXl0nLAYeMCVRXj5KYi+gO0OhLiXxy9PrUcms9ghcMLg7G7t+VjqlMmh65OjAv6n+QRLxiZobRNESWfQGaYSK8FDEOTGp7rrQvicMZlLHBq5LvIFFtj2r9pVpRt5FmDxf5s1XlX2PsFqdtzOHfqclXlA08S53RCknSVIHmo2oVa04/bMO9gMHoN/GYDLI2J+nMOfIb3sgsHc07UWgSPECcEsELMw/LFKuL6+Gi+3ff3L3KmYLSI/8Gi6SHA9QDk07LA46B2B0ZT9qFKKenyBJA7z859ZjqU2MOXi0GyZJzazU7nVEkb5Qa7bqTkI2vFMYcSJ5kBqTDK3iCNI2Nv0tfd4ABccyDF98Kfx6A9DCv4HZZlR/T2aNWZkcecEIzDizlXaVdVVxgWx+ZJWd8XJ4NUikWFWdWjMafL+1c+2H/3QDg3Klk47CRlcDE1DbDeDFrX955aMlPjm/IWQ83jdB7NqBso31I0aIVQYVT7KKiBI5BaUjcI2ufxCGUPArEka1jUdeRbo0cF58x6ifaXTdh8vT8Xr+ph4qWYXEQAfNOkQUypB1ogNVDaCbnyZNFbKM3BqVIqxkBKF2r6cQU6dsDdL8sh/2VtmX/ZBjlMRvi8ObzPHi/kCaXv1lMzJbYbGUG4i1H6H2MVMdEMJ/OONyYTMr3dShWC95avl1xR9dxREGtuvZ/zSowgiwz7qDEFGrkWoX/+RYBLEH3vKq1IcXoY3i/Uz50CMn19mKeybNR4BOzrI+D8Y8Bwsw61oJilYu7qIXKnsGtRAnN2yZTYaeIXFyd8O1d2SRt5oqhhJKdFjHsH0mJnAWrxIC/1emzRzDhLDt72Nrpjy5TF4a3HsDCLsBUPQHQw0ICWw9wcFd5AkrAWaVVyqzRrwh5rS0Ohweu67epXjvCftxPNCRmF69eCtvdbB/FdFYK/x2Che6z6JQIxiOPVSf6lLjRUPjC4+2GOnAtQoMkYrj+431cPPZGorsEhkpjnRVdL+kvqvTAGLR03oahaobuG6E9hyRcK7PFnTIC529AmYdZcEDrQy1Ea4mrvFl521SOJ3ocYQz9w0rMdMH8IrtVhGF/MP/2X36VzPGO6xwNBFTMrIbtcoQLiOgDVA/ILMh04R8MHoQCHe01E9LbaPhaAE3bDvN7EAZ+cQoaYdf87lNQbsAjU5l+j9EH/4UJh0ric5O1X5jHnV9cx1kug3K/KRWaw4fuTehpra7GYpL7gFfcBlAPVKejOZLJQ24xg51UyZN3aGIbuZM+hDeIZzEAk0/0zyfuL+nXvdUxOyeMUJK2oK58mw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33635518-7c79-4089-1a7e-08dbd698f0e2 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:57.0703 (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: AS5XpzGJXyM5IosENrFFoiKEodFuNv5BqZ9PHaml//np+931XGPqxLgM/T3W2PDDqxWQ+1hzRKj7Grwpu6Vx5wFBsXx5VwTy+myxArXJ6Fg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 cca7fb7796..a09d1e25e2 100644 --- a/drivers/common/nfp/meson.build +++ b/drivers/common/nfp/meson.build @@ -10,6 +10,7 @@ sources = files( 'nfp_common.c', 'nfp_common_log.c', 'nfp_common_pci.c', + 'nfp_dev.c', ) deps += ['bus_pci', 'net'] 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 fa99c3b6aa..cf9c16266d 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 Fri Oct 27 02:59:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133461 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 255CC4320F; Fri, 27 Oct 2023 05:03:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3F91742E5C; Fri, 27 Oct 2023 05:01:13 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2115.outbound.protection.outlook.com [40.107.244.115]) by mails.dpdk.org (Postfix) with ESMTP id 3930C42E25 for ; Fri, 27 Oct 2023 05:01:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oP87sj/Ei21OVQ73FSwBFn8RyCcqKyUENjR+3+3Mhjpq0gKYUCOEANlxtKmRKYohtGAScTY1KqBXWPGK9fT/BuhxVw//dMrBE3+K06cbplx0toPI9WmD1kXIP0VoHDQ2iUQ58mO4zcVW8/edanaiQeBbV96G93iOJyGmHbTIAvQoNKz1ySAtDo8Fr0ZAGObWdjU5bJgKazJPryrK+bIPWXQ0v/ujyQ+aQrZEX1wkxT8VPw2zPmWhMCkyDaeXiPjJIjP6euuS1rwG0s5XOLqJB/NCpY3Rpf3Bo6ta8P6x/sj1IkGiENt2QsdZEDs/4FWLsmqpmGaWfKCkwBeCA5IanQ== 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=zpZPAv0jdrtkTzfvnJ4pHi22pnfEE0a8VK8HvHh7bE0=; b=XwX0ie0FMeI0EkaDeu0IUnBUtGbVdJhquNvjcXcqZm/HcE2wox5wXBmLj6FiuQHrn4XiEogOI5Id5imkhL8dj5GMwoXo2wyqFSIoifr9xkmcOZpJmQdgnXWe0Zuplw2WZB/Wf1JX/zoVpLslCBzHTTTRmxgg7iqe1g4nzGRCjrecN5Lbx23V4VgPYF5wmNVu5s+C4DkgRZ2mdJKcoqlvV+/SnYM9XJowv+1pQOrrGIxKiVGMm4VoZmCiuQXOkJFYurUhQ6vBsk0971XRwMOdgYCwbX+BZKoGugZ89QT/3edS/UfCRIkM2DB84GphlNVs+Cfp/rOzD1Rlm7X+ylZ8xg== 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=zpZPAv0jdrtkTzfvnJ4pHi22pnfEE0a8VK8HvHh7bE0=; b=ZPzOX70I9tOJMgHS+2Xps5kZ+wVsT4ct3cPxG9sck6CSb9x4F9eT1p8GANNcRhCc3tU4NpeTbEisxiqSb+QMAsmADnN+FHx4CDgqjPR/Zctn+5+sxXCOA/92VGlxagVjorlzKgrE8OdcrM33EhaMouZbwSi6MjISbM+lWssz6G8= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:00:59 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:00:59 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 18/24] vdpa/nfp: introduce driver Date: Fri, 27 Oct 2023 10:59:55 +0800 Message-Id: <20231027030001.602639-19-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 0cd3556c-9b4d-49e2-bb46-08dbd698f247 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ls4tJDKiYRcZ7Hw4bnL9m+2M+PuazvvkhcqbwCBYT0NQPVcwSUMhfwIDZUYmul/TMQG+ZuJXgVhx8LAxrHrJFsHRANfYrgKDeLEJ4VC9qKrP5Vgro7Xc6yFTqv+r7eOYctpjar6t8OjiIb0Wls9e3Xv8nmQuuxEmag7Im+v/ZP+S1LXd25Tx36T/ygTkF/S6MKriwZOoVqsQSUpqHqKu851aiMwVAt2/9GMMrj0e1E5mA90iWpnolfufKsjwExTmrv+wQOaLFFnOMDYU1VNzbuJW2j1Tt/ovxI75tV6P4956xhgfFpGaV5LMB55ohHAFjWRIPAR8vny72C7mNZ2xL2HsvPRrVePTTGngYw44HN5NSvloRaUjbn6n9NOweFolWUzfWyC0RyamZaBjiujXNWatgdt15YDseiixDFPxMA9Nltw01cJIGPgSDL3BVRsCtyaTWT97troRlf13LPOJU3I8zilPqw7XiUflQ7RMI7G32Gk7SOArcputlZmHhcsyYVw6yrnHnL5cb1M3izL2kn8dxhOzZh6F3xBa6QFjGIWjDgLjNxWBKoiDB5G2Poua6420uN73vaZ53Pym/9rS4eSqbW/KFeSvYpaKMjeIESAc+2bmtRlr4VqO3LOrcc+vEyw4HwCjAFXP1UTZ+a6onkzCChD1tkvd1E6Pmm9PG3s= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 01kvbyKJKVueCXDhzlChxqOwU/FnBGPEHqcmSpQ7CdVilBGpyMYZRwgtNaYoiPjPFiWkWHghdxlk4+ElfV6FE/QuV2uwVEx1HOtq3o00uSGVZMqSFyx60pJaysjg+7BcvVvNiqbkHHj5zwv1pSP/OWFXjmNn8BNcl3sXgm1M5l1oZjw6agWIx+/n/rck42lAqcljOUJ/tXuUyp/RzxfWtP3k2N0GMot7dpIU0Pc6hFUXX64nSyUeLzMWP0KbctpM3zb+vpxjI+kU13QOVpglUi7gceCsN3QSHIfYZDsS0wvKALV2nwWCvFfA/oZy2cQh6+7TOyckqRzWhYHZ3rVcZm3Rj1gTnrnG4QDu1OvKaY5G0zxnWNvagMswO6iee9Dehz36Wf/MUMIIfRGy4B+JCpZ60SZi29h8AEuYkh9dtLOp7/FZS70EV75N5jJJJruRpzzrFFke/VmBQXEhQS5hlSrS7HvGUeI8HVStJtpDfZCY4wSnPWcSsSNooS8cgb74bEOLR7OMY1LXnTl/8JBkGQjkUcT1X1SUucv+VsaVpLez5a3XdtQ+bsUjhQnebTOA0N2XA3wt/YeFsjQVqTlO/0x7kbcCBYFdyfJZh5y9R+4O86EaK2BwjkMzkzRzk+TSmacunIvXTduvFojUxlVCW3v90Z40ODLO1DRqqJ28uw6/YYlTykfxPQI7TiCa71qDG9m4pkigF7bSt8jATej8pikpCYlk9hvpaRN+tKaoLLGS29DI23SPGMwiiaf6qSZb/k8Qaexxm+sKEn0eXBCeGQO5HvOb3co3wn9mYSYLtV80O3OXXoi9ZUhOoQ3OqyLldyfwAdHEZGOx2jDYIZ4woHPle5E84gkDHos6R3aDvFN3R1bcouiieNdiirO8hSbJ4so3wLaMBZyHQs8OZPYv2Pss/6ER1IxwcTrYRoXqnqO9w1vkYGMa4EsnWGrBSnXY5pKs5pxpUP2S9Lyk49Ne2kzhRrI+BPqo2avEnD4vAn70atvgkbGsUJocagktKlgKEciN86R/3h/hfmRU6AKzz/nmni59P57wpwJsbZcY3r02UxO1hZdtH01kZMLK0z2bU8afagJ/zvqE7Cgud8fw/vLyFE/RsNVRnuiFRt1eNHfTYN9ZKhfQxgVnnIoFkz076R70t9+n88TfhOPQzunAVmHIEkN+clyLRC5OIqvGjKP3aNhO1qmThU8QO+vbQDqGUQuwNLBxqIEoKDxV2pVk3D+nUyO6sz7TTvD8xJY3xJfGPCkw6/CdqvsbeV/J4//++j15q4Z31670J5Q1Z896NT+sIggVerbAs7Y+pElmkIvsHQ5mT22YPJgQ3KFzL1fUXApuVHIb1eCOUBRdpZeT2y58+v+05nrIbE/S0ysiHU8NdXFfS1x3fNd0h97rmVU1jUA31uRBlHX0fHuL4Se46s93ZrgGToyB9YW+XBk1l73PhZbSAUIuiy9WT6fHJfUoUEznRnvbgYaaoXIR698ILwPc922n+8z8Eu6u0nbgBi0MS0nhy8nlr0JL/O2xf5TBrrA0kOoCzIiicUI4fNREIrUISb94yqT+Vkr+0Ht45ZiPQU/oFjH5iSK87EIEWElqbPxkTy42MW4v+7+waKtdjA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0cd3556c-9b4d-49e2-bb46-08dbd698f247 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:00:59.4086 (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: +8gh3b7l3wlIGxNamD5xb/mp4oDhmdoHqZtRi0LPqiBiCHmPYR8vctzy9n6fcWUYWqJZb5xG8jinE/Tu+AoNz/ALW51/vMb6zhhcMFSkPgE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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, and add entry for the NFP vDPA PMD in the release notes. Signed-off-by: Shujing Dong Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- MAINTAINERS | 6 +++ 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 ++++++++++++++++++++++++++ drivers/vdpa/meson.build | 1 + drivers/vdpa/nfp/meson.build | 13 +++++++ drivers/vdpa/nfp/nfp_vdpa_log.c | 9 +++++ drivers/vdpa/nfp/nfp_vdpa_log.h | 21 ++++++++++ 9 files changed, 118 insertions(+) create mode 100644 doc/guides/vdpadevs/features/nfp.ini create mode 100644 doc/guides/vdpadevs/nfp.rst 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/MAINTAINERS b/MAINTAINERS index 5273ab9812..f463188f1d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1301,6 +1301,12 @@ vDPA Drivers T: git://dpdk.org/next/dpdk-next-virtio F: drivers/vdpa/meson.build +Corigine nfp vDPA +M: Chaoyong He +F: drivers/vdpa/nfp/ +F: doc/guides/vpdadevs/nfp.rst +F: doc/guides/vdpadevs/features/nfp.ini + Intel ifc M: Xiao Wang F: drivers/vdpa/ifc/ 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. 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..5eff240055 --- /dev/null +++ b/drivers/vdpa/nfp/meson.build @@ -0,0 +1,13 @@ +# 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 + +sources = files( + 'nfp_vdpa_log.c', +) + +deps += ['vhost'] diff --git a/drivers/vdpa/nfp/nfp_vdpa_log.c b/drivers/vdpa/nfp/nfp_vdpa_log.c new file mode 100644 index 0000000000..f5ada20713 --- /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_logtype_core, core, NOTICE); +RTE_LOG_REGISTER_SUFFIX(nfp_logtype_vdpa, vdpa, 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..cf342329b1 --- /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_logtype_vdpa; +#define DRV_VDPA_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, nfp_logtype_vdpa, \ + "NFP_VDPA: %s(): " fmt "\n", __func__, ## args) + +extern int nfp_logtype_core; +#define DRV_CORE_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, nfp_logtype_core, \ + "NFP_CORE: %s(): " fmt "\n", __func__, ## args) + +#endif /* __NFP_VDPA_LOG_H__ */ From patchwork Fri Oct 27 02:59:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133462 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 40ABF4320F; Fri, 27 Oct 2023 05:03:32 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8802242E57; Fri, 27 Oct 2023 05:01:14 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2118.outbound.protection.outlook.com [40.107.244.118]) by mails.dpdk.org (Postfix) with ESMTP id 44D4B42E27 for ; Fri, 27 Oct 2023 05:01:03 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RKRg43K73SsSf6AkAoXxTxWn3GJg7BCRzgzJzAAhiYHpCdgLpJXK9dk4kzNB0sXytmfWPFXhbL17eJbb5NhpPsccMbMQAAl0KWGfM2zrNPhn//zbchW7WjZQiS0pWnYbCYL0tr8cliqUZZ2G0/jJqNPmO0lLiGf8EDh51dL1Gh3Zp1Lk2wHWcXVyTvki2Oy9o7kvFTUXuqZ7E88aMw/DWdUeC0foQEj94oX6bmAW2g4XCztHnVkF2/sTY2MHIrhcDhR+3GyAKKxMyQ+sbkSbS0qNXvgSCNoBlbez9c00rrnEaeGuvT5ZQBauYWj3S3oKWY7tBrkYsbQoYPrT08eCIg== 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=yOGvlioRLuuyiF3PvoqM9dx/VgwtqOmWT2SFrI/Pe0E=; b=SAydAbze5rPcbd+8aUJmfhb7OPfQF/N9pUUpFMk4BWEGBZpNsrDBX+ZaVHl7DsSbDC8kpUvsPw/zfX+UF8cvYIbvExUx9LKyYCQX+6mYGvsizMn+rfi5/SNt0cyyLN88XK1CB8VbBouwlrtShvF8MmqkQAMqxxrkDpJczDUKlmxgwPvB/hSBTY4dUrU3VpnObqgwbuMgErfRhJDncyCjMOlSIGveMKfsrTTOPE9H33GnOs5Kg/ROfbS9gv6+2dPU4bj9l3vk89XY1mH1WExEdvRO+4EJ8vRRITdrxwN1c0WSRs0H5osEkhu7e4s8OLWUAvr0QqI4aYVkvPwJ1GT59g== 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=yOGvlioRLuuyiF3PvoqM9dx/VgwtqOmWT2SFrI/Pe0E=; b=E37+Cfppw7c7Or9dCntBoGmbicLAIBwreRuv5dBz1T47VRsBFYcpetb9v0nUiGdu9+srS+fQ/GoGqmLTtBhpouqjeBQlU2VHIxbDsJ932tz/5zQ8t8qoPIYYfJfgiDMs6B6HXcliIvKMzKxTMHuPkMbPLmetgfHUmRZfwPDpgpw= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:01:01 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:01:01 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 19/24] vdpa/nfp: add basic framework Date: Fri, 27 Oct 2023 10:59:56 +0800 Message-Id: <20231027030001.602639-20-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: c4291af7-d173-443a-abec-08dbd698f39c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PAbKsTIZqQm56HIIWeqPlPBpVfv0mJIa/V4vt2jkChiUKdgP47af//6dwt9tI5v+rTuEPe9bPKifBqRUsAy9M3AQRRctOPOvduQ6eeUIye52XZNeD8fIGwoP48/MXGo1IbQkT4ntMVXnjg/M4a0Wa4VKPrBTU86v3jF8RvNeoBpm2EqUE9+wdeY81QW/JcYCLIOKdkOhGUyJXy7gMCf2qT51hU/+oHG9L/hyJmueSkVMPHYg7l8zs2ahUBnAeZakYHjX4+w2X9NQQGHzmdx1MOmtwb1Cw3bTTpKKALYe7OTgb9+V7d5mmxuNortdnWScJp5EFcfSoZr1JTvp7NoxYN5qtgO4K6zz2zRGlPCm9rmVd68DsXmkoeN09GZvOctcbynK3ltaaDGAWtHEhexntyFGUQKTy4uX20DJvNJuuTjEOpmQW7Pf6Wsii5VBIdiR+YJx7WRexyRaz/DihjabbSUqQEO0ayKZZNtC8jejOvNlB61OhNoqDeI5FhzdCyPxpU57dt2h2YB3dqXvGvLZyUBnoF2xU1sRtag7JWpnW94r5Ecc/umhZIuIMGrEjOyL0K0tAVRxl8kAMf8lP9wUH/vCaDPCAqQ2Wt7MujvDf2zPSXUVFpLmnUaCBZpffDWGrlyAoBJ3vHs4LX0zo1Wm7fE2J7tIwZLuHp7VKfqpgh4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4pGqQFpTjys+jlFxVqHDD3WPSuZiNNQWpHWiEt3V65xBeUX95n3YptoX/9vOokUhYcOlb73JBFqMKkwRY1o/CII1old7qH9IOGZ2V83FiDaBjAyNSmMbXbQCYhBVRcadB7tdAcuYOGtt5m8e2yqDgRbdeZpCZ2FkkYHd3H8RB8XVN/RH3PyXJligurr7dNw/QZNpHKWAxl/qg+uBBxsMVgNgXpnHUg4BRHslF3nK8QK3d9Ls4D8+i6vmiK7/o/gcmGcln5fYuQW3CdIkrJReNsoVXrmkoWcEo9ANgS2LWYnnhaO6UnS1AvS/1lCYS5raV5FPT+L8yOcAs8UqQq7K0T6b5Pk9lhvAFlIudiB6pa3peZ2jHocnesqy3oT+j3h3Et/9Rek8QTa2yVBDqlzNUL/GKyu+jKRisdgik32Ri6hfme+a0hn9C6bIyZ0spt3qHJHns3gnoLwzZ7CR2hIfZn0CHsgIedsGq3IWdwDdfotWoGc6NO3vLkfNZN7t5ASljPNvP63jppFzfYRxDTTnEuWc3HGZQNKXFFmpB82TC7sr31FXkSBirdAwmQHCs2GMfdNSAh7VVX40zGPc4MU7TxBz/JxPpqTMTQAU+e5MX4yUM1/NCddDEEBmIi2EGTRZ9yeXikSSQTfZmwYWPbRpXU2AfWSsMWre9g/hjmodFYBmOMiLNftP41GOfCr6rCY0FsE6rzySZaxGy4xW9311etkegxuCkOXqDHDmqDWhbdRjLFu2MKE+Thm0yt3pxc55G1ofHiCLmBSbbTM9iqyoH7mM6yI99Ss7bYSbDhUEwWZR8g+oAqtDQ2L9LwrwhDwLaUNDhE1qqwoS/p0ejEpJXR702MphpSjVELk7uSZ2Ky0qeI9rxc4XhAltlbGp0U+XXXY+7hwJUEiRrdT+VRqzHifKIgCNKwtAZGoIWEgpqTDGilQdLqiEMED/ucbyd3fVVjgZ9Bybx4BwyL9358W5vNmc3N55OPeKMdKbIaansltdLaq1vQiAnKr55g+KYIBJunwxF3trRFYzb2mt8u3tS18emyqTOEv17IdKDS578PPw7rGiCJ9i4c8JH4ZbolM8clMMEL55ZETgo0CvwYBst22wxQcrNs/Upsv5+3MflON3XxdvsUyk+0+okC7xn76F6hzrd0WqtUkxFzkc+I+dVukL+rCewVxuC5cVJpOD4b3cydzcykLSMK+45PDUgTWqikCdwRM1VSOhGw/9PJndQ6e4EbTeGOqQaBTQH/1/xqMqxhlV3JgWSGl1i59mMCaZ6ZdpTZl7lXvwvWdLc2Zb6yP7XoZq+xi3MRnfRguzYl7D2dL+N9E7Vd0Rls41Y6PfS1crCOd8e3qyTXqMS6kBGdg4UkINO+KEvleTseiWqO9NHfUHSqJr7UFC8DgiRLWcwVRQ8PLd39/Dxg5WP89t5TaCuQCFw065cSMeQ9xcvfDew6PwP1mHdWeLpww8KsKYm/n9aFLNIzyH3ez1eXrkmYaeKtYwOncYwziGYTJJcktDmfgdCX2If8j8yY3BFuCCfcEn7aIDLeJtNjNuqXyhrnlrBAkx5OPzouOqXf766/UMlJAe36ky5KVLNSlRD6jU/o6nxKnpibdRTfXhl+x/Eg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4291af7-d173-443a-abec-08dbd698f39c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:01:01.6255 (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: UbnEQ9UEBbRZw9WKA9NuovoR93jWKl/8NlbEbfmjc0q4LH2teZdSlnOw2JeUK04BnstmrJSODlYcWD9vVQr/sufy8RclKpGSmO4PX+/W+0s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 | 3 +- drivers/vdpa/nfp/nfp_vdpa.c | 153 ++++++++++++++++++++++++++++ 4 files changed, 157 insertions(+), 1 deletion(-) 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 65f189b05e..723035d0f7 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 5eff240055..79a0364917 100644 --- a/drivers/vdpa/nfp/meson.build +++ b/drivers/vdpa/nfp/meson.build @@ -7,7 +7,8 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64') endif sources = files( + 'nfp_vdpa.c', 'nfp_vdpa_log.c', ) -deps += ['vhost'] +deps += ['vhost', 'common_nfp'] 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 Fri Oct 27 02:59:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133463 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 D37EC4320F; Fri, 27 Oct 2023 05:03:40 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7FFA442E69; Fri, 27 Oct 2023 05:01:16 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2129.outbound.protection.outlook.com [40.107.220.129]) by mails.dpdk.org (Postfix) with ESMTP id 603DD42E27 for ; Fri, 27 Oct 2023 05:01:05 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cEaFqHQ7bH22u3NFCnB3c9oOXYFo6AvVkZT9/4MyulBzcUg6eh5+VmPAm8j3IsImP+LrLqECGFYZO/wNVt3D+eLcEpI8VTVqIUugOF+Ku2A/s19TgYtdehuAWIGjVKzSc8vhmgys+Ahekgkt7MKxdOdholc7ID4QEgisdzI2qf70Bvc7uemPq8mR9MaCg98D+m0pHvzBuT24vZnogKnFJY/ZZvcD5iWUOAF2IptFl8A6DLMnahtskSUMg7B8E/k1s0/HRe9WUGq144EUoPL0u3YKmWvpMHUHsI32ypYv9mtGL6hWRiO2V2V8Q0BsFUjGUF+hf/qN68GiIB5ZaOuwKQ== 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=VMLtWsQ264cLCAtnJXFuaaznRYd5xJpqBb1DiTjxIAG7boKgOrZmW0GpcAqyeBi9v4octRiIMh6ZUpwN620A2G8pwHvyhH0VRgqs+bbQO2WgUNGYGG2oB0CbbC4RnpaezicJn2UXX6p6Gs1YA+BHhqltHRsRoAn4clxy5/rHwx/xxBYLCgbVKUbwzWJ+ge4e0tQ2AWPWu98T/laYi6wPyJU1ioEJhk60brm+zljnQPAHFqil7uqyUiApwrap3sqVT0wW7KNgDtDoo4pWOhWuJDeFPi+BMCizUwXDcikZJENVT3IqF/BTb7EmPk7eSoeBqi535pPno0fA6bC9KREbew== 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=GTGl9NczMeInaIYssl/q93ULarO5bfg2AygXAtdHjyAZYdDqVXMddHoI2is7cVdThByRXP+2jdezQaLvz9XepXYN6DZsvLnCsvFtuzgKPyaYrhr17jSNdDwOWrf47Sm+Td64uI8WM/gqGtpvzUPu1uh/gEgztYpsTsANj3GmhDQ= 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 DM6PR13MB4493.namprd13.prod.outlook.com (2603:10b6:5:1b9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Fri, 27 Oct 2023 03:01:03 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:01:03 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 20/24] vdpa/nfp: add remap PCI memory Date: Fri, 27 Oct 2023 10:59:57 +0800 Message-Id: <20231027030001.602639-21-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB4493:EE_ X-MS-Office365-Filtering-Correlation-Id: 8785ec08-cc9a-4fde-c4ca-08dbd698f4d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jxDmGhtlpYBo41hXmRexbF3oszKILLpKcfjgmfX+dFnBKnHERlFqoW5pK04/CKiAbq22Bq+PJ0uroKZk/WfeeUuQx6qeKai4BHfCNooYFT4GsmV8g73G1Onuv1vyYkiaE39L4k+8IpQqmAIDve2oc8RVM3Bvc1Bi1JVVOOV8GFZ2Fbd/Rh1J5e9QrR3JzxvplA+ppA0IoGdIGl4FAqQC3cu0ZhzM7Fw1+XyIH5lFuFwclBlWpb/mnkCCvbISFOUQmCQw2q2t9h3rLmxi9JX0fEovl5hjRi1jZ06WbfJYXGDdCAhOMzgm2ac7XPjSU4wFD6yEDR+MRBzexeRTz4ieIoypki0LO/dtQu32KKocXvdPOHJTcCqORYesRTzCeM9c/JlRweMq/pPg3jZafRG1IXHKCnaui7qUiGqSHe7HdttkMg/s41JWu+axjJPm6dTIEAMoq2qTpl3B/oipAZa87S24y4nIrgNB0Sl1byWDDhBVABGsewfyfQSyZaRyK0sgqf/lu9/CBMY0L7kdoFh/Jp0SEiUiT7O0Tr0KoCpob/dTnI53+whNO/I0mW6M2ieE2jbJKZ8RvnD1AC9+KJ1vhRaWeFIJHPbUdd182XKvyCBvvUPOcqONUyVAGXRrHV71Hnt/OlFzzXDapHSnDTzSTfHg1XNTvK5zBu1KBFiqL+k= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(366004)(346002)(376002)(39840400004)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(83380400001)(4326008)(52116002)(2906002)(38100700002)(107886003)(44832011)(8936002)(26005)(2616005)(1076003)(36756003)(8676002)(54906003)(6666004)(5660300002)(66476007)(6916009)(6506007)(316002)(6486002)(6512007)(41300700001)(66556008)(66946007)(86362001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /jMHX6Lju//53W0YXCcYFY+6Q+7R4ojdPZd3peRMnsjVkVWwa0dI8ij4BpnSb2uyFsQg/M5fvE8xko1EPDlJT+cjh6JbwkmKm9zrGB+9s7iR9RXR88s/PCrKBpphJxPC+eRRbPs8Pjd2W1kks8T+nOyP8ZqY+Z1Ov0WyzbmdK0vfEACLi51eO2j/2507HsojfRF9fOfBVTd1/NQlGl7wH0qHlQlkWljtu3Jxjvx2R6Giv28zaHRQ2OlOglA1XTGzbiiCiuPcwoJ0bihHq2QT/zYH7nHHlvJSM8AXZg+4duwn9Wxj7Wk/8z4A9myXe7d+TM6EVEeQHp625ezKgEz14t+/ZVKOOJm0bwBgPKSMAAIaxoaRfnaN9DGKBBH41Gt9q7jYNwX5B62HL8GFTwZS+I8kEgfHCA8LJaBWoqkL/M0DetMu0rNyC2Jdk/yD+M2QgYYniRs7fOX5DJmcY1bWH3iOKyWYOU+ChvmB9UnfBvSAUlPgA7DVWYhbP0VVprqHIzeXlsrcU2rZtvcw5BzfU4PePNCRIu1E5dxNY4zx2tfgDUT6g8EbvL2Uw2R1/AFcS5hUpnnkm7xscmVKzCL3JZmWtA05caGyJg/ysanAmdRJ57Ii0pJ2Z2XepBzHlKleRT/u1hH9vIBSLixMBve7NsY/NFPdPUj+neFPlXdKCipjSjSFgmmZAfhiz0GP4hMh/HSPf1RgVJPxPu4XO91UvmlQIwfi7QizyfeuN/ppQ2Sy9c9N+rxNfORBNFIeCbm1GbYNPJEhWoD0eUvYuF2aL/5q3RR3eEJ0+BiUnBg9nemAG1KBEiO1kW/8lkUr1EeyuPV4U91q8PUeEaCm4gN5x39HM16F+/FTqW+vhPiVsANuUqQOD2Kt4GWeWkZ/2iWr/57LqtsY2TwlsTZZUA9ZNm5TXrrICxoxV0zwmHBmppLn9Y5ZNYPPNmkR9O2GTzlYEeZKFs3/UzLiPSPGKMF08rxQQ4zsnjGjakIcKFYUQMjIf/L5buQNW6e0VyElaKqwFes8HsJFcPuGANjnV6B7BhU91NkBvoZOml4utbPl94vwKPnpX8PuDvgeEE6NyWLQUTCBWZeYKXQ2CkZMv6UboB+yoLy/qmpVwfTz4cttAs0YpK0ajD5edhlODz2YaN6R98ATftw/C3GwAzzFKqJcZuJqKBdS+Pyjq36eJnVQGqIzEHmnQBsFTMWRI0Joi+Qp2OzZ1GojY5LGK7w1KYVyIK/Z3zcCTAdb+QJHVvFlsb08IJcqyIsqR0VWO9hqir1UxiSFKNmUXkz1i4IBcmRStBN9Z+WjfjXrFchvVkz1TwwMQkLVSwARI3WBKFu5U7vG9doyPhT+CCW6vSkpsHYg081CNO3Kio8zCgWe/CLQHdmSHmeVquVa812QMrUrnM+ceO4FIDI2WMZjgsutlwfTIYF8dJkdn9Hl5AD98Gf+AajfH5OeeJatSVs07vnDwNCZtSipxo2vDhv8nxB5oInP4tckR9ylC5P90PWN2htxwz0TZaUP8lvHsXQIJHYG+LMqOBhLAw4woBph3CjWoZUekDxwjfrjqExmBPoY9YLv8DIKBUlxYu2XEYumRRTePDBBnRPM1v8UKl2QjRaNzif43A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8785ec08-cc9a-4fde-c4ca-08dbd698f4d9 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:01:03.7221 (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: c2qo7C7fTo1DQMkmZJu7UA/IzOTrmnRbp92+bTAvsiLK5KJUlLg906UKnTYajicVOKDoSYmlyVAB5tqjZzwkwdnKZWQmZGGnPWpDDziOR2o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB4493 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 Fri Oct 27 02:59:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133464 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 82A074320F; Fri, 27 Oct 2023 05:04:10 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0720342EA4; Fri, 27 Oct 2023 05:01:22 +0200 (CEST) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2116.outbound.protection.outlook.com [40.107.102.116]) by mails.dpdk.org (Postfix) with ESMTP id 5814442E25 for ; Fri, 27 Oct 2023 05:01:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TotJ5jqu00NJUQWSvDhJcCrYyV4eFH4/DJAbds66T0n7TSDC3vz7MNfd7dU1KAYRkS1++DpE8pYK/pnQ+5sfXc+NgS4KnHReK7lU7wvGU1KyXk44l0NyfXJmHI8JnNScSe/Fo3R5asC6OtBdPya8SyhCVKCuTtl2+4kzKVgmYlHEKyoPIDA+KIwDjCizAj9g7LtjL7JDte7m04PzFDolorwrtBpF+nHqs4+xcnrBZE3vdQNwTW++GNn+PjBP41u2rPGvH3iDGNe2aTEHHKMhEUkTesW8t1UCBxeHCvGSZa+25KEukyG5aICktyZiL5+1DkpLLC6zm7Bars93hHMbjw== 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=//vcj9C4dCYeyhEFcez77fR7dZTUeDRee4UCLmkkU5I=; b=WG6P/XvbqUPZVxvMlQShq2qo14pd7B3FLqavbz3xM5c1WKYuZXmpleD4A4zcziD2knP8f2+yYzr/Yi1tqmNGdLo8tPFgOUkSrJU+cXz8nKoI++RCueNuth1Tpkf5Hr5q90Cnv8WkP4kzJxXk1vobGNaFzIEXZpgcPKFK1gtXuTb3rXN8Xim6m8oQvSxkGqrMRb44Fvk90wS+TwbAj2DM6vLFQMgso005MOiwMYw4GEWgm+pVEKaf/4QkC2FMJwOuUp5dI7Ijn0Ws1bidnS6K1wwR9452VtKsSZG+VcgD0Sc8qfdiCA220p8GL6crVWLeCk03LFGIQpkmbum0UvkmeA== 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=//vcj9C4dCYeyhEFcez77fR7dZTUeDRee4UCLmkkU5I=; b=J/cNgc7KsOE/l0t7MFrlrxWkLbBzRgTmQewPkepadlqeVniv6bGk7CvPat7aGr2I4XPJBwSRabe/LkSl6HI68yQO9GhxxU4ZhqnYH+hN5z0hetn0PamG09KjyKw2L99fXDc+MJsnvsOXhW2rD8mYPXIPu0U0/PrI/W1m2zrpAs8= 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 SA0PR13MB4048.namprd13.prod.outlook.com (2603:10b6:806:97::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.24; Fri, 27 Oct 2023 03:01:05 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:01:05 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 21/24] vdpa/nfp: add hardware init Date: Fri, 27 Oct 2023 10:59:58 +0800 Message-Id: <20231027030001.602639-22-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA0PR13MB4048:EE_ X-MS-Office365-Filtering-Correlation-Id: 8d5dbfdf-80b7-4e9c-de19-08dbd698f616 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3n6bJt3lbLmSJFliod9Df8c0oKJ0B0kYixkak4YE5dU5FvE7VZrT3ojxq6C5Hlzano0OiKxRwC0trK2gDU554PcTgQLYfASE+x5ypdKENJsDTXYW6rvFZoJoHOAPkPmaxfFf6+ejesT7MZJBCjS2szfLQnmOVndQMRFpDLowbE+NSDKCuwDffmxX59d1VaNPEPwtPu5zeq3FuSr+ESdFnV/URjJVUwqTZK+5w/ELSm5tvC12zjib/GUuDjE/yy1jBxHvZmkOwMgtbaZ+Cu42ppKhyW2/wgkPlp4yVZxwglicJbA5SpOBbo9BIX1aDCGKTRj1UoD9xK873I1nuaArGuXcM3UZYNne2d//G7sIxGKqzFuyIQswKCOzHeM+Ra61CNhoOBWhgyAt2pFTup8F64BeqIo3HFrreqh+oMX9R0IAym0+pzzywK09m6KkXUdPyYlNWcBuvkhFML710Sk+ahmc/RzpQirhvh3/37XlzAmaeLdrayKwEpidefZ9f8wtgzGmL4XadGyZmzWRvG0gLbovZ9ILmkWSQT5SfNZEhbkfpA7lQ1GrWr9VqATd3VKSxbzzHAza1y/6cabk7QehKu2thyjP2qevi1NWW1Dyt/t50Ag1rJJYbB9EbkP99lcry97R/rO+xC3DAFykBOEV4TVlnIzR9ER8EJWjjO/0JGs= 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)(376002)(396003)(39840400004)(366004)(346002)(136003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(6666004)(52116002)(6506007)(6486002)(86362001)(36756003)(478600001)(38100700002)(2906002)(6916009)(41300700001)(83380400001)(1076003)(107886003)(26005)(2616005)(38350700005)(66946007)(316002)(66556008)(66476007)(4326008)(8936002)(8676002)(44832011)(5660300002)(54906003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cY2LNlMJoU1Tgz9OjeNCCo1l9RvoL9+pSm57ctkbF5dlblzAJFNDAzWtENeoiMOi39ZWr21hkRO2+XzaIgcVBhIPE3hfwYz9S9C8lARxg/3yYUlG5CiTh2KFjuQOlgTx7iD8DUwsfC/aTSLkod8xJ+TcgEbFNowQbcRg6AL5QtnOB6gUjDTVrDc7eUvhsltGWkQXtVWKNe/le/oXZMfjMfqB1qYmrJWU55bh2Gtky5de4pA1LVMd9OEuFsWvCLT/qi5isZYkWLWrtCaUREcH19ttvUxReLjWnht01gzkKNrNBDr9ujjBk42C3/nwQYOwFhxO1bFG0T+7LAuD/R2jAv2VgNYbZpuVaPnCfGyKiE+hkr0KFq60SoTCsImreKMN5pymL3Zu+40Ag1fLolcDEZ6ZAU1gNELmQQkiEVg191+rGRKuxF6QNVjuD7rKVVGuv7ReIgf6I1sAMWDBTxwGZYcw2Bt8++/8s5ex5zFAL3UJ22eDIoKAEysF8F7w+bJEk+NbGR50LZL9a9/I4LIFf5Exy0QbEgY+Phz3ZipEgapIOjt8BwnU1trD+EJnvp4zVBBRct+Ltcd5bwgilsz/FjociMFsYm3fUqzKrhYH9H8VPmM6raF3NqlU0h3Dun/vHWalbMK7TxmVNYXZC9iH+NU9FHkP9TBjnNQbufvKLtHp61ZESJs4VlW9CRkD7CCUlrC+M8blJybiDz7B5GxcTxnutwrcuuZsU5PhWmsIpoR3lVEYEfDuyW7V/9BOlprIdKiXa1QYiT30OmTWatbF0XQDQ9dgJC/CrKQnhekQlBI5kcoOcWINtTrYIiiOWvzt5DriRPcYqMnzE0FHZYMXRCHX45N+lQdTapgHzoKEDLtZ7lgGtztsRKjpdziK65tA9o2HRwprImBZCIN1i/WMlD7SMp3Xax2+B/wxhOV9x6ZNDxfemVIEHyvYLdWDWAvaBBuJww2J6NWHVhgGSbig3F9wwG9TU01qSgF0tcqu3aKISsEUZGYnlCVRm7dePjjugvVoeFrMdwSLT1X9aP0c18gUHU/QXPRb2F6Xh3A3QDfTdboBVk68uA51vP/t39n/PnqTB2mirNyVF2//aNm5Jwe/xwhXttiNY0BRw+mXA7akgFpaJeWAOhzrsKKqfqOnaYeQvOVIDmmGubjUWhcAZSKdYWx5QBzoTxDzq2xjK4itrYzziweblZSVUnqYstq9njsjMGNPg3t7qGdGkyD3SHYMCGhmKkq22heXljIOVvnXENzrZ2CuJpv8O2CISIydm96sEfZZR0ailGScaHhTQeTep+rHd0YZZv0GFnxe8sz0xAt6a5UVCk23D5WIDesHPK7dfmDnu9tRV5GdOtwqEGusPRj1AQ0XaEtK59F1NNLRct1lAnJvtZaMe8mt4ZkX/BOvPA+zFd8i7BKyAaDrA0Ms/NLCis5TN1ujgvTLhYU4f8WQoJzvAWdt7F124Xll0JyoPRsnAoVWVAwFe4UbWg50ujuu1zqEi+/uy4KssxatTCU17ou2HpnZPDNCB0s1q5SNCFVISYgLkxaAFSPsGlrp3e5/hIX34DliM5X97op3lDz7BhsEYUiCf221M7fKFLh4Mbi/UjhwQHwSLn004w== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d5dbfdf-80b7-4e9c-de19-08dbd698f616 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:01:05.8236 (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: 8a/JM8WN2Aky/lOAaiR9fVpqqZCc4vszGpN21NzgNmhssPzgRMXO/1e8FxwNmYi60nFXbqYqOeqSBvkbt7I9RoKkUMjs4aa6grqVaEi2J1w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR13MB4048 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 79a0364917..258f3eaaa0 100644 --- a/drivers/vdpa/nfp/meson.build +++ b/drivers/vdpa/nfp/meson.build @@ -8,6 +8,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 Fri Oct 27 02:59:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133465 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 A47024320F; Fri, 27 Oct 2023 05:04:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3E53142E26; Fri, 27 Oct 2023 05:01:32 +0200 (CEST) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2118.outbound.protection.outlook.com [40.107.102.118]) by mails.dpdk.org (Postfix) with ESMTP id 21C0842E45 for ; Fri, 27 Oct 2023 05:01:10 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LZ3DSWa8qrtnKtasFgdrLCl/m+Tn1mbzl1lSA2EOdKWSGca3a5fBhEWW0vZMnDu7yp6WqAxIWWkkUi9wuR5DpxUGW2zFqrgFlEcyXAsK3roM1ouZnpnTMv3j5+rrIIi/Q9hr5jDQhjXcAo59lok5ihHRDSz83TarwCthrmERwnoKFJ88TTFNMRtb4a//MuNSW8XD0lEy7zVBrwUqyUygPhTFph1AD/15ls78QbvpfrdP1SyJy3Jm23xy1DBCoCtICrh73vEBIv6jUWCW4C01IJwdNejn213yQXSbJ10P+pKcADEq1uHQG6RhksNyBNSBMdnH3B0nESY1NDSXb71pgg== 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=YB/LcqT05BvqehMbYYSOhkaz8aoA2CxEadovUYwjKU8=; b=ObEEexpq4F508bnyNG6q24YuYM3U8iUCJ4HAMlAbgdjZ8YdTZZ35LJmU/HLIugq1rSF7bX8Clx5jDokty6mQdmBP/TskZsz1N6NtD2XacSoTmz3yRo7YM8ovW1igTQHbhtsJmhFNdX4xuqaAEtnOdRbXQ0ZTTBl2gfOPJVslIhCC4AC26Rl63BpT50Mg+lJAf3zG8CVDGHOCfSH065z9Fd429bwcI6/zIHeKwnmteXT3ICLmSy5qGJeH15o9fTxg4Old0zlLFFws5f1RMjGYD9uQwSkBdkQ5Rb5FclZWq9Pbk2wR0psUAtv1CuZ0dMiM3nOx3YrczYqfyO5IfSvRBA== 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=YB/LcqT05BvqehMbYYSOhkaz8aoA2CxEadovUYwjKU8=; b=Bwud7/ECKlIQGUiSJSdd2CjWD0vmaT0TyWLhn8hnqfrzOLtbs9PhCdTIxBF8XhwjpB53oDRGIDAAndNihWnPE4uMB1NVgWMNqwXdL/eNAnkKmb5CbXsqusjW56H1gWYgdaYKsn5sHBEqP61RxBw4fQSQCcrUYsWqqOgSUTJ4zgY= 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 SA0PR13MB4048.namprd13.prod.outlook.com (2603:10b6:806:97::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.24; Fri, 27 Oct 2023 03:01:08 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:01:08 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 22/24] vdpa/nfp: add datapath update Date: Fri, 27 Oct 2023 10:59:59 +0800 Message-Id: <20231027030001.602639-23-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA0PR13MB4048:EE_ X-MS-Office365-Filtering-Correlation-Id: 696327f6-43af-49c3-437b-08dbd698f781 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CSWIMOWh++udAOOl9M4ZLW2ph2IzQEiNag4br4z80YrrqprgC76XEGJTHEUMG7mjsyTHQI65RNYfSxb9WiEGCwuDF6aYCuid4JvybYg8X4cS3tzzEek69GEH+Lvcloxq8n/E6qWXy+OKFuUSebPIp62iDl/8FUFrKpkooYR64Ksrs92kK449hw+PVUt5BIWch7ib3UDzP4mh065tIZ0JFpFhBNf0OSdXh6G6gu6lKUXc6FZAtrVY41Ihu9waJwlCGuj+cP77e7RVogCaBBM0Rq/cJuwc/l4zTTGC52JeTwG439l7EuqzwMTVaupDyVfJ6AJ4eS+Bc1wnJdtpxCJinOD1yZZrM3BLqUzsN7XSsDgYbJO6vyGs9ORBBQA4Qxf+S7sNF0wf2pq4n7a0ynrCr0KvKfc2oEgVGN3es0n6PIBWlsBpQlDrvPuSVS16D1gvboEH3L+f+7vZvJIxxyueFToq3IRJ5WEFr2wNNPWFcoACXg54xeqMvOqo/T2acQjQS/nX3dubrMpNQ643DHEuoqbdP7E5xkuZpo8ceTbkDfqGOKn55GPU/9gy7JQ2jPvuEQX3Rt+A3q5rd3CWn2UTX5GZV6OdeMsmyiGTIbRqqdpKMI871+LUKj/HCqhWTDFYHl0jQ99kygH4NWtsjgDovsY80axrF+G/WMShVNKCK9Q= 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)(376002)(396003)(39840400004)(366004)(346002)(136003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(6666004)(52116002)(6506007)(6486002)(86362001)(36756003)(478600001)(38100700002)(15650500001)(30864003)(2906002)(6916009)(41300700001)(83380400001)(1076003)(107886003)(26005)(2616005)(38350700005)(66946007)(316002)(66556008)(66476007)(4326008)(8936002)(8676002)(44832011)(5660300002)(54906003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DBK6HKUkBAK6+x3tvkwQpRx3BNKoh/Mu3txoYiokJ3M6apRDr0Pr5PN4589vSXsQLDY8baX+NBDSS9bmaalD7U52jNRSPJSRq93Qp5fIwp4s1U+fnUvHiOCzlH+tV7zHi0C3z2ddRw/ooxtE7aIdCloCO82P1lp3Ti5xMnIguFznjgJhaPiGYN2Hjam66co/IMtjIfZgPZbhNjtLsFNUh5gHmCa/wNPAmJKcicmVREHmGHSP4J+lnyLNu0QPvIXd0gs0BhpiR2T0SzTU1P3JlWwOOXHsNvOJb4bYRBt80rdD9SaJyal5iZOx2ftqoVFj5nsQzlWDUEBtSkWHQYhvzW16YgjA+cunNrbxq1imwuUDJHoh/flCQzJ4bVndzc8yRHAzz0fLfoUP9aLw2lOUlaLZl1GCgm721wfhzeL0YBJGK83HSKaZShAH4J7wUY1Ps18DInZqwomH7oXDdZ5nk9lUoBU85uX1TU6twClvX7lXkjVw70qVYcDICM26Ic3iO9lRmmEeZVJmwK0q+Anm5NuIus6tvHk1LhFqx+e0BV7BDdeSXM5bjHlh1BOcmbaj6FkzgBixLcY1S8hEUoy6CLEDJ7JXoLF6b7LqQaRgBRtkMDs4XuVVDzqsHzaNBREm0uUO0N1cUr8jzE9TM5+TGXBrgpg8ZS87nDU5yyeyY+D1aXRMh2g3M/dfguRiIW7xf4M61i9vmKnvM7+qLyZODuKqe+OFhZkzAjirboVJKeDu91gXgjhrEUNpbhBOcZlqkVG+AsOK29FKP7swKTaFgPIcZdF7PyFD9GSNCrlL80o/OIGNycAur0CvyrUHJbdII11bHKRO+DONpswemR1WbmFUQ40jld3kgiRziWjbyPJiyOAQuYaMTi2mRSvGBbK/OL1Q8vJAx52K32KL2KYC25sKG+UbyJe4ix+moZ3JubwhQ2VPCZ5FczUOYbj2UJ9ScnbmPVzonGN1D5m/y7y/30oNqWtRfBQ/P053OLrMzkERJd2lHF8RPahpIUwwbxijqT+v8yuxws+3aVzzp+HvJg43LVnEco8xLCK+eJg4cz+wVV0+dKbXsaouaKg/HbcgycTz+Pm6wKxydJW4wc6sZ+BoJZ0/GBEsVVn314jMSnP2Kv2aalTyWPq5+8UOn/u9AV63z9Seif6Zyg552V0Zj+2xPfjerk5HsUxZaLsyBFq5LNZHA7O5xc8qmkeagqs9PpsLSkSeeJXVwEB22DYrQFoOkLmmNJUIpLBcs8RTpgDQOoiHusEvYQeXYlqMWCZu5Bxb8uuL5ZW+A4wawZsx7wlF4oixc9Jcugkib3FCXUKhIpz1w0YXmIRRpxFjn7riavpqZOBZGoryzKHIADwmE2kea5Whrcal68isFVY26UlY0ndRzWieDLzKKotUtBKmMMit21I7G9C/4G9qqD/oHY7kAsiPl63hSRIymEie4Mb2OiAsg9IvEKx5k3RRDY0h4bCWQqAe58A9XH7YlTDrfoNoHPXY/uz48sPdEFLE3NDt/9bmvYzHmmQB+sUuY/dSsrwzli0qV0d72OtTvRCNSourMWtJUIg2LM3jhfiU5aSEie6+4TjF8Va/5S1N+DzoRSHpucok1gomyXDXYJ8QQQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 696327f6-43af-49c3-437b-08dbd698f781 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:01:08.1734 (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: RQNQNjdqg2D1Ja4G+EBM48nTA7mRNcWxrOZW9+ytgrwAPUah/GHN7gz0SFgGFAT8nE/evyPZ4OD8rvTw38wCUBHyN9ILKyD/YPETuZU4iHI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR13MB4048 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 | 318 +++++++++++++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.c | 78 +++++++ drivers/vdpa/nfp/nfp_vdpa_core.h | 15 ++ 4 files changed, 412 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..04dd29092b 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; + RTE_ATOMIC(uint32_t) started; + RTE_ATOMIC(uint32_t) dev_attached; + RTE_ATOMIC(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,305 @@ 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 ((rte_atomic_load_explicit(&device->running, rte_memory_order_relaxed) == 0) && + (rte_atomic_load_explicit(&device->started, + rte_memory_order_relaxed) != 0) && + (rte_atomic_load_explicit(&device->dev_attached, + rte_memory_order_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; + + rte_atomic_store_explicit(&device->running, 1, rte_memory_order_relaxed); + } else if ((rte_atomic_load_explicit(&device->running, rte_memory_order_relaxed) != 0) && + ((rte_atomic_load_explicit(&device->started, + rte_memory_order_relaxed) != 0) || + (rte_atomic_load_explicit(&device->dev_attached, + rte_memory_order_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; + + rte_atomic_store_explicit(&device->running, 0, rte_memory_order_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 +467,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); + rte_atomic_store_explicit(&device->started, 1, rte_memory_order_relaxed); + update_datapath(device); + return 0; vfio_teardown: @@ -185,6 +500,9 @@ nfp_vdpa_pci_remove(struct rte_pci_device *pci_dev) device = node->device; + rte_atomic_store_explicit(&device->started, 0, rte_memory_order_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 Fri Oct 27 03:00:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133466 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 084B74320F; Fri, 27 Oct 2023 05:04:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6722442DD5; Fri, 27 Oct 2023 05:01:33 +0200 (CEST) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2113.outbound.protection.outlook.com [40.107.102.113]) by mails.dpdk.org (Postfix) with ESMTP id DDC7042E51 for ; Fri, 27 Oct 2023 05:01:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y9KP9gQWcpw0SI5MaAovmxzBvF0ZZwKmP2Rsf0oGAlTW7ylSH1EGNV84rQo7otRXuTryDq3yS/QpLCpu4uDvHb5y/ZvM8n6he/qSzZpBSFUhATWBnUpVbQy/dn3LciHrbdFIjxO0R4bvY3IG/5fOxRXCU4bDQkF/XrAv0U84vxlDxdfRHSUPGEywXzuLaVmXpEuImJoDvyY00z/DCeuR55IVKofgUp+gYFO5tXPePa188RkjWd+rSXoxB08Q8SCmfEqrCbDxpKQkz8Soo5mtC7wsBMNswhHHtGptsIe4kH++XQgB9PRJHznJUOUzSFpneapNZZ2jGmH+LwGkHX8Xtw== 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=ryKbXT0+zGsepovFoMDfP0PMZv9uiMyFPOahvyKtraI=; b=P+PqEBYNWWMetUvPhxgN9IWZspthAbGmnZqyDThbC194D8nFZ7DQAfZDe18NYjeorNFUdog+76j4aRGcflr5Z8FDHPYMF79Kc6OOOpgtpAc/Kt6BySXGr/b1sAJL5HxDcF2XG7kORRr6xGO8GLjomkmk7P0I4oZb0oKN1TkQDzzkOtRO31R8ObXj7iR1juU4tp5c97N4Wlna4meLuP2glazzVaCyZqbX/4Xx8zIbHRAK+xBFMdAGmNLb3Xgdspliw9Qci63nxLoFfqxy/rpG10btSBjHYHfro1BCFYIShfmUZR7ZZwPLBZXCsIwWUL0i4F2v5wP/d8KT9Tay/mSvTg== 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=ryKbXT0+zGsepovFoMDfP0PMZv9uiMyFPOahvyKtraI=; b=FhBTOawZLjkb+MBYee07OvZHBWgIZT0HwKhBmm7X4VynbPY7gd9wdjoqiTm7YbDkS0ZxwTcpDT021uEKKb7Jr8w9jc7PvYxyXowFQNMw+fIQkp43QtzmL/uswqn57cb9JUdSpK0KyQGS/vU6YELIKClisZJy4K/zBU0rA2O0PL4= 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 SA0PR13MB4048.namprd13.prod.outlook.com (2603:10b6:806:97::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.24; Fri, 27 Oct 2023 03:01:10 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:01:10 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 23/24] vdpa/nfp: add notify related logic Date: Fri, 27 Oct 2023 11:00:00 +0800 Message-Id: <20231027030001.602639-24-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA0PR13MB4048:EE_ X-MS-Office365-Filtering-Correlation-Id: 7c9fa44a-ae8a-47a1-246b-08dbd698f8c3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8K42t/uHTcItMWmKbgWoKm472wWEBUS3NW/Hy66rMU4cjH58Y7QqThRYfiJ6JWe4+4p9RX6boy00OGoS8om8TChu7kW+68OWv6ctg6J6+jmD5bsA3YpQgoLfYOgNuK9aIAUbivyYlkad7Dizgs7SbVEihEgLJNcj6oEscRhChGvS7FjXCVLyMpASSRPoO0NymysrAIeveIiguNKE/rr2EBVO8bxwGASj3heENuszPRqt4UamHsJ9LgBBqzOD7z8xw1k5B+WE3/29aD3elMz903M/F56USydS0RbA33OVNTWwWLXYfm8CAX8YTkq+DXD9uIwrzIdD2T/6YZxOtvqqlM8K1KA9cm93iEvpItVSmJogN7gY4wBy4oi50of+Klo9q2LihAwe2dQJQ1JnBI+1fxejrMIdR97fByrpfovWenB76pSTmtkXAf9DgX2FwyU5biK804CRJY/Ju2wGHMwOHaHRcRumvk020dUEc8qg9ReD2IzzSWJIHDkJdJuSpc+CeGFaAHk/R+ft66Mjb61KGqNgQ1ewJ5wwPatiXgQ3OdPiY3WsDIX/0h651JO9iVgjunWPZv15EjyTNp9oCdPm3SzKqjYyNnYouKxoAfmaB9DHj2MRjwvrm1gb4fBjQKsBGb346FXjpMbPezbFsnfTQjIdd6WhdcKbi6KNviznOyA= 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)(376002)(396003)(39840400004)(366004)(346002)(136003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(6666004)(52116002)(6506007)(6486002)(86362001)(36756003)(478600001)(38100700002)(2906002)(6916009)(41300700001)(83380400001)(1076003)(107886003)(26005)(2616005)(38350700005)(66946007)(316002)(66556008)(66476007)(4326008)(8936002)(8676002)(44832011)(5660300002)(54906003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4WmGlN31H5qIjV8PU+XE57Xd+1qkUZ6E1+OLMch7oInD296o7jZ5YLF57mXGGFMPBm4ARIPJWfbCOKvVXiwbh248qenPdEId2vXaOgvF0Z1SzAe3ll6cCoARwFs4XcLZ+Z9UA/cWYMeNalKrIkCCzTSHDee63jdrOqiACXBCEGkWksRsp4TtU3ZOI/JGDsz5YWcSDhWIX+ug+n7qXnzsWzxBc73vqpcFbB7b7W5NnDdzearjXG7lrZBpYrLvlfxot9B3FXyUbbynanGYC7CbMOnKTYi4ZiOjeyY2rVGuX0tNba4NHfuf533t2Xqaf0GPqRN4+ScbIRW4jXxYZJjjhI4qx3D/IaMegj0KJuRzL7IpuA31DepSpUyuGdOhP5m7ctKd6PHa4CMth2ueRhxhjfuUiebknpdmtg4mPqt22M2jUf/JOw1a9NwzTHH6wngpmj0jlmuosjvR4k9wnyecJcwpk1F9pTOomp7vxpsqKCDcVKhOljdX3Vx/VdXMtyyOYr5xQxfCjzOoV2C4WV0kaWDwzpvSOS5IW7E7wyUpjfaEsNtKpkrZVugDSBNEPOZmykYKMhKHwUQcyRSzUV8inLPvru8ultmhJt7Cj7VQQSWidHxQLi8HuNcuXTVrL9tgoxJf/w/5dprD0DfhWXmd/a97fiWYXRWPD0ozhy4MFFSVJjx9qqtGYr1GMqSB1nHJphWiE3wtik0nJRkbl1muHn5vdy2SYxqsXJSA5CU7hRP6hm5TW6ysNvTcOJrDIyf4+npx2UUeKehCuXHGlfun6MztkiFB0n0yKIGJS5F3NqQY1PmcxpJr960AHY+/jSDPQptsn6ntH+W9PbgVswWBAzWxbH12FhRG8M7wzhM8spC12ird3BlPq+AZgIZ4/93txjp9m+1iERCRMjtn3hRYra70Vjqdsp3sxPbZChHdeSQ0K0HMoQa8woVCs5rRk7gqBqyAY5N86oJhEyJmQbzMD6orDBoUgqSqgJx4jpjUwzumOvTWkjNxnmjH+8aPCdBg1HsjGK6oaIXeUQRtb8MHP2x2czMZ/oOJfT036r99ZGNu8EiOP0JRRRh01rMudy6bpun3KjXkzLQP7Dws6vyban0czD2wvop2zgk4sLdh+pBIDOcCPOg58WDXCOYymE7y4B5bBgf7QD/NrLPHTJPR4nDtO3kcQQ0J5a2MtkAve+vmNkpmRyhJS4sdYVQPyVoOmMhKtZcY0FCv3HHLw0V0rTQRZDnrtmGHLoArmnp4Tndtoy5XYoZ4RzHBFKavQUf8G/PdGKExu0xx7IeU6a3nR9T7HMqewca8JIu4u2HxCclR9YT2DAhT+gn27zyc8YlZWIpuDM7qf/g4skWqqzZI4ReMk/FoGB89kIsolJnUitIrV4qMOriQvyu4RXZ3QeMgtguvR6E13eWCy0eELSVPh96kJwIC2/zaSeW990Q2aYU7ctlz8dsuorwvZL730B88perF8dpMo4d3fe651GWlMVuO6yV6vozvgYwsKWvcOhpalZC5C+zvyXBsc1Kq8nq+ftsSeJOD0TeLb0VyajDp4eUR1feALIU1aFq9OE4jZgqkwn0DaxhY3NTieHAmOPTAn85guKv5puzglIK4OdxNoA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c9fa44a-ae8a-47a1-246b-08dbd698f8c3 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:01:10.3535 (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: hfIDqAuBDAPHeWJbFyjeMj/EXe1CuWaKcmb44orzF3tKRjcVV1lsdBfWeWObFQbSpa8dogxMiUQrczTForsUrf1Ii22CBVTq4woP3uZdjoM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR13MB4048 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 04dd29092b..c104588663 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; + rte_thread_t tid; /**< Thread for notify relay */ + int epoll_fd; + int vid; uint16_t max_queues; RTE_ATOMIC(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 uint32_t +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 1; + } + + 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 1; +} + +static int +nfp_vdpa_setup_notify_relay(struct nfp_vdpa_dev *device) +{ + int ret; + char name[RTE_THREAD_INTERNAL_NAME_SIZE]; + + snprintf(name, sizeof(name), "nfp-noti%d", device->vid); + ret = rte_thread_create_internal_control(&device->tid, name, + 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) +{ + if (device->tid.opaque_id != 0) { + pthread_cancel((pthread_t)device->tid.opaque_id); + rte_thread_join(device->tid, NULL); + device->tid.opaque_id = 0; + } + + if (device->epoll_fd >= 0) { + close(device->epoll_fd); + device->epoll_fd = -1; + } +} + static int update_datapath(struct nfp_vdpa_dev *device) { @@ -392,12 +539,18 @@ 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; + rte_atomic_store_explicit(&device->running, 1, rte_memory_order_relaxed); } else if ((rte_atomic_load_explicit(&device->running, rte_memory_order_relaxed) != 0) && ((rte_atomic_load_explicit(&device->started, rte_memory_order_relaxed) != 0) || (rte_atomic_load_explicit(&device->dev_attached, rte_memory_order_relaxed) != 0))) { + nfp_vdpa_unset_notify_relay(device); + nfp_vdpa_stop(device); ret = nfp_vdpa_disable_vfio_intr(device); @@ -414,6 +567,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 Fri Oct 27 03:00:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133467 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 59C724320F; Fri, 27 Oct 2023 05:04:43 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8FEAC42E95; Fri, 27 Oct 2023 05:01:34 +0200 (CEST) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2093.outbound.protection.outlook.com [40.107.102.93]) by mails.dpdk.org (Postfix) with ESMTP id 0C8E342E5A for ; Fri, 27 Oct 2023 05:01:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lD98fyfz9BOzJps8x3zODg/58Z01/vwIqkaZzBfy1eNkqpECrBJZu5naLuIXTKCRMC/RxLo9wzgBpu96OH+Upkwq2Ytq4wPSe+NNH9wMrXn7Q4FNg5hQvgq1JsqkPlgBCWNciIO/QObhanhWwPB3+L24Fip7DC8aNfaTx/+SOStTTGEu0HnBGc3WZoIeq7l/keynbl/TrcKrA8kpVT0rjeeid7D3r6uMwuGxZBZw4shfvMfnENEiog3MHedVjPFluZnkAaDUW2UzHccFOoBTYgAZ49mJN3isoGAN8tAQypcqLJDIu7l0nrWphA23oOZpUfdkY2uU5TSzJ9fsrqZQGw== 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=zs3+5JTfr5a7DpPcAx9Hen1IISiYu2wPu83zcbKT8Pg=; b=Ln2Q7LZprlKKQBN3vWFK2vY8PkaUwkbgVi3K/UT/f8Mz0cxn7t86BTUsaEvwo58pm3O7FOsAVf/hJX7zAssyCp/yDNkAvZBnNTCMTPP47EzzY8I9zf9EoGE7w6l0hPrw0AUhYH3EP8ccgFeYOK3j9AMUcakpHxHI3M4Q5tOU90CxpEOV/ZR06oZvY+Hem/KjuC8YGKbc/f/GSPSpcW5rIoYwtV5gUyBaWdqKssPg+YMt25EbQRHvKIEm0jleMgbvHObRuCrtE6h9wQaPkDHkP3tlo/mzj7dLdmlqvxyYMVqAejPU5IRAJ3rLVSzGJs1+Nfsmq9qjWnnJxBPoQSuLkg== 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=zs3+5JTfr5a7DpPcAx9Hen1IISiYu2wPu83zcbKT8Pg=; b=uush6V9R4yPX0SIRLhmuY8hTPDvv2jLMgDCH2258ftKkP43MZbiWP0oMUMBpINZF3nzG1fRjgDV9ndupHaSYeN7A7KG9wjjJnnisk0vZC5t7XzOzRI38WLTnHeXJpaCCIvE3MvrZ1vbwXpMTHUs86a5h53RQ+IuuYhbKE8WZ9jU= 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 SA0PR13MB4048.namprd13.prod.outlook.com (2603:10b6:806:97::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.24; Fri, 27 Oct 2023 03:01:12 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Fri, 27 Oct 2023 03:01:12 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v4 24/24] vdpa/nfp: add device operations Date: Fri, 27 Oct 2023 11:00:01 +0800 Message-Id: <20231027030001.602639-25-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231027030001.602639-1-chaoyong.he@corigine.com> References: <20231026064324.177531-1-chaoyong.he@corigine.com> <20231027030001.602639-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR08CA0065.namprd08.prod.outlook.com (2603:10b6:a03:117::42) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA0PR13MB4048:EE_ X-MS-Office365-Filtering-Correlation-Id: aef199c3-e08a-4e58-2600-08dbd698fa0c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: McrXvi3E/zOQukbjw4xPWVx2uVbDloFB2HjSN2PjvINWWb5tez6zRWPl90o+c7bbwB64Y3kug3F3dMq20170Qmphqxa/oRaaCuFaFttIK/l6G0bp/79Hs2uQ8VoS+d+TFxTk6+QuvA9XkkE1pp1zqEwuv4g5WsGlY1zszOV2FzFvL4T6Qa/KuQ5+pzBkXsooNcportI5RS3hqGRYyMyDBkvvk9rIQvt+LOjPlIAuY6aijy9803WmdI5Nv27G4yrdbBinasC6t09qa+ylrt9E6ptHf96pp3WNai+LMc7dJ0TbGeGwZcS83LAW/SDv9famDwmBs31MDWK99CZsnPNvoLnDabhqhHyYnttYb5old0SBt6iUzIwzpZGrMs8HikdswxoBfYzTF24dV9/0Xsk6M/I5i1F9rNWTIrCV7MjNhtMcoFA0nbFK0jex+B39U65LWwBI7pxznN/fggo/i+74LSU3dmqG6fzY7VWvCnU2zHUGMQ3+SP6aFZegw6z5R3PKvzj1PsHtOZxhNes5u2lgFdBZRzqwVA9tk042Hgvuiouh9PMAMg/uziuZrQM8b0XTDqJX6O4yjQ98C+W/UC0CDUmhPe8EpST1xQ9DPNRnOJezFr5ZC0gb1bPKLlbz9zKnFzf1Dpu49u6LrceSFGHMfjnhtbQ+QVpnMdpkEfUz1ak= 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)(376002)(396003)(39840400004)(366004)(346002)(136003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(6666004)(52116002)(6506007)(6486002)(86362001)(36756003)(478600001)(38100700002)(2906002)(6916009)(41300700001)(83380400001)(1076003)(107886003)(26005)(2616005)(38350700005)(66946007)(316002)(66556008)(66476007)(4326008)(8936002)(8676002)(44832011)(5660300002)(54906003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lyi6Sw0xcMe6SCiVC0dOZ/myM3B2KLd4ZhqmUVh4finAc9c1+Pn7zZMToxS5zQg++YZVkk/e19Am/NQC2jRxqiDYWLsQOGiqZs+mKM0V9AalaLU2+pjzNF6hLQHrI5wMHxz+LBCBlT/yVAJYRMtwefNpZL6/zMdLrY4mJ2CPBsW5Jf7Mefs8108SjIi7i/NulQ2KPkE59Uv0t63eBjKGG3IcOreJzc6HVVzl/zb0IzEB8RJ+rbUBlC+JzxxbqkQso4gPHGxdlp1OkhjoswyB0Kx9xo3DWhpXJMTYIx0GAJ7ty73YURLziZkITudPj7Gxkx/q+lznCYh8b0htuvbWbdEKZgJOjR1yWAyIwvKUB8jGqB1Rx4b2FevftCj68DyzlSYml9kRbUs/DRVf797rl8cf+KqHy4llVaHdMLdPGnC9YlQiTbLZAxpbu/NizHRRhMCD5vVI/Ou7QAUNL5VDJSbTmWsu5jCVhofzseE/iv14G3FeNWr0VXKU3YRvQJbUy5k+7EMaM1jSkLFpc3mNts0mOzp+0rBzLCkDVTAI36/jDg+VtTpb9cM4EMFB9Jug7QfngcjfHfiCkQaSV3XNd+RAx+e4snoo0D8ujStnDpjMESH0D008Il75nyZfVSXMDFtJEMBmZ9DEKkaZP2hP2wM0UoG561OcpeQkgkXWuBZVL6xKyNCJm4NLnuxMEBsGeyL9DI9xeQCAxiwtyIBV3PuhJ2orVqfcLCeHmjHhYDRGoEwCz3mZItMNHOe23cVJoSGr+9Zxn9rH/Q6S9zwh97RK6DewPTlsZTBd5VViZFP08xDqGA6gXzPVNAUi3nKCGFFV1K4U7G0v3NDj3hHMLpgWGy1DK85jgD5P2s4R/6135joI2qaJJYzStfP2t67YOAWeQJktjfgumFrHs4m3pTAXy8FdXWdVx+xSmrBePmRFEdRL68vOuPF7aMZoyYPaXKPzDq26KzvsxZxfQRNe/9hQOCKrOEYuC6eRDRVUaRW+13O0N8zr+nHHCfeXaALXXLSuuVtDJQc8TG0q54Yt/z57XqN2wEh1SXdeA0kSqRQmJgUuulUnG5NpMWfGhwiKYsYllbpf5OeIzs1hxhNR+Au2T1YTK1JU+PWpPqXpPHZ3pFRKEeIgQHghRpKIiU+0L7/360x1qXBnTVAj+4jTWS/EwiAUhp6kTVhGu3zBNVNuq/Bz2lc74OUr0qqEVxFUjEZ0nbpckTc5z261PT+GHIAHj1KZ/sfPEIZVqT8eXmrX7V8a64dUDX8o2j1HkLFNxQQBoRuGLwWScKmL8+Ou0uvci7JpF+vnpsSq3m0QckngwVCfJZ9Y+3rjUYl3/XTyb/yKO8h+Nnsa3Ght5nDSmgpgd2seDwQ8ds1RxdKH6pMI1dzrDcob/lXlSdgSSigRYPpVv2j6D7Kh1EWF/6RBT9JGXg9FpQCBiv9+C8IX/QuplYsyvwB0VaDBl+LotKjyPdnLbMkWyyNAK4IYVHo9Y3LeQv8ijLg6ZITAkN0GrTzUtOi78iTG0ieuNZ4GuRguYUc4xCk5B6Y2x26/Dc5rd6jgTVi+pKKyYhXcGc4KJfT+L8LKXa1yluoVCnzJKsVN4SRGp0USnx2+YS2OaCKdmQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: aef199c3-e08a-4e58-2600-08dbd698fa0c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 03:01:12.4232 (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: R4TgzP6UsDQSlsWp4zEoLNk5aHOdxHIsQsAudE08PzPhjxwXOB4Hj/pUTvnLkW4YSGiPiwgWrbI8E56GPRPD366mEgsgEOoMZmrpDaKxGME= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR13MB4048 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 operation 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 c104588663..a1d1dc4f73 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) { @@ -578,7 +601,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; + rte_atomic_store_explicit(&device->dev_attached, 1, rte_memory_order_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; + rte_atomic_store_explicit(&device->dev_attached, 0, rte_memory_order_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