From patchwork Thu Oct 26 06:43: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: 133341 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 B06CA43204; Thu, 26 Oct 2023 08:43:54 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 46C61402CD; Thu, 26 Oct 2023 08:43:49 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2124.outbound.protection.outlook.com [40.107.244.124]) by mails.dpdk.org (Postfix) with ESMTP id 5267B4029A for ; Thu, 26 Oct 2023 08:43:47 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A8DZJCh49F2ttsKRegFAtgJeukfQu9CDkGZdjn+fwD1LgBKATr/UD5SESU5nGXEliC7/VOmb5MA3lwjDU8TWOf3COFxAqCpxOiw6iP6nC6KaqioftO9kCOGkl4VH6ylY3lZmQpoNwgSgukYEm/e8UwaKSm2Zdytwps7HJlHth/UQ3/opfkgEWYhm6ky+crXMjcbXcoAsyzEZqtxtmZY4fpSYQtGAhp8aT3MqMY7VrvfTIH/wKstczMlEibhccUJP2LcH7u41o6EAxMWyGwQ8v2VYf98uI8SFtePsZkBFSffpvgADvxw8RsFc8fNKSpQXu4h/GBpgC0G51qyIkVihIg== 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=A24fYPRL3nkEQ3vmYnnnjbwZApEbKrHNqvpeDZPVczz8GI3+k8laYTfsc6pB61WbN1r5U+16EnISlzbEm9S1y7moBdRf3K91Cd12n8CLnvnwdzh8DnMsGL14Phph0juAg7andxuYNvx5Pp2WzKBSmlySq4x8VTGZQwQCcevL14iSsKoiqnY8b62B0PUgtuC65+6GypGCEoBdbk2srTODv6mWZuzoU1E3zudZhHigjizTh3kKqKYmj7qxeFGnF8Y+djAbr8aKtnx5vBGC9hhaXfZtKzJWzvWvLC3Y49tig9xpUsPgQ+WiJFuSy0eJqR4HpKeffVQJddcetsNA+0G9/w== 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=RxY9DWn3nU45iJ5CGoczXz/u1muwAhFVcWTDVG+5+93wmYUgG9V1BG/C3jOv9JcGGC4VIsxM0U6l67O1hEQzhlPyfGKIQT8wdwUOUKHbPbXkgu+Vc+EP2S5sI/WLLS0ITvVczuDwztr5vI4wPiB0JSOfJ6YWmt8dDnitEmorqV4= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:43: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; Thu, 26 Oct 2023 06:43:45 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 01/25] drivers: introduce the NFP common library Date: Thu, 26 Oct 2023 14:43:00 +0800 Message-Id: <20231026064324.177531-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: eae54730-021a-48cd-1a84-08dbd5eee6a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: awlIfyiWoPg/CEPeiK7tERrrF0UMMYwVPKPwPh0GIvaFpB26ZXOz9JSBHfvrY5JGSTkHony1R7cnDykbmAYL6WPij1RcDZq2DFyZDHc8UjlFHVjlzMREkHOu/3RUlFDMw1Omj5h4/g0zmK6ooYI2ztvLrdOOrzl8suy3/ZOWAJh8uArzLlH8FqjDC3dLKnho9fmxv6KLH1zWV3SZ+Khy3F7EVsjidZuKRFQWsbwrVnfATm/3d3STpKwd1I1YsAn+KiwLWTSJCAEFnBxzOrioPFtWUlz+T+WWOnquDIbX0haSqHngKEJOKxZnaYiWIHYxrpj3cOhlTfbabKVUk7HTqFkkehIuCLhYLvJ9oMPZ4KbWOY/LbBKNwIBYBBAHOrCA1g/GdSmgGY39YvWqgqKH+3NGEs9kruwrgJLkDmXsZGsECdJK/7B7G8C7QYLtds5BM7sh3fQlSVUyp8pSYHMB41jlDHLpLQNP15F79hpp2/mrArSDrEums1i7lwRFCWYpRXnN6lmtwgedLp1Lx99TfqW6cvkCMsf7XLlMCNim8kQYnkjtDGHJo6UZsTQYIFzbxtA3RMp2lAPtPyvZ88ZHszjFX5iiH4W9W8oLlyxobZ1Z3NJIpR7APUKJKSo5ZtrCyCA8AQnqo+FN/48zWuVCzqKFaLrMJb5MPusWavzVOFM= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(30864003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: m+3BaDYsZ8erXOvNAkY8Z3p8gaLO/n7cXF97eKtOPpMrxcHO5hFk4qraF/Jg/TVgjXyymqOh4bjScl/3NWLywgZG6CW8UXVJQQAGgTEMrh4LDoKe61ktAs15XM8gqTmmffzQiM3BAKVvA8RxdJnmkGbPLTPVPdO0+rkeo6yDQem9+5etvA6/xbwBeA02lyuKn8gU1ayew4iUBmk4rkKqFb2oFSKyroN+yBNoF1RujTXMEZ66i17IvJ0Dk9BiTGbBbq3HovY/pcnRQxtW/Xna1qEh+EM2gKMvARGUre7mu/tr0kJJKzJgFLqmJazXntBqiaXPB/p6Wcvg7eJ4RRMkmHnH6H+wde2D4lW/nEJH4hhiPi0FrtVv8L2yeNZ2Fh046+MdVvlkg8wCcGW9JuPcWVjU6H5ivDbs1qRlqSdd62UjSyppdHGqHnKLgdseOD7CuXn5ZQa0Omta+MDQar8I+ItDSQ4JDEUjbIckDXwcVyXW14LAE5eCCLzdUm7Huygq7IfQHdkGLs5VoNPrcDN5aqNHZYHZSkp2j87trm1eB2qeo9NIv0qY3azxxuWtO/EINT+jwcR3+n0B7LTcPruTHeoid7oQcHDgsWk/Q/52HvJXblQ+b633tDNs7XkdElt3izAaL5Db3ASO5lTjZ/9nlcKKQ030OPtz/4HSjHAidRJ8RzXisSSOw0vXIJTTBQx07rq/vjNClAX1ZIs4CPNcpRLYHDxo4datXoXx8di/KHLceuLrnX5ndtqXoToWux1FceWWg7xfaMqkxSVcKb9r4oBkAgoZgLXDlQtqGj4dw6oiKjLiCdbhsAC1V65vjVsQ5m0ZVkFI5hVVCTQdYayZn+DWbaKNR8tKcX5PZhtYkAano1jL2zwvaLOQKpsD0PAMxBZazUTSwgdd32IERLf3dXFN4wjkzKzyU/YUdpN6nVpipZqVAV8TlakWGOrjC0gtocwKO4nUskYLlDWzBRPa3uie5Za9RRrsERkXGl3y12XcIxaRX5UZluZ0MdiO+AMfzRb3KpsFYYF683MZWxjfLbH3Kk8gMgQTfeKrgDjCVxzsfYPn5Fp4p1vSafzGJTPgyPSRMTbDcFjdLclJVTxrbG2fIXTMQkJ/EMIoMBW3vOKNkm5rr6eac29vHnTVx/7Hs4QN62z93nkdqjcKVJS5K1MUBe0gaSAoRYuNUZDUyHm2KNQ9xiZi9dlPQOn3zTSiB6cmyWHvOVuL5I7bEPOIMzspLIaxHZmc3mT88nrpxoePuJiPdu8ZfL7X/NIbYmUFeS7U9oyfBqtt9id6+M3UfQhTbp5gpn/yU19yLsZKAtgFadt3Y3gqbfkuEepeHzCixWRatnUd0Wji7D1LtUvx79AridFqsd7WcJgV5qa/dqluU3h3rH0xbt81YWz3PZJ/crOu93m/RxZ3NeVqbc7EeQjQ5y7XtlpPfmOyRdbTPgp6XWf0uhhhjRQcDH0x/kgb/9BVScwbpKqOTEvzv0cI3ZRgC+1eRiGRkLy2KVlmpxyouevYg/SXzMPBMoZRoCie5IYz+TmqAJ1bqeaAhx9Wgqn+5/Zh5fW6P9g/EutA8zXxjk1GiSS+mPaRME3sasWORq7KaV+oZB98coGP9VJe4A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: eae54730-021a-48cd-1a84-08dbd5eee6a4 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:43:45.4503 (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: 9Awuoinqp4mqjIREFR0aKL4XmCgkoLTw+s7Go965pMFUxiqi0T5xhzEvtNIKI/6r+EPPDlG1hadkygNQohKJ8nuOZFHHBe14Hr9QQ9wRXOE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43: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: 133342 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 E171B43204; Thu, 26 Oct 2023 08:44:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 059DE40A72; Thu, 26 Oct 2023 08:43:54 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2136.outbound.protection.outlook.com [40.107.244.136]) by mails.dpdk.org (Postfix) with ESMTP id CED92402CD for ; Thu, 26 Oct 2023 08:43:48 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TR19fFeWLo2cn6lXE4xytnrFJWZid0bCTfh2BCoCcaMwfALxhuzlkrDfNZQVipzbwpdCDCvl6asJmc57ZyyFCGXIlDfEFwMA3F+A3xvcESDTo9C8AWidVWstsWsAL3X0DBdztCb3En48oLOjQy61p0DR0+k1dnjx5QlfhHtcpXKUCwhaWHKmXqc5Mi3rLx3X/Sz2vJwbpeTrYr0lD0bWCiVdPxrKrfX3mRjlrKq7tFjYTFT6SH/RstusrgY6tTj8dXD5tZjtC2188ly07PDWmxTk1moP0Fkd+gDtDO/y8J4418KA6OISGP1c+/Lbe1D5CX8qUxCyutCYz+zFPOvGXA== 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=XKSk5yiD5C/9SmpTMb5li2g3EtGzMo/7yEoHH/l5Cu0a+SE2vzheoEgMm1corocim1XPTEA+HDZ+DLw+EPpJ3dNmnNmF5k5eHotYVj6hLMwEI3IeIk3f64sPcPBd+femrFDgpefdI3wKs1jrqgeO31mysWFg7Fqrud5xdYge6nAKndpRarAS8y+zFcgVnmoF8nQp0sPdXOqQPJLv5qM++wwHqPyhDWsyJnahfoJggFMS+rCbseKQw+4hJV53iQBRzsJZko7D8fSCKA2+HCWR3FLB7ZeV1eUtLtfuyEfUfkBOiZWtGdR6DRnYTDLqznGDjGNom8mqA1DuF3O+2nUYtQ== 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=GJARWMF0svEFR8F7er+8zZ6AGpGTa2UPTa9E0sAa/3U2zFr4/DGbjFkhkkl0abhe1QO6cESwADcoVxW3ZARbI8Ddi35ejtXSp1v4Uvoc2e/iortSWLxeNlGX5pnUmeP2alkmczeD44S3tK81MDvHJMtzIeJ3OWVNKYguTzb+9xQ= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:43: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; Thu, 26 Oct 2023 06:43:47 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 02/25] net/nfp: make VF PMD using of NFP common module Date: Thu, 26 Oct 2023 14:43:01 +0800 Message-Id: <20231026064324.177531-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: b0b170bc-7754-4743-6150-08dbd5eee7e8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NGy3SP7kNXTyTw0G5CkZjuz89KW+JcwdPOnBvBD904uslwMXR810jNC3Xg1i9XlENR8gw6ETcPOWa0dFa48DKZYZXhg4RU6Dq8AOJCx2D/ReVmlYzQtVVQh+421NV6UM3ORSqfSyxmxMRLZzimM+kJ7Ruy7kLS7+DD5fg4fWdwWQeak0FRf6G8YqrX/qUFM38a5SMcMPF2ruNcfoj+7pmP4uU2Pwl4lmKmBSloAaYg/lzQBsUwh1Qp78uqKpjdqejmE5XLxJuEJPbmbUKazkY84shoAGeKBG8CNzceygvyFafFJW+Wzo2aDPXJN51oWqhDw7B2b6Ox3j616HbBieHDbnP3yBKRc6A7bHnzoeoc1DW2nD26SjolSIZS2nN5mPw7wPSPRVmio8Ua+0MhB7YgZ42ftRObXqsayNmYq1amOrgZhLiS8uxzAtAA2MIaJqwLlly2/S5QSCDQfKad/e0J9ytw0OZtRr7w6DyecOkux9bPi0qDj8BNs8uuJnEo4Y6eHmeNwCNnfqxvkpoaG7X6XcioskNxjK7M4iaOI8FPt1s7MAE/abJFok3PSwzFIVSmz6T0W6atsel3QfsMtXKJ2MnMTAXn13U1z/JRDG8tCjNNdgO3e1EGrLTGa1EIiLC4tx56FBhv6ZO2zA7eNA9MPgO2Mgj6gTvvu1I6PLzxI= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3UtN81yIOZAZkkRIPmQcAF3wkovIcvXjboX5+dosHoOGjQ2oDiByJ/SXV7b/oP5hCFH7S6seDqOn+IN8HnGFqttRSMYE9e5vSM6AduNUtsnkpmt3kNMBJzVW+sL1UHXZ2dz96AoTZL6pHnQgD4tOFZs+O94NOjxwLEo/OzqcFRmt3X0s0RawSBYBEKTCQCKebOSlHCfYyualS9s/0ytDmbMbna498xuMU6nsaox3mPBf51VhWQMd6dTPk5UIiVOrH+mSdrb+dKUGNWuNMw38xMhx917IGuZRVe1U3CIGGjTbuT/ygLkfu+I8iNPXQPa66hxQWDqDKFs6zckY3psjczSLmCpR/uMgWhTqytj1wkxkOjquqTwXix1GcuDPc4/eDvKVCgVONT4Kz2Odzbi/av3cVSWJrBSL8FFRA/xoFelOsfWxCyJj17wajaOwccrD+WO13iXS+fY0Gj5/mwVMz7q2/XblsJsRRkBZi1LdphAFkuExg1M6QakRsiXAYT+3h4sVBgnnibPSqaNZaRh+b87ugmYSzFKXwGoFxsoY8+1Y+E0QRMcICyIn0yX62PD7vkDRU7rMnQacTelk8RKOL/7m39cga5xfHpnIwN8DChrKku19QBSVTDOEOGy/dFiu4tKhkczV7f8GTGITAz2JTcaWwdp1wd/mrIXa/pIu8GS86CaBdpuBBQd6Z4ih62Shjy1PoBPLie+w6exjZlblE+p1wD3SzWWMXyAyezmfebFEi2KYLT1egOLtqRhWXNG9HZ3J2kli252+7AhpQYJvbmL9RYOw6RtdF33Um26cBZFV+VA5Z0yLBj5He0Rlcn/0m6EiX0wMSbfqlFcrERa8iiuhKePFImy502OOoK0N9yjz+jFFQ4q/Gf0/VXe1uDpn7Tfh/No0TzCrWY9l+/3ev3Xuo9ShJf2lc6oWf81cJVBh9BLCM0/4j5xwcWpsWu9aLBRjexyW8jXAKzogMnyJwFW8Q01D07dJTXsVRJ+/52VAowXeaIPnChtrexWSbWwsTOaqCuxzKZSiTRtVnD7ofUOiiF0XjJjkE6U3uNswpgWdgak9Tn0Rcbazh22nzcWZ04R2jruHU0YtESRluNtD00x+IQhQwFzOFhG87RgFaOl3A0h4uTR/pKGdcO+UFAi8HB7Kc2L0qdNGV4HAVvX9EzK8FSukj/e3Kvw8HUfHliREjE3vSJ9nlS462vK+ObtycDflsOcEepU7M1bmH0IDUIaCrxOAYLLi8jQ1RZIwZWXzahYVyCSgi2Nn4zcksTVv+ABI2aqvlBfG5/lQQsVgFnBjOt6HtvzppA5Ay8GrKlJpsCB/zuyhzEaweJQbtIHiqU9db/s8G/L3BcBaQBcjRmU0i1PrYslXFOXQSRGxhZvWh71uBiNKbdgatb88FHGH+FGkYupnsdfCJRNRqlrwwjxP6gpwIa/5vFtZe6nEy6MyWI2RSJqqL58JlWctXRzEwARMHW49TImmQAkaWuOLuihIBqZT4I3m6Y1cGr9agiZewQUpWCSjJb9hwIBeyWQXeTLl1kmj1LCcFKi9g/E1eIOCCBoeU8LDSwb1/s1YMlGby8OOfWjhGTKwzC0aqCNZ8p11Ft1IZ4LEU9Wga1/52Q== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b0b170bc-7754-4743-6150-08dbd5eee7e8 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:43:47.5540 (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: 9l9bazKlwGr5eU07zn6c+20wXgPRh4uIpjJIGrABhaMzEzmXjsaxG7mQuUzM4Sx3S47HZ5tFwFqdQkuMdy7z1Pnu51uaGQlDWENy7L7G6Wo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133343 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 3710A43204; Thu, 26 Oct 2023 08:44:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3984740A77; Thu, 26 Oct 2023 08:43:55 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2108.outbound.protection.outlook.com [40.107.244.108]) by mails.dpdk.org (Postfix) with ESMTP id 5F5EE40A72 for ; Thu, 26 Oct 2023 08:43:51 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SAAKaMynU/nsckHEyVr8Rbrf+0iyOEy83A4WIYjHBXdc5gX2mogMPlJkkhD5nAivfbUytgpYgy2ZQmJhpbniWd6y3ZZUFD8G8oDa6ervBBfYZA82pUWu+VKagK7c1QYyulx5aWKOhi8KjGA9fxk6+RmpWHjCEKYOakU/PxZHYx5uL8mIU0g9LQvOZz5IrWzUxUvfbx2lUzF7wnCXzhLbGaTcAk8mulafE/C+saLNlAZQetfElOVPsQIbgj/FCy3c3EMJmawmWB26IgEWtvj9JyrJzYeUrmrLQC7SJ6sCKyu+EUXY33pIwRwPFD7sGYebAr/ZYvOx105EnNxPEWi51Q== 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=MNy9ZLCfaZQEhc4PxsepY4/4lJHORgLqz7yPWlBKl0eQpmmgIuTweuXH8xPAYN7hoUiJAwQ55yQdxYHyHNtruqlgNHtGHiN8ULv0R0FZK3z+RK1ylAWkAqVECo1I+T2GmudCQh3dhIPv6NNfEuZCCuccbttp/3aLGayh7Kzs9dAQXu5wgC72uxCe8p0EYfmE9oXM7rAQWTU//nZoPog+4gReAQVt8aYWlBoPk8Yj8ivXVak0Megaz6xoi2Ndk2yr5JbTq8ICZadAASdkFAEOY12J8qfQHa7wGxMPcoaXpErzeK990w7fOHS1gOAXHGZ8eFjHJVSGpkaMVLOdT2HzoA== 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=qUGQ+Q7lCIyz88MKblFP3ZXJ1FHpIiINzgBVB2AixZLIWzvKfcZwGnAtFdlh1YFOrwpVZ4qWS24kFsJ8P3hCN7bz6tmKASqD4B3mju/5O0di38VQSvdsetv4uRUf4Fk01rbTMzZBH93Kcv4gdkn3G6RdcIVnsz44gmuOY25KV0Q= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:43: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; Thu, 26 Oct 2023 06:43:49 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 03/25] net/nfp: rename common module name Date: Thu, 26 Oct 2023 14:43:02 +0800 Message-Id: <20231026064324.177531-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: a419047b-d4d9-4fb4-d50c-08dbd5eee946 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5ZPW0qTSvnQWc4+DSOgjAA6ixSRebC9bZnDl94QfWhWMpwv2/A07+iLINPznGZt8VAM2ib/NRAEykv9Iy9nt4tZKQUksBkjEsAyZxKlyHrrBqQsm4HplXjfvB7CUDOyly9FruFklbRyhfEkEthb/FcOTBNQHXixenQgBQCYVvXTzYE4n8cReOsHO9OWqZWbd5/PGUswgdf8E42Pe8cc7gHTBDhCLWbuX+RAYUYGMlWA4WwGJcWIOzXpF+raCqWvZYBCIQ6Rat3YE9b5zAMiAXkM8vqdiG6J06LreaFnllK+RvJ3Pcf2BaN+LuC2OKy5WuNKuO7wK3ku3E0aVCNzeHTL5Hgm6+3Qd7WvYTqXrqpMDre3VE7z68KpDmx099+TL3a7uVvpaY5ERojm29/EON3FqLR5LN7cU9FeDL0kj/K1WwfDPGbBuJvNSMEHaKNz3/X0BFVsSDLM6aixfRPbMI4vPPnYASYUjE9XTd0B4BrLAocRS/TzOsqtDcoGILwD3aMpF8sZTwDfPcbM76pMM4I3NPysT2gfUljtOYAJyOhWQ2SJOVk3/UBUoH8bN+MRdy7hrL4rha4HbAagwWAHvrHKQAz9aYfqnKQE+0extzs2VmTK+xO7sEPiEUv2s5L6hfbh00vzxoafOQrxp+wKm8CvPxInlcSuCZXtL+mGQEsI= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /t1FW/VHTbLMtyAxsZkZsiS6sAVEr/BqOWSPSkWCD3xBvIs9NiwCSxTgmXwx8jQKIymf72JhcZ6TRqwoWoU+TjMBNfwxLrI3R4i9R8hBHR7yoQkkO28IIjTemypr7XRtfirjN/VA/AAlbgJUwfZZcmwv2AtrmWmZx2CRwonZvJHWlMDbvn3uU3AFI4anV35NUuVUX2/C52RpO+Yj21pX6VsbEBrX7eIqJHj4CxlkOmUUKUKHxbOQrsh2Tr5HGipDy9tRR0ZvsS+8ibMVOEMgCZ4K9tJRYn5+/bmwuv6U7qI0pDowI5dkj0wIYfcZ3QTSE/eihN7EInSuLVAtZV/ESC8TNhMpIwM3fSVE44flpzN4CclzR3l0mgxIsxhAxIu5i/AOEhjctFXTvyoWBaZSN5BlILRL57vhkhCD665HpytBYmFQBbCkgv+6ySaIezQngw7tPRgUCt/6wNdD4QWL2PqF2S7kBXgpaROxqIyOlW6aofFRhtEURc/KAZzj4rkd3D0AO4zE0ewm7XIC9J+4aXOhEt+Mg4u0/oUrxYb5U0jRYQf9zDPpzb3xgvC1VlrONOqOhaXFZTKkwVWdYB2qpxcm8K/j5RnZvLbOkfNYmsU5MiA0cmY31S5KzowPXNtbM/cwvhE/t50M2YfHckxnoLZuHuc+OC5V9ldkeUJodyP44Y/2JHl5sg+Er2+bShkq9eej+UDTOTiuf/lBofP+V2EBUZ/G3QD38yX6EvsYTTR0/Zb0t5mU8Dd3EjtJzZ/EuNzBl3pIPBnNP+OZCR39eh+kltcxrPGbGyfy/mxbRpr6lkV0vEYvMVxxdQhtoEWdTyzM6dSAbo01SLyjuEY2b76LcIQbNhWPkfU4XxcmwLpLInAg/xU4OfCKeRlibwFlf0udwGvSijc/Crb3n3agSHGqcDOj+WLXsDAhEX2vaN9JL0CWAvaka/8oNYJ63cV//hf5BFuXVh7WXx3qowL6cxc1OXbneIjdXhY/i++jlr4ACUBKYJFdqsCbQdtJDlnTHuBkDnLr1gcVzmIdrAcByvC+sdDFSQWYPhqpPX8lBZ15NUPYYnzsQh9h1OIqklz+/BsGPEmFggKyeOsnJMZ5aFr8e77BmzsHc+hCa1WIV0q1R6k/9Uh4ZB+MHSWst8qhUATyOLqJNPPT+TCjyyid7/lm8qYU7PwOFVFahKqz1CnRJIzWpgfHx0bSLZm/Mk/HPhdDcvV6GXjzVdRyyZC6lkur76Fw+wO/8S40twbgrQ63/5igkKvHY/co4x031XziS118hd1rYibWqEvvuvJM17xwWs9PfBLUvKugPphystHfGKYU8nhSXMwopytQNHvgt2eozI3VSDYrO9wTfsCs/NBZ5c40DIb2qBuJR3Dv9Gnajo6ByQUlOa4dzRjWp5P9JNe9KMiGsA+IfB6h9cKfPmFg5BMCYoPU6MH8ZJtiKnsGwk5QCje/3hiFCUwNTk2j6KPl7jJV8cG9Sw8wBkQUUEMuLnNxv0VR8e0cZL9QkPRWfUex/knSDJmgW9jeNEtJv6Ad2mdwQN6HP5GxnfyuH02GpkNyjYL4TDo/hIoVgo1rvTVcbrX3Ouy8PCzmnCV8n03hVJn4b/hHyz7082Noew== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: a419047b-d4d9-4fb4-d50c-08dbd5eee946 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:43:49.8570 (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: B+fAJnRmru40nVRydpPNc0ynuKzt/1eVaVDX/eRyo1ZbNkcWVOhGU+gvLmt5Eik3dcOmNdmsTnIUTeui7ZQljyqhsE56d5WNVE/ZMZZ3ly8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133344 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 192B543204; Thu, 26 Oct 2023 08:44:24 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D4DB741140; Thu, 26 Oct 2023 08:43:59 +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 911F6402EE for ; Thu, 26 Oct 2023 08:43:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k6lpmfLap4HY3VsBvckWqfgIKInrcubZi3mCk66NWGkc6mK8Y0GOwzS7DFOsDYNqNE357OIvWjbbRoj4kWFxFPNjT2ljgAhK5vhnMBKFFxJAodWEu+Sj5p+HlA/I5zrfkJwqwfO19ukij6BguZYmEDn98I1LD8jwZ+2Bpqd3QAio49iwXGrfotm/pVloPmGYfShfroAnyQawY/Bjt4Vp/DKGzchDhWkNBzVEkwjhA61PjeJ7ACNkaWGA60wClpLlMVgMS9rReKjOiUm9qeBkTniIH+PUta5McdGTyByVn+oPTKE8A0shEtlpLWX0jI1Bskq2e0u9gOXgfdWIhWGBMQ== 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=T0ISz5Scr3HwDlOQoRv9w1tb68hs5cr63nwOSjsuFSyaMh+9EhGdZiURUexMcbQ2U4sWvwtuSH2sFU17ThPfBjfMueTkhOMtxTJItG4BZKk4cbaXKTWHM4BcwKz5Jl/ad902FgSZgjtHluwmjd9VCNcoqlNeIMcaPXfeEYaC1PaBfRSQbRLM3e6QRTRs3CNQ6pwdATcOHu3vRKF70UodTDL6AmSYrhudBdQ4PCDtHWbGzupmyJO1MXRULZFAUJkyZr9XGOs+YYKftTlD9PCo32BR6tNjhEBb4pyGuoqt/Zd1TGdfBl5l11m532LeTool04wQVgdPPxk4fYwu6SI9Fw== 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=IEhjI3IJBnowR1qGIvIb3yBakOA6bw8yLYorZdMcEQ9Ibf4QHKH4KvA1zMnDPj9ySGDjn1CvdyRbI1APutWL5v+tCtn+41doLqgKErG4sXOcFCvZ+8xLkNKJfHKT/yI3KXTSLXtw1RjZ2iJL7GA76yvIo6/UVRafmslgWglIazo= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:43: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; Thu, 26 Oct 2023 06:43:51 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 04/25] net/nfp: rename ctrl module name Date: Thu, 26 Oct 2023 14:43:03 +0800 Message-Id: <20231026064324.177531-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 65290f81-66c5-4b7d-8d55-08dbd5eeea62 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ziTSc2Rxn6RiQM3cAeQ+WoEdOYtasOAALebOLlsWPb1Dx4NClwNjazCFEVCDhGes5CiV3VJbjaENVTKtM3NwGvWpL7Q94tKD94e6kYaQV2YaV3RId0Ry04ZNisVNbKvi3MHvJ3sG1ouXVARG1gdWi57NEy2SKPhRHuIRRJ20/TTc2fBoDe4DOjx9eLmLQp6FL7I9KFEbPqVj58bLX6oYky2bqIMKVmiew61i1Rmek+41y6iQL31K4xI0wbmkzktWupiqPG/rF5HH5GGDeQwwBimD4z66q6oaEDsJFBCu8j090ql+x1yRLgaRtOHImpBe6y2UwOpus5r30zVqg+olHLO56Pmh+sMw+qcMVPk2oXYwxU9vi53nio1bKFKKxqA4Ih2XgreJIvoP3VF9jQBiX9OPJdlfhq28KSD6oeq7m0dXCF638W4KNojHoiDNooe7+TFlzOCB0lE8Xvugu1FMFc+PafH3ZrbXdo2UpBoX18R3dLbbgL+hahVWlayt2zDlkjQmj21VeAsCncX+mXoEie2V7w2aXiRu9caR7Y5wfUWMZV/Bjh7RxJYJ5Chz2W+NLmSQiTxwNGGQckxChyZbHQWe3Ji6pDijnUYE3HP6RyfwCidSv6aPHyYIsUcby2ae4to2YcL4VwezYHjgt+wORF2mtcLZulSn0sW8iJO3dk0= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZzXLyemNAAYBcpUfzXTAJ2rR0cuOJdqO+a37GTbcwx4nY+T8fa4New44xxC4drNCjIP3k2DTiuvP7kh7n4UeU3RopTmm0RS9ALC7vJZO3GXmPdsnrr42jLMetoDMls8rRbi5yFibZqTn4Gqea6mRziobWOQJr8JXiYU8ZtKp8GdD0YAGMci95EWwjBRqJBFT9bGO+EGwrmT92e4NLsNvQIpXXRkj/WxIztlcZnxTsr2MFeVhNh9lplUuJA4inbFJ3v6iyA++S77mGQdQZ+PXT+9EdRfOJZ4SnZ4S72PylJn+lAjbLiO6aRs6ql395xrohgk2xb4JsxlPx04FnvzepA8UxL6Sj7F01yTFA55uigD6Y5s3kCE9jVtipukwzc4+Es0i3Q3SH6hPMa/hfOmGtgbBv5HfjfeEgTi25V/yVYu50OkXzprUpAiyvzIVBt5sGIipeLPEUrvUiEaTJSNI2x0lk5tDRvILC9OoSkD+JLwQQ8TbI5CYfeqTQKExiy5VX3lZhqYUasgVdkgj2i0TKadAmJSNIlJY8Hz8eMsryYnyIUWGNDHlnNB83jvz69LUnwE2PNX82wYxchbhkLxlOZO3ArgymwMkmK7tS8aq3iTEJd6hUURtKPV2rbH+6jSL6Y9V7r6QsjQT53/0gltPPgClEv8eNqSC4i51vkNiBwUncUWINHIkcwgL+yvJh3tbbee7KzmtwNQSFNTj263Onap2CEAKNloVNxn+hvGNOhALxOWabegOmD9krwH7VkRyWjaHsxP3mF8ya+ABouusfnUZGMGdPMf/aYCTAWqGv5Yi8HKj0Zzhx82hrIYfWP5fJjazBDcMXnp01SjeoFq/e2eBK4CIjJGu1+SLL2oJqti6+DF+Ui+vX1DxWe87PfnXtGQ2XoiCLLN/1kOn081tCZlfWawL0g4HYnrxXmiDbvjRNmVg8/A2ncPSuN+Prx69i5F9utHjW+vIEhOcMPnkg8uDBEHgPH2sbnpamJ4L2YrOWeOo+5CLrXtlTWENivJFoPso60taSGoKGX2s3B8yTX/rAm5vhQaq+mS+whqOq3qVgUbknEArK+lCVhfRfF5/pfRT4W6IelavvMX3ZWGt5WrpE0nXelWJ3/WSbCq36oOH2/OeyvDa+4HseQUdyX1/RyMvHNtkULSKKhxTC8+njUyunKcTXIfqkY6kgD0ogPngiOCxgy5zgODm6dxSug/09stpDrbCb7ecclsELLZEAi9aIUIIg4vYjVZDuu4gGKDkYHXM63d6k8u/sIQqsUbvmN1YduVrOUWqKwkbtqhLnKCqCj6oLXlZZyJEtRjzb8htovFImopWsvdmTTw8RQlScEC4lD+r7UAaOwzMBGYyn/6lV37Vogvj9N+7niph8xPoaEVPc5VaQBr3VRSzA7jwEKHm/RIaTUnclYWC+efR3dFVqT8GnZJkgRxo5M3I5KCd8N+wDQcTtmeisVaBxI2bVz+1S+sbxjGHtOi6+zuEWU1jLGsPMxp4Iq2v3Pn2DwkEPKo1tLU9+N6BP/d9RKKgkM5cWCof4MPD7pcTU0DLqVyzYHadeipD51XmrHX3ayOgncoM+jGI0zJMQZWKzs2PO+WiGml7dUNImgwmsYcHmA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 65290f81-66c5-4b7d-8d55-08dbd5eeea62 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:43:51.7215 (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: 2UX0CxnOrnbwWkr6Tv2UzEU5KS0NctCXyB4X/i52uvuzGoRB/4qBPxe74GgEyuhPiJBvnQ+NZvb9AmbSBFMzvpC/q9R7wpcIiMULx1KPFCc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133345 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 163F343204; Thu, 26 Oct 2023 08:44:32 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1102D427E6; Thu, 26 Oct 2023 08:44:01 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2098.outbound.protection.outlook.com [40.107.244.98]) by mails.dpdk.org (Postfix) with ESMTP id 8D4B040DCE for ; Thu, 26 Oct 2023 08:43:55 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eu5KH3KAn2cydj4luWn1nKSUL/CN9EfYKuetZsjLFLJFCzc6Diw/dCkhOoL+OYjD7pCEnxNd03fj7XFEx3kjTNapsDShafh3k9Ew25T4wmC0mvSYoOSITw88T/c5Ur5JfJGdqCi1/V5AeVGFX0iMScab1mgrpnOfwj2SXa9KXA09MvTUcAFc8iNvYfSi/5FXwG2Ipj3aC8yfmjCWdInBHDfAPkPhA1e3YBWNsegrXlc5heLqUGnIzXFSCucGV6Z6dSl54qMT2f8H1kvI+D8ejxxYKXIlXi8o401Z2wY2CNl3tRA0uEOOIvBQqhaabjrCTH1qP69/JTzaLO4bOiQQlg== 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=KvlOFGlVwXSxHls3oXrsSgKky4KBEHri9OXZpwFIDRIwjd/FcdCZplwhGtnNnLJfttNyvtpnbpDAdk1AZE6htljJRIa1fX0FXNoEC0215+zBn5YeKqT5x47wy2xJDiKFx7sE27oQjoZi/8T+V69MzKHHTV4A2msGjfRl0FU79kxNfSyKpc7EW2g3p2GgW4yUXZ9Litg5ru46NnYcIukudpsETZBcdlnYZqD8TM/9NZA20/82UnMmqnPHfcetC89xSjUDn9jGk9m6Eh4IA6eHJ4AA/OJXfKXqd0x1pqdGRuKDjaB3KWa7Ab/dilH5+PUP9vHqdqSWj1fJ47gQaOT71w== 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=FsUh7siTpwQrD7EeXiQ4236bm+qIAMfKzL9CGKM9n7ToaJyILyACxFnjNMj89YtbHdaAhlv7a1SZCuWPA5N5vX9Xt9F12HblorY8z7MyJ2L6Ki33kc7vXI9VrduUHLQotUL+EHOC07DebaDjY4P7R/Jx70wfavp8cefmw5apwtA= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:43: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; Thu, 26 Oct 2023 06:43:53 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 05/25] net/nfp: extract the cap data field Date: Thu, 26 Oct 2023 14:43:04 +0800 Message-Id: <20231026064324.177531-6-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 9405dd12-ea7c-43e1-ab7a-08dbd5eeeb80 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m7m4wfICJeT5D0PEfaBerWUxHS9kmxEj0KCLJaQbeF4s+OZMDwRy3X6h0T9EsxVyqIOpBlbOhTzb/vH+Uj5JQAiGkLCsi/1nHTpoIcwF6i5+va7P10vslNgc6O/4SuM6WKIaHHlNPMOK5HfsZahHaCE6GzpPioU2JtFD6kiklyAoDSXvcn6Y3TEh6HXiTryxgxTIbKxkFl6hTzaXhVpNgdsEVxwxEbtuZeJWSIZPAdaqFFC9+139Ika3U+wOGNhWSbYdZ0P3N3RJElx2i1ByjxbcxB55eFJMGrP0pZFZvlhMPtoKX8clHwPccphrmby/CFrAvw2Q308X6sVOc5GYyNVxSSldABhT+fMfmA+Sg0TVavFHxR7GPdiW6av99hvsYw9PH+Qq5aS6sapWcJCxh+yKo5APDECSWFFwJ3JlPkIN3hS346MDONJRyVOE7aHPir3ggusFz9++Tl+GK021bWSFyxMzkwfYn+1VQ2Yg/+kVmhOMDv1gC+jh0+XWgrJdc84nkx6y/BImevzi0TGNd+v00o0NAi/AaeKSYAN+7EcTY4z1qgfuHVhuz/azjrWEcp1Na92IA8hIPQMyUVCw7x4dMZiUkJizUHxi4k0t4QF0ktAgtkQfRsqmUuLL9B++uPfiUqDOOL6AExaypuOIvFauY0Lu8TkQMe4dZqFtFiw= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(30864003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vtBg6isgm98Xca4N1VKDEHSIW8xK5VTBFmNo7HGSD0oiT87/ZGu2Ef7mpfitW6yDTde8hG9CzEmBXjOhB5cFyHFv2Ijn/w0ln8ety6Oy+hzOhTg7DnzLVupn/JG7OqKLaSADzm+CB8u0aZjKhNdsYF6Sla6c9m05hqdJuMgUKhUjWPjpqG7sLAS12bXCzvWuYRPd6oGaSgLMSaa8+C/AyO9P5aMrCUt7dyfWGo8xGXnPrnvMfMvTxId92G6bz3jdOfSDZUATbW5+v2J3JYh3ZmmcbC6FUwk4lGu1CZ1FNiw823I0waZ7hgTOirM9PEWafeXEVYvR5SH2c8f3nbsh/HzpsJYn1M7doQmjOUi79XInIgWEFl9ttPovFCZQc5RGBlPImw5W7ewrEIlYemMyoNWtYYAcRzCtNp9U6zH5QYLIHxcl4Vg9mhchxTO7nf8ED85KEh6FR0bV01MXPQhcadVtT5OSjIZbKG4DlHSDPx/2/5pDwR8+07RmRTKA9jluB/TzNLWY9XOyXylTNxeo1S2rbIuS2GMO7fWVecQAxm/8grlqKeYL6USW4jNlEaEhHifsEyF4JofXpNIutie6qvBeuyIacnqAFQbGLe53gA4lSsB0t2GXLFBIRyuR9oapiBwphld96FMDlk/qH//O0/G7MvM8YB/TVVXdRhknydcAjccHAEghmuzALDSjyK82SxniF37V+WbvMWT8YKTFELUbRT8vq2OPuSUklsJhemE2rNpVB4z0kAX4Ys1Rp6IbH+YDKmRQaXWCHd7z+rNVHhQcvRrN/bmByYwBwUcn414+JW/yKq7EX7Qe4mtnA+iASSQyCXaUxuiHdBmndvOYV9bwHp6IP4E/7lIHfyw+NolTu8AY9ZtNfEMJkb1j5Yg07JLZKH5RshT4mUKIDQluSvM2vvxp0gXyUck9wwyKc5snjGQHUBNvt/qVoAhV/vGw0pfLBZfzPR4Q9UeETrzVzScjd3MuYaT66fa2E44Qwe2Ct5h6ai0EfNXETB6ddJBJVZrC+7q7a54Xo1ccycChkqbSQMjnBWzoZlKnYamq6799rfCH+sB5xQKMoS9Yd9CRPnUndKjr/nHc1AQD2V/OBXt7hjvws07kcP7+hCE1EZlD6KWmVpJwmPJLnB+aXcis0cepAOUx9EFuAgw4peBVHgzYdWKm6Fx+3EMLZFo+4O0B7XuNKbPvKXFSei36SIifNuJQwOqypBoYe5BslRjQE22o2szRv7cfoIHatJSyz3vS5NkOu37LzKBsSbI+0tx1Mt0+Y+kJrf/NYKeHZ7q9qdlGNEg133s0fnzAgVEqI9FKeDOUzrnSWzeVcCwC5IwSoZjWZlO91h0dd5VwqJcWHMz2FuC+j3JsGFfEhcdhzUdpQ1tMC8mwheVykdGUM6tJKmmrT9TbDNXxGJ0j1Iv4gI+EVnFXumRRk5ATLPEsuwR+KfR2Sm4Ug8ibad018evj8opO3GMwljT/GOoea9UelOoFSL1H8js6AvdpPno+0qqCVJdK3llXYzrMCmusSlE1knBxYQ3qncGQbH9L+SZtyZDYKvCDoLHR7aizdbO880xpocVVuGUAlKOad3d7g8PNrlGRXYh40korWTofYzVKTg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9405dd12-ea7c-43e1-ab7a-08dbd5eeeb80 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:43:53.5740 (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: 8d0GAYwclyDIOvbVM+B2kRLMBvajmAcFm+IiEb5X2q/hCzG2/QcPEUK2KoNfUZIdu1yA/fpiaQdnJbBEGfHv3mUAy9to/0aB3OiHLFBfwcU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133346 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 6F48C43204; Thu, 26 Oct 2023 08:44:41 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4D5E142831; Thu, 26 Oct 2023 08:44:02 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2107.outbound.protection.outlook.com [40.107.244.107]) by mails.dpdk.org (Postfix) with ESMTP id 0013D40E13 for ; Thu, 26 Oct 2023 08:43:56 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JnxhZETY247Q/KQ4lF5dh011312El0CqhybGIMPaeT3NPbxvhBBCQm7t7nJND9A9Ie77Is0Q6c9gl/ba6IQ2LveK9x3YRIwHlgdVM6Lz3wvxNQwSbI5kcO7uclK/a6P82T+vkZVnekMUYA0m82v+myBplachCeipSTi+0hSRQ1ZYSZVnSkrxjqRbPnRzXARMDMtFq4+lb1ijsKCWyhm9wOgq1iVcwqzwZvY3uep1APVbE8o07a1nAUN/DgjmmLva7MTJH33TgyBhbiJeaSR25itdfFRt7RlWJPX9gKCOJ8s2ABusHlOJIHC8DIa6+xJvNrLeKvUSchEnJbJwCgzalw== 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=ImT3dc7gLr/Y8qJCDKp9Qc3AK7d3SabrWSfy0DC77t/MBEKnnp/5BRAvEg+DCziZKNxCf3Vld1yrGQnjVn+nua6b1bsJdrNrbZRKbGzbw71zzerW8Fk4/WnOmJtHXNVSNOqDmeeLxiQsRy84JN6UTPvrthhi9orkMn6/oDROYhra0wAJExHcMPApAX0tBy79fBa6T4SOFHcvq8axaoJPTd6xM2yuH9O0UNLrU7WFkvs0WCuPdVsfSC7VP6sqahPjDaJAdkwicdZIDZRRqgJkhTfI9GoTQ8iim3VqGX39D435ZkuLdCsjyaFdIG4gsR79XGwnR1yCoOsArDDM0O+Vvg== 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=GKJ3SNBsjx2/UXJIZiWArtiZzHg3ISF5t0l7UAkbyAE2tF9JNCFF3haCAqYgra8h2vxUra005+VRLn6OMh/cAppp+V4J0uCVyxml+6u+MmaHw+0abX5NstlxCBa7Sm8wZVgmtvLbbkFT/zlYxgWb1lYjhY3FWE9wfvi5/fQxn0U= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:43: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; Thu, 26 Oct 2023 06:43:55 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 06/25] net/nfp: extract the qcp data field Date: Thu, 26 Oct 2023 14:43:05 +0800 Message-Id: <20231026064324.177531-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d9545cd-bbb2-4b00-e9b6-08dbd5eeeca5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SAKrosLvevmNY59Sep30y0J+dnEFwZbEyaZpV+arcyvJsPycj3MWCgdpDWXhbathlVqbk6w1+TSuLZpxaEKrk36fsXSiW7w+nQOK2qGSSWt2Wpw0mDDoPhfw1YfMEm2pn6LJt+ONRF8EVZJzLOaTXO9Q92ph1GHzRw3jkxXZLQtCc7EAXmeRolIrH9Mpiq/Uvee0ntk6K4PQFLfslduxFdnqCB+peUIfOl4DjDzTk7FaJ78/kattmgkBE5mUgbKE8Y3Rk0p412mSvOuO90AbGZA4rk57EaZvSJfyVFskof95vUPGB481tSUU478YGNcK49+yUO3eOLoOp18BzyCFcVk5P5X6jAr1xwnS/SLoBGdlnsAHTxz+yBWcTW1K/ET58rw0e77N2DYTYy28JBn+94oCz1Y4cpaAEm21Ay+QUn7YDiH6Y/cZr6huWdo7085572tB01UAY8Ap981NKRgRftibkTcXJEmRgqs9dHn78cbex1lHnBMMZED3fK7MSFFIhK6XkJFhopH+dlR3zdSn2I+w2QzaGC/i+l/QWTPwjn1P+QSPYf393uI7A3cGQtpl1cLjpLLr8u7eKTUBPNMNWx4H3utjCG2eIanHWv4YhOtHc/jpdU23uGrN4hc3shKGaNRQu06Rykvuz20roPMFC6XAG6r3jhTdzCok6e6vG2o= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +FzNIeL1pcBBQ8aH8Nx/80c9L1vXpSw+jbJ58uvm5PJUmen2W+HLhXbAL8EHI9TK1nXWCkjR7Nv7Cf/iujz6yf2AA9I+GMN+lv93S4iV46V75QtF/YrZIXvidIy8V9mmGCgD0QhhGy70fBiN1FW2Z1BVFUYL80hyH1N6GC0LIlXaALDdQEKkR3Uy0npHFSIpUx3ybJ+o6ms5CvIMwm6PJMhYjJAKQVS6ixWoey1w838kRNLj5UaWu0mLyZAjhPoxWFkZvrXhawsVFuKAEhMKkSYlnLw7ZXwWQmA5xEw0F5lOTpd1aZZDbcsflte+UDb5/ANiHuxIX3nlEFUPlRQSScJ7cidsPhvVohC65Bch4DdjChSgvwcHMa9K1pWblj1aHw2ZfMCPn9NSdQe1xj8d8NuIim0w1OAFbgUXQiX2VYD7F+YUQI1IWWsxoT5wAu5u14RHPpPx0dX1WDYEHFE6Do2mu2KdUHwPPkU49PaQcan1P4V6QDg/ZQ5eql1F/GS3MnhbpM4ibvLcUzHWfGGUHon1+dN4vhBZMu1PRPh/iDo+A3ddHGGLRr2p2oJvYNQPhVilocKNs6gQkixoTz4+Xr9D721QoiUELFfubKpuxjBjw7goisbq60grWFS72/yhaavEP4SoceJGcwp44645HRmup8Hu1tzvVyLklstMiJR8C3yadDVFoyN8Cqcc94bkvs8Q1Py6XJx9A+uZ/uLs07XwdGZY0W5LxqBv5By8HmQLFoif4jS3ajN4tIsmPH9osS03ys2yRhZOABpK/js+OAprYtgs6xQgCyZ9h0s31ZBymzId6U4MYYWXpMX2nO2TM+TGN3TV1CWYlZEEFakA2b2H0o/M6katcwmnWwVRd2kM6jKh3lZmRlRMw9WQDocebJsOTPJAocbe0jgklD5BGTENkgGrxKrgvzmPRUXBRn+MGdG4oPCmGOiDp0z6G2v+GLP+0LpisgyNE1DtWxD7ceMx5dS+hBpDzXE/njym1AJBD4Fzp4n9yChITrTnSlsGmMpxPVx2dT/KoTdlZJ/vEaggS/aO5vXJ6cZGHVr6co8lOS68hvOjYcXWXC/s37RwdHR+Z1kdsDYXPiyj0Biy87texc/KlAGciY34PKR/Zt6yuoyKrMr/LcE46erVUlEjwFHFFJ9AqEelRNzBSdQl8K/M3dlvQvQyo619o+OWC5IAKE1jJSx3kWBT9hqGFaTPTDfHPItMVOxDs0XUPdny/f4d94VO/gVVpwOS1xUZEEvYKezwy3EGlJ3XdaEfWx7ZEjUkQNd6rIsrc8vYiL1zvAuSSFSO9KCx0Whs7MQ/ii7/MLE2YFAKEKnvNGQ4LpMi6XwYjlw7V0iqlD5xKQ47asFoiRbbSiu4pn+6CxPutL9vrfwocXHKOXOi1Udvfwa+uB0pwaHam9yUYF064zhlXVhQU8rNVQHTwCP1sI7K/GNCGohraUhhgZ85zMgqpKS2hPyuwCW09zpxpyN/Wdam+px//r0RfOVx3eBfPJK0rvu5Mrj3hjrhon/Z1qiykImjLJgo7WvT8+z+pnABa6B+/VUFstSdO5tG6+HHEq5rEFBWVXF6eWsvtJ2lZT7MxciI+KTg+wMHEAIwg7LF2/dVLA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d9545cd-bbb2-4b00-e9b6-08dbd5eeeca5 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:43:55.5294 (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: +0nijCLGxhBoPvq6ym5N/I43XiQF194usd1EHvgPGjjgIdNBL06xfJBa1WI60iEXuIDFoMrd0hEbHejNWOeF5PuMfko8t6go5404CGIekik= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133347 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 6750843204; Thu, 26 Oct 2023 08:44:54 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 032D1410D5; Thu, 26 Oct 2023 08:44:06 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2127.outbound.protection.outlook.com [40.107.223.127]) by mails.dpdk.org (Postfix) with ESMTP id 3920A40EAB for ; Thu, 26 Oct 2023 08:43:59 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gZocV0YjYqX1elsKHb/XV6mWMykh9KrWtu9uWX/IelZ85of0w4HRzRwj/CLGodud5uFxSpok/maUaRGhroSlMUlWdxhWnj9vC4DcYQatj7trC19s0Zv1wRe6Lpgx+kWNbR6qRiYbUROW8xk6I8NfkJ81BXCo3e/namyKpMfn8mqsyPiteOqZXMcI+7IFKw7hqBe4JQddUWuccb+R//rmhpuA3Pyvy7Du7RDFSGIlmSiSc0w34YgDR5aLrI3kumX3XI6CjBHeP8Si7ysLroqG0t+0qTnZbT6NF6x3NR9kNJ1EmEx+u/1O31YyCuK3h5phZHxZPOyUPZxsPyQPewCn1g== 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=WcC9482QJKRTxHjwQ/iPO64XpUfFDLRdlx9Bo+dkL1mCiRlBY9/ibPHUH4xqjYaJHf2KhWQY4GV1+51dX9C0fiXsZ9HgUCdf3aQd47O0PG9DzyfLfbIBZZveGfP12PI8K37SP/Bu/92fpzJC3JrkppoI1KzCaRs6XWewsZhlfUQfVG+gLW/lNg9hOvgkx1UzFv7DHDYqqf7fzQEERVVrRQPzk7j+sAdoc7IJ/WKGSkUZlBLDXX7TsS9NkLSSf3tuoLkFl4OlR9caFakB98R4THDi8JjxXtXNTVdzLD7dwajNinarjtxo6XjnVuGMX2zfaNFBZgiPPIhrViMOsgnNLw== 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=PsTe/bsQa91/GCWCcE5zJRa7O0hRHlcbOf8sV7e7rv/EhaoxHuV0v4h0vDjYaHAm7ryTJcrY0shwVL+nEC/OPITItXUZPWg49DrmTmjErm5Mj1jJGOmepoMW39Wg5qfwMy2/h0CghPo/MTSxZUoxbJr6bMOpLwMm+asy/nljdQM= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:43: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; Thu, 26 Oct 2023 06:43:57 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 07/25] net/nfp: extract the ctrl BAR data field Date: Thu, 26 Oct 2023 14:43:06 +0800 Message-Id: <20231026064324.177531-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 51719d6a-6df3-46e3-2d3b-08dbd5eeedcb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KF1ojmLgVMFj1yuQbNxeDZVkYXlH3jJimAbbhWwModz9uHTs4Gu1yLUWCPEvMR4wyJ0RuWeaYaegErUPckEGlHbY7oGcWYpMxig8fQ/csDbNU2zzNnFrhopt+Tcjl0kTMJtrvzzMlzzGuaWI7/vSDbJuafo3FvfJ9BeyINkaOcBXZsjF0k0/qEY+QC9aSmrrCuZAjz1KsFRRG6rYhav4eNyw1kHv5/qxwauYWUS3cm/KBtgVoOzjb0P4tpbbYFO7metrvXvve4an02kOZ0KJgiYMezGSQwq8PGFBseLRTg87lfnD7pE4a8M38Ktvc6uDEfcOm3+8PmqhfJscy6kZ99Il2LlzEbiJV/HejeZ1DXjqZa6SoR56coto1skBGdhjnw38kl/EFVDIrQeC2x3UgoezJDw+oCqaIQrAhw8RIf6Th9AyEVYrm8/Yl28ad/OKQ3k01iy6tERBANhDYUGJCgPKnmw8vCIQoK3ywzOshZdFjhtAAhcWI//tZwIZcgMfPvjwDSID5ceNuBPFRsnljfznDY12kSvDLKCRv2odjLMVuddDXucavqS9c+2MqRQ47qNsuvqCnG5xvyrV+AY84hg2cSEITYzIZ2qWZbB3X3kX4DzOPIc55EdRoQLIvnB+siVDARB7qACUYRkklWFzsLB3PF/r2U7qnYp7zbv3j14= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: F8N/R6BK6tWnSx4KeZ4A40FBl/5hzQZ4kQGFsg9V2Y+Gg6Lu14h5TZVFpA8WkoBDcIktMuaTapR7wSMvLYuIQixIdl3D8qjdOj0sawNvxfG6PEf8RLO7/tsCbU4TQ6D+DrZKIy30zmuoR6VMApkx64nWowhYsjERSgbAil97T60s/9EdCy6C9G5yu5il7aqXxaCuPnxk03UlDkXcAT8BWW0zRqK0wjHEeocs/67//HjEFH9nbbsD1i/NFmsyZOKE3zWERlUP6t4KH3ENWUd9Lp4pq/Tx0RU+KXA46Um+FZgsZL4wtXCRcGouoHW7p2WY3l6hdU/XPOPloZYcohCKT+nQ+m8ZeweYB9JGbPi+paPGqrAw5EqtbrUXDwyiGVX5JKhKDZrN4qKFjB5HnYXRfaVCzYlK+T8S0Qs0MLQDnYYkHar2jGJgmHYO3ZSgmTBgWqhwB/Vy+OeS/sO9xnQtZuTzDes8UvbZtowGbI1mz2Lep85fN8PMfA2J2XkHxecS+gV4SluUmyd9+Gy3HZ6MhX/G+9guAcRWVMUIom5HnN0U4yBdIhO69gesvkZb8wPVILjzucZG0Tc+bcl/up2VgK76K0b3QsJ32dOCbS64JKw98ZuT8d2vcIrRctRDGNNl79mGLSt0O3MQEp/NnNV1FEixj4hkDVlA6TAPlCeuH57qys9hubTUW7STkm4nD0l6BkykOSrFo2kX5fI2aQ+ZGZrBW6TmCDrSvvaEf6ESeQw1YiRVdFmVEkp4WI20g9mwYeL2s52VHr1cKuxNuJkkgb6o4XSSvUcp6lSrY/JbGgDGFpC/2pneZG89YfFVs0UIt0VpkhwGAsg7D5SvZTm/CfRIwCKK+S2Egf754b+AILQfUa+qvP0ximuAwoBBkhgTFRFohVhBgxqSpcNXTiFY+gjQiceu1HkM//lniuzv4+HpBix+g8leOFXExT9vAIkyPEYdqLY9dUa+7D2SXC+SIb1OV0GVR1wSlqEZyjQceg25ErTKDEZyMmjYgM037266Ef3bjjOhhxBJm4N8kA2O2VZc5bJYupUXE5Im7e5sHFALHtmhv+dnxnk2pnRLHuVTyWAFZHScSP6r8Dn0a86aKwAa7rVOVxNRQQkz+q8EJRrNQG+qozeOgL1reOebjSC3ilW4GFSQ4B/i91urQQY0GuXYufKZmqVQpEXMk9UQxvqXMWn9xgvA5YYjktDjCucEAm3CtHho6Rn6Yy9SJKiyH+rBf+IgDVsQMVmnbG/0qNE4JuAgaEQMv6QWoW9QdWkTNrvjDr0sqtM7VM3uMkGo1bn0byI60Y7nCSh5WNvNe2pjOQaVVCtdQrt8QybcV4xLshXphkoMNVETBsPsqLR8IQNLXSlwo9hjZEPrycmLU0803OTfFIaOdwAFo6gjxDB8d/ByRI2sJ5SpiyH4aQri7uLfgS1ZQeiWa0W3w6mo9D+Wh1+mxVBrxbk4pqyfNVfALmZcNox1WFzVrVMCpBIrE0ojIW2K/tbr/1ARDt5A2njmZ5hQy8JYWLHEcr1z2Pycd65BOenkzLta3uZkIWalZkXvDkGLGBv2DIw8o+40KgdM/bYtzx09P1SrUn51eYIh2Qv3Qd9/GGhFnu1sghERNQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51719d6a-6df3-46e3-2d3b-08dbd5eeedcb X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:43:57.4113 (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: GEyDDLXNRdfkiz3U78GKHD7LxurRu+o+Kn5KJyD54Ykc8CisN1PSpWlvMvqfv+wfWT0bHjAWHdsAtYs3ZAI9G9AVCyRSI2ZirS5Y83KpRho= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133348 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 DCB2C43204; Thu, 26 Oct 2023 08:45:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 25D6640EE7; Thu, 26 Oct 2023 08:44:07 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2131.outbound.protection.outlook.com [40.107.223.131]) by mails.dpdk.org (Postfix) with ESMTP id DECA4410D5 for ; Thu, 26 Oct 2023 08:44:00 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gHxtISGMeMeWJKEWBafVQHEB3rXoXGSq5mz/dp4sBd3qoJdzIxXM0Z6IH+2yqHpR0yxoKWgGr1HC9cA6y5R7/ZtTnllwHsDPgm+ql9Awi7Jk/YDZn8KOjAnf46K1wANd8mVy//GYvnDfZn1BhDPnIFCi4BoXbv+oybXvQimFQ5zs3wdnv4n2eA0RytsraZFJLVw3PBDJ5aPSRA87XWvYIBtPOdz9tlyAmiOytCwaOTz4bZo1fHaUo0cbKgqvn370SIkJc6F9uueBtUkdMHwMD+R7NdjrdiZBu4qvIYaLZZP8OwNZ2eRzgVbTiSQrBEPQGXF68OwK+76m7tmPmbICJQ== 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=QZR9T2FWNI8T2e1B1ArjI/ykaH9KN8ccBO7TTIjS8CxX4gAcEXZMdsAk0IYtxde6Gs2adAHaQRcNHtfiz88eSo0tEHazi8QPbAFkLgdFmGcEY4viE1GlvhZKb1K5yh80vG8cGNr54LAFcpKBSttvDr7vv6DiNhiFDjZCnse5CWgjVpUrr1FwrUvVAc3FtiFmM7uj38XY/3NVI8PGRnyxHbbd9VMB7vXwZeNKwU6LMmSGVIneoprr7tjggn1zzKXkMLFuUKdCgMj52PDKVeXp9jQejPto7jieWtOZwRfNMKen9MuGJq1JJ4D3rMGdvnK8YXkjKHOlFQA337+mPrWicA== 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=AbuMOyMVct6s4roXEkLKWU69tAl8kgM9ENujMlyswCvv/brvK3dTmpR0p0kUdQP42f37Hr2V4GqpMtJmurbmlWC0I62DQ+XhrQKuogk/ekhdXMroaSsOF/b02EBHa+k+FZSEFUujayVA5N318fagD8vfsWbzNqIrtsDJ6qz86Zs= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:43: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; Thu, 26 Oct 2023 06:43:59 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 08/25] net/nfp: extract the ctrl data field Date: Thu, 26 Oct 2023 14:43:07 +0800 Message-Id: <20231026064324.177531-9-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 42b23607-79b6-4002-8342-08dbd5eeeee4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1gPC9g9U1F5oSXmDZue/4MR6BaHb6aXNoe19wIW2eSK6gidaqsYUSPjLrj+SNOwty3n6uc5WINwgrJFK/aAg5V4j4vLwcLPXEaZ4v+PFNTxmzuBHGqTRLRIy582BLmbUsTa2QhK/fVq3sUuUmPJEH64i+i15URzsCcI0UnfCjMoAlRVAOu4BukwscrlS8Fe/+0SZ3/IeetPcXbHmIDs9J2JO194elUOyCqPLjull+g4gWEvfg9ibQVyw7B9/gQJ6yjdlBID438xpZ13ujAmkjEOJuK2YGGSXVHwZuNP7RnuASvH6TuCAo8PK/3VGIxV7ItZO5yrtj9GS1g7fTstVXzcxjh2M4eSPhyMJZ7J0eZteLvGoau/KPtq1ieC2sUwm09QRtreEH0eB4gOPgfU13lDEL+h8UmSnQnudqFO97EQ7m6NLYqVLUzeghOtC4XIqsNHQ6yC3VESHYO1xkFk89CxzQoHLCMFDsLCUkjqrtXKGqwFuQmJ4s9rjaE682rKhTEe0iCmozDlmDY+fkDKzaGuxDH56zNe6iuaHQnnWG0q7TWCEjleJsedDkWd5rIrP3ZltmfZmF8rOZdYRyvnJFe2pmoZVRToEWI4xmUeqoIwBY00HQEYNzqB/K3vNE06QK7p32E0v4HsvFCf/1ACwsJ6Lv6qLuFXFDt2e6Cpub9k= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(30864003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7c56R/onAaxDGlGh9Z2G94vq8UXLkYr0ZBewsKshQcSqbGiy5l8REje2lRIIcj3GoxaWaf5VNPPtj/WvW1Lv0JtIZNtP4GGIa8CVE4kfOm8lWnZK2suVqmshjy/omYlYy2spOPt8yMeR3u5cNY6flInLEd0/zzOmm3n4jmCRxRJ7sFdxDRm+lnrxRismJY9iEp9oDJAVehJ1XTII6rQZUAjA3cgKqahRpmx+kgsuhr1VEg6OWegaN9eTmR72hg6r+N58gdtoNy0JaFEREmLueh2dZncxwTdBAwGj5Zq16q9CMzhZofecpPuUdPl5ukEWFG/694LJJXOaZRQajoGa1/yUQEcV/BMfLvXK0LG3rmzZqE0AYVzEfsnNCQMEE0bDQqISvOB6OxkDqgZMRyn3rgEGb+bSs+1X3azrlWzBn2iszKguYHkHV0brw/h6THJCz2wHONJNGwmJ0i8mL1DwEPFA0Vgn89FYdOuEXp8CKmwINtpULbrtNqafBg227IaGS6PL4gWfZB8YqQ5RvXf8V34coH5z3HUPdYhWLYTd1OVb8MFJKM3+MENTSMQySNy7JNPRHO4R2rd26rkMBIJbpvVCWesUdfT1eS69oyV9uwTzw1TMPB7w+yOMAwwNoe+qf/QTOuVv0NMCRNa7Oxx0LBGiWQo7Z4XhEMRz7Rc/86DSxKqRW4ssDBykzqXCsEo7mQqE3+PadVnfgrSlg7rBfp4eS5WCUtz6ioh5kVuLB4QjPSEaMzcQuHRV3s/AzVZVC4ihd638Ig0QcpHOrrWh9aDsiqqtWF7WMlVRldnvxXsTTgfx7HIj8qV6BDgOYExWgZWyaR7Zuo9bbnPMQZP1fqJidQjHYaE98O3TNhiu5FVgoIU7e8toe7Uk7md4SmKJ0neSLoq9U7Fi1O7cgDJ0HUhnrHIV8DGTpQa+RLfO+S4/1i0q75ebUrE7hiAzBBoFnD7EXdMv8yrYSZ7S613Q5Ea6gxgLf5DkJX1v+SYyL+URB4YikHlIPFWqcTWpbITTV9p279yiaBu+T8cQ8b2Dix3rmaVPwGUAAzAfj89oLGYE+aDfN7mY/5ykGYNGU75G7wd60j865p23iwTbUBWPJdLtA5mG3dxZDJDXvlMItJYsNyZpPEwp4FUCcV9jSirojXbkqJ68hVxq+QhwlRcG6X48naM+MvhgptaRhHWCe/P4O3eYopRRzY2yJBL9+Atw0/SKN9/iTeTzHD/PVjllhqEsHqdD3OePIkKF1HmH4BYQe+/qY+aSSPWzeCUeRYLUfH7M/NCuhCBBHzB9t11GS/2OJv0Y69MJ23P0YeFDgrZzXM5Cn/C7Qi7CmiMhpCTe0xkC0bJ63aFP5aq1Gn5i4wslxe9C4ovQ4u1Ay6v6NX45Xt0librCqkLP916mANyanxJYXvPYvt5C60kZf5S72GR2+LQN4QGDeW8RTu+oafH2ghjsyP3xlabupvL/YZLdVaHZ8whXpN1BgmEikISVU80ddCIgwK9FE4f6VGkmjhPnSHYC5EoRRfr38eOgG4gJeZru7cJ359vHWQAL0kHlcZMa3OuIj1RPAEeKNtXWD0azbjONFpopUykAG9jifW/R224onbHCeOU0anYJSx2ZWA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 42b23607-79b6-4002-8342-08dbd5eeeee4 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:43:59.2819 (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: /+CsF49BihnEztXHefDDM/kC30MJ/79laBrFGlglTbuhSfk9W0S6ITxrVVeIgHiVrhWGs5cH1ndRAL7yHrPquW67FpoKunOfXv7eZI0HdfA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133349 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 4A1B343204; Thu, 26 Oct 2023 08:45:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3CE6442DD9; Thu, 26 Oct 2023 08:44:08 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2139.outbound.protection.outlook.com [40.107.223.139]) by mails.dpdk.org (Postfix) with ESMTP id A69AD42DB1 for ; Thu, 26 Oct 2023 08:44:03 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JAbdaN/D7Q0Fy398bGBiP1cKDRZaMldndDYI6DVlCsHNwIWHZeWjCOsG1Ih9WUKO5jXxM4TX0fas1V1SIIYmoqFcgvPfN+KJ5GLFjvb3BX1zIs4LMRSUjYk055L9zKr9zS5fE/727q8gD+W4LK242wiUMw0Sp1cP6QbAPKu/xGrA8v5eS9dfkgbXb2vxaQcXsaHSwH1AZRChnTsziI7+9uvKEOKcziTOrHd/28ZBpl1VhuNAL4+EmZhwK1XjCGxDQmldxID3FFm29J64mXI77XbfVb9mXdhHU2DY5UwdSpJ2I7U+BBGTavhrQSQgUVZnHt2qmjP1FJFdB+ccBmaCFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sNizU26KCgxiSonNKoeypW5/IWA+SPqNo20x+Kh3Z6M=; b=PeS8H9odAh452BCc/Xd7MFvBBTYV5w3gULxcGYU4vP71yuFFkHaZ/n0tPpNJ+/5FGwdCjvBfYBSUoCml0WJZ4CAK6/V7mj3RGU7lb3VInAluwVUKVVxe2416og8u5Z6jg4nl7joelIEDYlnOC1znFeQBDXnATNCYQnQFl2KGSRYAxXJ14ztuL8iI4azOTDy0ln6Et/KYjFdLx+C+E1c9n1FJ4/yP6zfXD4TYgEQzd5NCsHaK7b4mA+Um638k5y3ldYQvf8x5EuaRrOfdNv1+JnLOXK70kMq6I9ECzN/fAa24Ne7WJCkOhMHGmwJrfhBeC/Brm9/e6JQur2Q8AyftWg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sNizU26KCgxiSonNKoeypW5/IWA+SPqNo20x+Kh3Z6M=; b=BYmzWGQHZ2tJ6vsQQEZPHIS77eHekAGcvA9w5/67NHqncKHXvvuovVsCI6xE9+VMxXmq2W3AuwmmZSaEeOLW3GERbHShsiSjkBlcTZqLJVkfch4ogvUHUvh+OoIy1oK1u0qm6Tyt0u7J+6aDs1pG7iDMP0wL6W7ZmD5Bw2wL2TE= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44: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; Thu, 26 Oct 2023 06:44:01 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 09/25] net/nfp: change the parameter of APIs Date: Thu, 26 Oct 2023 14:43:08 +0800 Message-Id: <20231026064324.177531-10-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 29a5fa43-155e-4ad5-60a6-08dbd5eef007 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tmzR+3zqgAHN9nHfLCFvv9Mllnl8W2nGBJFPX8mdRxNDR3gT/h2aXEDVNfwbklRZ9hb7Ngt8S/A0hdVjkfetIl5Ex6Pcog7Vm6AaHcWcQZ7ahgUIYHjA5LjJPVUkaP5JOUHad6glRmjsI3pZ7famqc7tBRTcZnsY2Cq5c4e3ChLfpy7xju161gtBS7QKuGsN66flHEaduMG+ROvJ9go2676APzXUh3k2xRJSBxcXYHScfgfbdGgJaqpjUDCBInvuEaaygnDJ+cGZCjRpCBEN1k9+zU60iQ5jL2OO/3EGMcwpuVp4kj7DEvQ1LSSbyS1sPdPSNI9h6fVZfQ+rPKRw5Z6gjotMuJOCllQEmw4G1d82GCEBWs7O4QmbBO8ojGWszZ5ocl/KDRwCqLEL9hYM7H3d2aRw8PXEFTvmRgeBTPSJQ+6fjjUMnKpWrvIaiD2Uc2HdTDcT/xpaOnTeLM/ThweJMKsEq5e9COGeUb/6FTBXEa09rckEGoMFb+JAZBr8CylE9EexkLDEUmjdhg61wH4X5K2P23h3Vtsvz0mnxP/f7b7USSx72Pqxs0xFbcTaDMvargDbuMnlJjrDKTIzday4qMrk3JnI1dLkabGmT9MsXK4xGE0jtGWOX29H64mXEVt/JaReEraetANfT4EA4ZAdXwvxtSz3uxXJ7YkaZLM= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(30864003)(41300700001)(26005)(1076003)(6486002)(5660300002)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3Zs6oyiDlNcHSwyUJwPJougaQ50lw2VT63PdgYlsxef4gS31FMspG+lpzJahRC9lHAtrUvVCZqywJg32DLoGslcqQdtET7aKDrdIIQafxgY6/N8PGVqId52HNjojSNcmOogYF27QDYpPa+kTBGdYk7GTQafHy362R0VKhkac1phYV3fuRVBchZuQsGg/eENZOPFllUc5Y6XuJTTl+ZuWRDgFK9TaiA6o4JFsJ/Ym2zvEu3CG/r0T2IDIoTTUtCi9wP+ZzvCVI4tZ02mjNQ8JEWaC/AyMN4SXLhYM+FHL3s9tzava6jRm0QGEGtzbkEC7HAATUVq7jTyg2j0tqa0jT4QpqIlzwAp1t5ZQ77DaBwcYzpMTAlnkvMbU89I92dEJ2M3J7MDaPoqpvPev2JGB/qhkCI5fSqYU40hSTWDS6bFbZU+BvVIOtO7ggsbsk6XxHoerjZ9wz0djmb3bMDRh7Ds1Ucf9TmOOUuSP4EngmiUCWaAuGQVTs96uwAhismRy7V1C52e4ncMCbzC0WQxaUQGfiH88Uy+q/GCOKCybUsRobfs0ArH1rRDw6cMF42USwsnj7z4+4+X5hobcjZ9cO/phOQQq8Bw3tq7+mq6xCanQUgIFYjMYezRRRI1fGg2OYrasr6BP5WX6FUpwMFTbS9pCupJPkjQT1E9n1Z/IDRSG+z53QrpMQZJoXchZ8Ajy6BXso54BUbR1aPHefxeroJYSUo+5kprFF1Auy2ZOSJ/6/O/djgBf00ri9ROI2nptF6XTr3kwQ+L0WaqktOZHRlW4ISRKvXQPlLSmWP4HSPVmgDm8rdt32qiKrQKcKdE0DSCW9kArFtps55vhUI5ZTmhfOK2TlQqNprUylE7G5S9Ci5gxdhFzuGqL0WFDEynNpdwVDyeJVJqbek947nmi4j3T9geSMd+IR/Yu4A7l106YrohX4g0+C5vIOzt7/wWVdLxHuCnpflB9WPI3g+JN2FTnS9fpbRBKzLqpPzgD6We6xsbJ8WSHE+AHzIKrRFTuHPcC9oBnVmwioMUzqodUbKsljG+aGdG+C1Ydh/7cJGYNqMjf7Qglg03YlEusZVce+VH551f/+KxnVsyO3JNRMcyRSPTO0Vn4mRMhUqfc0eO0IU1x3QjUKt0haK36Oq0KDtxLcE17yK/jhlSNS1QiJ7v1+7iNGMbFFtCJH4XWxRmblXp0Nh1OF82IMooNwbI76S2jSwmuiCPltc9yu7LWXT4urPJETjk6odmhrtF8QXvepA9rCf2uitTRikV6TOO08HslFyjbILHrQsuoHTNGoNaLbg60MHE+nqV5QfFxq4hsbblyo5jdH460p3/WqrKd2Vft+6b6Mt7rrc2CahEsdHG0Iz/p66nUa61mgF0UfC+wz6R0qpNO1QX3kZq2p6ITR2SG5vVEcOYc82Jz+ckXC/o9mcUsT7uR2j6CcgFPJHA+CP025jXkq9cme7vTYGKjRpr4+RAV91EY76Z88Q+L/vLXRyi98BYvjaVvUYNh5NZHGtei2ZHeflduF4Pc5yIdYodQM+lkJKGAgraeaarXa+cbZX5lVVViSLGeIV5nxEjsTRwkD+2z4wFp+WCdvIZvMyOolseGucVDqFuh++J/BA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29a5fa43-155e-4ad5-60a6-08dbd5eef007 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:01.4073 (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: salIc0WABlC5yVgefr/qLhL6Ex7hNxk+306JR8vRfySgjF8LIMvZdpvC3aZV+Z961tzL3rF/kRA740oihvGGvkFoSzevAVf2muuSTZKbXys= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Change the parameter of some APIs from 'struct nfp_net_hw' into the super class 'struct nfp_hw', prepare for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.c | 24 ++-- .../net/nfp/flower/nfp_flower_representor.c | 10 +- drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 4 +- drivers/net/nfp/nfdk/nfp_nfdk_dp.c | 4 +- drivers/net/nfp/nfp_ethdev.c | 8 +- drivers/net/nfp/nfp_ethdev_vf.c | 12 +- drivers/net/nfp/nfp_ipsec.c | 4 +- drivers/net/nfp/nfp_net_common.c | 129 +++++++++--------- drivers/net/nfp/nfp_net_common.h | 32 ++--- drivers/net/nfp/nfp_rxtx.c | 4 +- 10 files changed, 116 insertions(+), 115 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 8bb5914888..ccb579541b 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -36,7 +36,7 @@ nfp_pf_repr_enable_queues(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_tx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); enabled_queues = 0; @@ -44,7 +44,7 @@ nfp_pf_repr_enable_queues(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_rx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); } static void @@ -58,8 +58,8 @@ nfp_pf_repr_disable_queues(struct rte_eth_dev *dev) repr = dev->data->dev_private; hw = repr->app_fw_flower->pf_hw; - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, 0); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, 0); new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | @@ -114,7 +114,7 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; - nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl); + nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, new_ctrl); /* If an error when reconfig we avoid to change hw state */ ret = nfp_net_reconfig(hw, new_ctrl, update); @@ -219,7 +219,7 @@ nfp_flower_pf_close(struct rte_eth_dev *dev) /* Cancel possible impending LSC work here before releasing the port */ rte_eal_alarm_cancel(nfp_net_dev_interrupt_delayed_handler, (void *)dev); - nn_cfg_writeb(hw, NFP_NET_CFG_LSC, 0xff); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, 0xff); /* Now it is safe to free all PF resources */ PMD_DRV_LOG(INFO, "Freeing PF resources"); @@ -356,9 +356,9 @@ nfp_flower_init_vnic_common(struct nfp_net_hw *hw, return err; /* Work out where in the BAR the queues start */ - start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); + start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_TXQ); tx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ; - start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); + start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_RXQ); rx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ; hw->tx_bar = pf_dev->qc_bar + tx_bar_off; @@ -543,8 +543,8 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) * Telling the HW about the physical address of the RX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(i), rxq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(i), rxq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); } snprintf(ctrl_txring_name, sizeof(ctrl_txring_name), "%s_cttx_ring", pci_name); @@ -608,8 +608,8 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) * Telling the HW about the physical address of the TX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(i), txq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(i), txq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); } return 0; diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index 650f09a475..b52c6f514a 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -97,8 +97,8 @@ nfp_pf_repr_rx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the RX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); return 0; } @@ -181,8 +181,8 @@ nfp_pf_repr_tx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the TX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(nb_desc)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(nb_desc)); return 0; } @@ -228,7 +228,7 @@ nfp_flower_repr_link_update(struct rte_eth_dev *dev, } } } else { - nn_link_status = nn_cfg_readw(pf_hw, NFP_NET_CFG_STS); + nn_link_status = nn_cfg_readw(&pf_hw->super, NFP_NET_CFG_STS); nn_link_status = (nn_link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) & NFP_NET_CFG_STS_LINK_RATE_MASK; diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c index 3045533857..c85fadc80d 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c +++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c @@ -465,8 +465,8 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the TX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count)); return 0; } diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c index 63421ba796..3f8d25aa29 100644 --- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c +++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c @@ -542,8 +542,8 @@ nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the TX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count)); return 0; } diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 0f6f97be8e..a773a81e55 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -286,7 +286,7 @@ nfp_net_close(struct rte_eth_dev *dev) /* Only free PF resources after all physical ports have been closed */ /* Mark this port as unused and free device priv resources */ - nn_cfg_writeb(hw, NFP_NET_CFG_LSC, 0xff); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, 0xff); app_fw_nic->ports[hw->idx] = NULL; for (i = 0; i < app_fw_nic->total_phyports; i++) { @@ -567,8 +567,8 @@ nfp_net_init(struct rte_eth_dev *eth_dev) } /* Work out where in the BAR the queues start. */ - tx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); - rx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); + tx_base = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_TXQ); + rx_base = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_RXQ); hw->tx_bar = pf_dev->qc_bar + tx_base * NFP_QCP_QUEUE_ADDR_SZ; hw->rx_bar = pf_dev->qc_bar + rx_base * NFP_QCP_QUEUE_ADDR_SZ; @@ -625,7 +625,7 @@ nfp_net_init(struct rte_eth_dev *eth_dev) rte_intr_callback_register(pci_dev->intr_handle, nfp_net_dev_interrupt_handler, (void *)eth_dev); /* Telling the firmware about the LSC interrupt entry */ - nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); /* Recording current stats counters values */ nfp_net_stats_reset(eth_dev); diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 684968903c..7fb2a3d378 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -20,10 +20,10 @@ nfp_netvf_read_mac(struct nfp_net_hw *hw) { uint32_t tmp; - tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR)); + tmp = rte_be_to_cpu_32(nn_cfg_readl(&hw->super, NFP_NET_CFG_MACADDR)); memcpy(&hw->mac_addr.addr_bytes[0], &tmp, 4); - tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR + 4)); + tmp = rte_be_to_cpu_32(nn_cfg_readl(&hw->super, NFP_NET_CFG_MACADDR + 4)); memcpy(&hw->mac_addr.addr_bytes[4], &tmp, 2); } @@ -97,7 +97,7 @@ nfp_netvf_start(struct rte_eth_dev *dev) if ((hw->super.cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; - nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl); + nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, new_ctrl); if (nfp_net_reconfig(hw, new_ctrl, update) != 0) return -EIO; @@ -299,9 +299,9 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) } /* Work out where in the BAR the queues start. */ - start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); + start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_TXQ); tx_bar_off = nfp_qcp_queue_offset(dev_info, start_q); - start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); + start_q = nn_cfg_readl(&hw->super, NFP_NET_CFG_START_RXQ); rx_bar_off = nfp_qcp_queue_offset(dev_info, start_q); hw->tx_bar = (uint8_t *)pci_dev->mem_resource[2].addr + tx_bar_off; @@ -357,7 +357,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev) rte_intr_callback_register(pci_dev->intr_handle, nfp_net_dev_interrupt_handler, (void *)eth_dev); /* Telling the firmware about the LSC interrupt entry */ - nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX); /* Recording current stats counters values */ nfp_net_stats_reset(eth_dev); } diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index e080e71db2..0da5c2a3d2 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -445,7 +445,7 @@ nfp_ipsec_cfg_cmd_issue(struct nfp_net_hw *hw, msg->rsp = NFP_IPSEC_CFG_MSG_OK; for (i = 0; i < msg_size; i++) - nn_cfg_writel(hw, NFP_NET_CFG_MBOX_VAL + 4 * i, msg->raw[i]); + nn_cfg_writel(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i, msg->raw[i]); ret = nfp_net_mbox_reconfig(hw, NFP_NET_CFG_MBOX_CMD_IPSEC); if (ret < 0) { @@ -459,7 +459,7 @@ nfp_ipsec_cfg_cmd_issue(struct nfp_net_hw *hw, * response. One example where the data is needed is for statistics. */ for (i = 0; i < msg_size; i++) - msg->raw[i] = nn_cfg_readl(hw, NFP_NET_CFG_MBOX_VAL + 4 * i); + msg->raw[i] = nn_cfg_readl(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i); switch (msg->rsp) { case NFP_IPSEC_CFG_MSG_OK: diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 058260bda3..2ab8d8fadd 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -182,7 +182,8 @@ nfp_net_notify_port_speed(struct nfp_net_hw *hw, * NFP_NET_CFG_STS_NSP_LINK_RATE. */ if (link->link_status == RTE_ETH_LINK_DOWN) { - nn_cfg_writew(hw, NFP_NET_CFG_STS_NSP_LINK_RATE, NFP_NET_CFG_STS_LINK_RATE_UNKNOWN); + nn_cfg_writew(&hw->super, NFP_NET_CFG_STS_NSP_LINK_RATE, + NFP_NET_CFG_STS_LINK_RATE_UNKNOWN); return; } @@ -190,7 +191,7 @@ nfp_net_notify_port_speed(struct nfp_net_hw *hw, * Link is up so write the link speed from the eth_table to * NFP_NET_CFG_STS_NSP_LINK_RATE. */ - nn_cfg_writew(hw, NFP_NET_CFG_STS_NSP_LINK_RATE, + nn_cfg_writew(&hw->super, NFP_NET_CFG_STS_NSP_LINK_RATE, nfp_net_link_speed_rte2nfp(link->link_speed)); } @@ -222,7 +223,7 @@ __nfp_net_reconfig(struct nfp_net_hw *hw, /* Poll update field, waiting for NFP to ack the config */ for (cnt = 0; ; cnt++) { - new = nn_cfg_readl(hw, NFP_NET_CFG_UPDATE); + new = nn_cfg_readl(&hw->super, NFP_NET_CFG_UPDATE); if (new == 0) break; @@ -270,8 +271,8 @@ nfp_net_reconfig(struct nfp_net_hw *hw, rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(hw, NFP_NET_CFG_CTRL, ctrl); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); + nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL, ctrl); + nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, update); rte_wmb(); @@ -314,8 +315,8 @@ nfp_net_ext_reconfig(struct nfp_net_hw *hw, rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(hw, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, update); + nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); + nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, update); rte_wmb(); @@ -355,8 +356,8 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *hw, rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writeq(hw, mbox + NFP_NET_CFG_MBOX_SIMPLE_CMD, mbox_cmd); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_MBOX); + nn_cfg_writeq(&hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_CMD, mbox_cmd); + nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_MBOX); rte_wmb(); @@ -370,7 +371,7 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *hw, return -EIO; } - return nn_cfg_readl(hw, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET); + return nn_cfg_readl(&hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET); } /* @@ -478,14 +479,14 @@ nfp_net_enable_queues(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_tx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); /* Enabling the required RX queues in the device */ enabled_queues = 0; for (i = 0; i < dev->data->nb_rx_queues; i++) enabled_queues |= (1 << i); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); } void @@ -497,8 +498,8 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, 0); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, 0); new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | @@ -518,8 +519,8 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) void nfp_net_params_setup(struct nfp_net_hw *hw) { - nn_cfg_writel(hw, NFP_NET_CFG_MTU, hw->mtu); - nn_cfg_writel(hw, NFP_NET_CFG_FLBUFSZ, hw->flbufsz); + nn_cfg_writel(&hw->super, NFP_NET_CFG_MTU, hw->mtu); + nn_cfg_writel(&hw->super, NFP_NET_CFG_FLBUFSZ, hw->flbufsz); } void @@ -596,7 +597,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev, if (rte_intr_type_get(intr_handle) == RTE_INTR_HANDLE_UIO) { PMD_DRV_LOG(INFO, "VF: enabling RX interrupt with UIO"); /* UIO just supports one queue and no LSC */ - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_VEC(0), 0); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_VEC(0), 0); if (rte_intr_vec_list_index_set(intr_handle, 0, 0) != 0) return -1; } else { @@ -606,7 +607,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev, * The first msix vector is reserved for non * efd interrupts. */ - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_VEC(i), i + 1); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_VEC(i), i + 1); if (rte_intr_vec_list_index_set(intr_handle, i, i + 1) != 0) return -1; } @@ -771,7 +772,7 @@ nfp_net_link_update(struct rte_eth_dev *dev, memset(&link, 0, sizeof(struct rte_eth_link)); /* Read link status */ - nn_link_status = nn_cfg_readw(hw, NFP_NET_CFG_STS); + nn_link_status = nn_cfg_readw(&hw->super, NFP_NET_CFG_STS); if ((nn_link_status & NFP_NET_CFG_STS_LINK) != 0) link.link_status = RTE_ETH_LINK_UP; @@ -842,12 +843,12 @@ nfp_net_stats_get(struct rte_eth_dev *dev, break; nfp_dev_stats.q_ipackets[i] = - nn_cfg_readq(hw, NFP_NET_CFG_RXR_STATS(i)); + nn_cfg_readq(&hw->super, NFP_NET_CFG_RXR_STATS(i)); nfp_dev_stats.q_ipackets[i] -= hw->eth_stats_base.q_ipackets[i]; nfp_dev_stats.q_ibytes[i] = - nn_cfg_readq(hw, NFP_NET_CFG_RXR_STATS(i) + 0x8); + nn_cfg_readq(&hw->super, NFP_NET_CFG_RXR_STATS(i) + 0x8); nfp_dev_stats.q_ibytes[i] -= hw->eth_stats_base.q_ibytes[i]; } @@ -858,42 +859,42 @@ nfp_net_stats_get(struct rte_eth_dev *dev, break; nfp_dev_stats.q_opackets[i] = - nn_cfg_readq(hw, NFP_NET_CFG_TXR_STATS(i)); + nn_cfg_readq(&hw->super, NFP_NET_CFG_TXR_STATS(i)); nfp_dev_stats.q_opackets[i] -= hw->eth_stats_base.q_opackets[i]; nfp_dev_stats.q_obytes[i] = - nn_cfg_readq(hw, NFP_NET_CFG_TXR_STATS(i) + 0x8); + nn_cfg_readq(&hw->super, NFP_NET_CFG_TXR_STATS(i) + 0x8); nfp_dev_stats.q_obytes[i] -= hw->eth_stats_base.q_obytes[i]; } - nfp_dev_stats.ipackets = nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_FRAMES); + nfp_dev_stats.ipackets = nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_FRAMES); nfp_dev_stats.ipackets -= hw->eth_stats_base.ipackets; - nfp_dev_stats.ibytes = nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_OCTETS); + nfp_dev_stats.ibytes = nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_OCTETS); nfp_dev_stats.ibytes -= hw->eth_stats_base.ibytes; nfp_dev_stats.opackets = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_FRAMES); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_FRAMES); nfp_dev_stats.opackets -= hw->eth_stats_base.opackets; nfp_dev_stats.obytes = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_OCTETS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_OCTETS); nfp_dev_stats.obytes -= hw->eth_stats_base.obytes; /* Reading general device stats */ nfp_dev_stats.ierrors = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_ERRORS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_ERRORS); nfp_dev_stats.ierrors -= hw->eth_stats_base.ierrors; nfp_dev_stats.oerrors = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_ERRORS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_ERRORS); nfp_dev_stats.oerrors -= hw->eth_stats_base.oerrors; /* RX ring mbuf allocation failures */ nfp_dev_stats.rx_nombuf = dev->data->rx_mbuf_alloc_failed; nfp_dev_stats.imissed = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_DISCARDS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_DISCARDS); nfp_dev_stats.imissed -= hw->eth_stats_base.imissed; memcpy(stats, &nfp_dev_stats, sizeof(*stats)); @@ -918,10 +919,10 @@ nfp_net_stats_reset(struct rte_eth_dev *dev) break; hw->eth_stats_base.q_ipackets[i] = - nn_cfg_readq(hw, NFP_NET_CFG_RXR_STATS(i)); + nn_cfg_readq(&hw->super, NFP_NET_CFG_RXR_STATS(i)); hw->eth_stats_base.q_ibytes[i] = - nn_cfg_readq(hw, NFP_NET_CFG_RXR_STATS(i) + 0x8); + nn_cfg_readq(&hw->super, NFP_NET_CFG_RXR_STATS(i) + 0x8); } /* Reading per TX ring stats */ @@ -930,36 +931,36 @@ nfp_net_stats_reset(struct rte_eth_dev *dev) break; hw->eth_stats_base.q_opackets[i] = - nn_cfg_readq(hw, NFP_NET_CFG_TXR_STATS(i)); + nn_cfg_readq(&hw->super, NFP_NET_CFG_TXR_STATS(i)); hw->eth_stats_base.q_obytes[i] = - nn_cfg_readq(hw, NFP_NET_CFG_TXR_STATS(i) + 0x8); + nn_cfg_readq(&hw->super, NFP_NET_CFG_TXR_STATS(i) + 0x8); } hw->eth_stats_base.ipackets = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_FRAMES); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_FRAMES); hw->eth_stats_base.ibytes = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_OCTETS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_OCTETS); hw->eth_stats_base.opackets = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_FRAMES); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_FRAMES); hw->eth_stats_base.obytes = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_OCTETS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_OCTETS); /* Reading general device stats */ hw->eth_stats_base.ierrors = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_ERRORS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_ERRORS); hw->eth_stats_base.oerrors = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_TX_ERRORS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_TX_ERRORS); /* RX ring mbuf allocation failures */ dev->data->rx_mbuf_alloc_failed = 0; hw->eth_stats_base.imissed = - nn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_DISCARDS); + nn_cfg_readq(&hw->super, NFP_NET_CFG_STATS_RX_DISCARDS); return 0; } @@ -1012,7 +1013,7 @@ nfp_net_xstats_value(const struct rte_eth_dev *dev, if (xstat.group == NFP_XSTAT_GROUP_MAC) value = nn_readq(hw->mac_stats + xstat.offset); else - value = nn_cfg_readq(hw, xstat.offset); + value = nn_cfg_readq(&hw->super, xstat.offset); if (raw) return value; @@ -1320,8 +1321,8 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, hw->subsystem_device_id = pci_dev->id.subsystem_device_id; hw->subsystem_vendor_id = pci_dev->id.subsystem_vendor_id; - hw->max_rx_queues = nn_cfg_readl(hw, NFP_NET_CFG_MAX_RXRINGS); - hw->max_tx_queues = nn_cfg_readl(hw, NFP_NET_CFG_MAX_TXRINGS); + hw->max_rx_queues = nn_cfg_readl(&hw->super, NFP_NET_CFG_MAX_RXRINGS); + hw->max_tx_queues = nn_cfg_readl(&hw->super, NFP_NET_CFG_MAX_TXRINGS); if (hw->max_rx_queues == 0 || hw->max_tx_queues == 0) { PMD_INIT_LOG(ERR, "Device %s can not be used, there are no valid queue " "pairs for use", pci_dev->name); @@ -1336,9 +1337,9 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, return -ENODEV; /* Get some of the read-only fields from the config BAR */ - hw->super.cap = nn_cfg_readl(hw, NFP_NET_CFG_CAP); - hw->super.cap_ext = nn_cfg_readl(hw, NFP_NET_CFG_CAP_WORD1); - hw->max_mtu = nn_cfg_readl(hw, NFP_NET_CFG_MAX_MTU); + hw->super.cap = nn_cfg_readl(&hw->super, NFP_NET_CFG_CAP); + hw->super.cap_ext = nn_cfg_readl(&hw->super, NFP_NET_CFG_CAP_WORD1); + hw->max_mtu = nn_cfg_readl(&hw->super, NFP_NET_CFG_MAX_MTU); hw->flbufsz = DEFAULT_FLBUF_SIZE; nfp_net_init_metadata_format(hw); @@ -1347,7 +1348,7 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, if (hw->ver.major < 2) hw->rx_offset = NFP_NET_RX_OFFSET; else - hw->rx_offset = nn_cfg_readl(hw, NFP_NET_CFG_RX_OFFSET_ADDR); + hw->rx_offset = nn_cfg_readl(&hw->super, NFP_NET_CFG_RX_OFFSET_ADDR); hw->super.ctrl = 0; hw->stride_rx = stride; @@ -1389,7 +1390,7 @@ nfp_rx_queue_intr_enable(struct rte_eth_dev *dev, rte_wmb(); hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - nn_cfg_writeb(hw, NFP_NET_CFG_ICR(base + queue_id), + nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_UNMASKED); return 0; } @@ -1410,7 +1411,7 @@ nfp_rx_queue_intr_disable(struct rte_eth_dev *dev, rte_wmb(); hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - nn_cfg_writeb(hw, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX); return 0; } @@ -1457,7 +1458,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev) /* If MSI-X auto-masking is used, clear the entry */ rte_intr_ack(pci_dev->intr_handle); } else { - nn_cfg_writeb(hw, NFP_NET_CFG_ICR(NFP_NET_IRQ_LSC_IDX), + nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(NFP_NET_IRQ_LSC_IDX), NFP_NET_CFG_ICR_UNMASKED); } } @@ -1539,7 +1540,7 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev, } /* Writing to configuration space */ - nn_cfg_writel(hw, NFP_NET_CFG_MTU, mtu); + nn_cfg_writel(&hw->super, NFP_NET_CFG_MTU, mtu); hw->mtu = mtu; @@ -1630,7 +1631,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, /* If all 4 entries were set, don't need read RETA register */ if (mask != 0xF) - reta = nn_cfg_readl(hw, NFP_NET_CFG_RSS_ITBL + i); + reta = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_ITBL + i); for (j = 0; j < 4; j++) { if ((mask & (0x1 << j)) == 0) @@ -1643,7 +1644,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, reta |= reta_conf[idx].reta[shift + j] << (8 * j); } - nn_cfg_writel(hw, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift, reta); + nn_cfg_writel(&hw->super, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift, reta); } return 0; @@ -1713,7 +1714,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev, if (mask == 0) continue; - reta = nn_cfg_readl(hw, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift); + reta = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift); for (j = 0; j < 4; j++) { if ((mask & (0x1 << j)) == 0) continue; @@ -1741,7 +1742,7 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, /* Writing the key byte by byte */ for (i = 0; i < rss_conf->rss_key_len; i++) { memcpy(&key, &rss_conf->rss_key[i], 1); - nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY + i, key); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RSS_KEY + i, key); } rss_hf = rss_conf->rss_hf; @@ -1774,10 +1775,10 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ; /* Configuring where to apply the RSS hash */ - nn_cfg_writel(hw, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); + nn_cfg_writel(&hw->super, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); /* Writing the key size */ - nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len); return 0; } @@ -1835,7 +1836,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, return -EINVAL; rss_hf = rss_conf->rss_hf; - cfg_rss_ctrl = nn_cfg_readl(hw, NFP_NET_CFG_RSS_CTRL); + cfg_rss_ctrl = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_CTRL); if ((cfg_rss_ctrl & NFP_NET_CFG_RSS_IPV4) != 0) rss_hf |= RTE_ETH_RSS_IPV4; @@ -1865,11 +1866,11 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, rss_conf->rss_hf = rss_hf; /* Reading the key size */ - rss_conf->rss_key_len = nn_cfg_readl(hw, NFP_NET_CFG_RSS_KEY_SZ); + rss_conf->rss_key_len = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_KEY_SZ); /* Reading the key byte a byte */ for (i = 0; i < rss_conf->rss_key_len; i++) { - key = nn_cfg_readb(hw, NFP_NET_CFG_RSS_KEY + i); + key = nn_cfg_readb(&hw->super, NFP_NET_CFG_RSS_KEY + i); memcpy(&rss_conf->rss_key[i], &key, 1); } @@ -1983,13 +1984,13 @@ nfp_net_set_vxlan_port(struct nfp_net_hw *hw, hw->vxlan_ports[idx] = port; for (i = 0; i < NFP_NET_N_VXLAN_PORTS; i += 2) { - nn_cfg_writel(hw, NFP_NET_CFG_VXLAN_PORT + i * sizeof(port), + nn_cfg_writel(&hw->super, NFP_NET_CFG_VXLAN_PORT + i * sizeof(port), (hw->vxlan_ports[i + 1] << 16) | hw->vxlan_ports[i]); } rte_spinlock_lock(&hw->reconfig_lock); - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_VXLAN); + nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_VXLAN); rte_wmb(); ret = __nfp_net_reconfig(hw, NFP_NET_CFG_UPDATE_VXLAN); @@ -2048,7 +2049,7 @@ nfp_net_cfg_read_version(struct nfp_net_hw *hw) struct nfp_net_fw_ver split; } version; - version.whole = nn_cfg_readl(hw, NFP_NET_CFG_VERSION); + version.whole = nn_cfg_readl(&hw->super, NFP_NET_CFG_VERSION); hw->ver = version.split; } diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 3fb3b34613..3fe3e96107 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -247,63 +247,63 @@ nn_writeq(uint64_t val, } static inline uint8_t -nn_cfg_readb(struct nfp_net_hw *hw, +nn_cfg_readb(struct nfp_hw *hw, uint32_t off) { - return nn_readb(hw->super.ctrl_bar + off); + return nn_readb(hw->ctrl_bar + off); } static inline void -nn_cfg_writeb(struct nfp_net_hw *hw, +nn_cfg_writeb(struct nfp_hw *hw, uint32_t off, uint8_t val) { - nn_writeb(val, hw->super.ctrl_bar + off); + nn_writeb(val, hw->ctrl_bar + off); } static inline uint16_t -nn_cfg_readw(struct nfp_net_hw *hw, +nn_cfg_readw(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_16(nn_readw(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_16(nn_readw(hw->ctrl_bar + off)); } static inline void -nn_cfg_writew(struct nfp_net_hw *hw, +nn_cfg_writew(struct nfp_hw *hw, uint32_t off, uint16_t val) { - nn_writew(rte_cpu_to_le_16(val), hw->super.ctrl_bar + off); + nn_writew(rte_cpu_to_le_16(val), hw->ctrl_bar + off); } static inline uint32_t -nn_cfg_readl(struct nfp_net_hw *hw, +nn_cfg_readl(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_32(nn_readl(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_32(nn_readl(hw->ctrl_bar + off)); } static inline void -nn_cfg_writel(struct nfp_net_hw *hw, +nn_cfg_writel(struct nfp_hw *hw, uint32_t off, uint32_t val) { - nn_writel(rte_cpu_to_le_32(val), hw->super.ctrl_bar + off); + nn_writel(rte_cpu_to_le_32(val), hw->ctrl_bar + off); } static inline uint64_t -nn_cfg_readq(struct nfp_net_hw *hw, +nn_cfg_readq(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_64(nn_readq(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_64(nn_readq(hw->ctrl_bar + off)); } static inline void -nn_cfg_writeq(struct nfp_net_hw *hw, +nn_cfg_writeq(struct nfp_hw *hw, uint32_t off, uint64_t val) { - nn_writeq(rte_cpu_to_le_64(val), hw->super.ctrl_bar + off); + nn_writeq(rte_cpu_to_le_64(val), hw->ctrl_bar + off); } /** diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index a9dd464a6a..f17cc13cc1 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -925,8 +925,8 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the RX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); return 0; } From patchwork Thu Oct 26 06:43:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133350 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 6995643204; Thu, 26 Oct 2023 08:45:31 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 12B3A42DE1; Thu, 26 Oct 2023 08:44:12 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2136.outbound.protection.outlook.com [40.107.244.136]) by mails.dpdk.org (Postfix) with ESMTP id 3F19640A8A for ; Thu, 26 Oct 2023 08:44:05 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lDspWOjUt95xnsOv8JjGFRT3BqlEOLYMiduZxazVVnjl9mnx9DbSbXojWKrmAVqsLxkCL1t4AlM9SnLYYOUVYSd6x/ydXBuxAK5Ile20zZPVfrOOvqBIUzXNFDoT5IO6mj8EwMocmHxTXCzC8hHBKdW3UlLY3eGFTMHFoNbbq85zv9DQrIhPF0YX8TXSG+xEH+MnFFNbtNuFlpnVj4jyhX3I8Lt5SCchxPnyz9xaJYKLpPdAUoVi7qp/yRGlFWBUbg8AFOAfMOvrHsaGsH/+RQ9kHLOuvAy+keogLcah9Uy/L+LkWgjSQyyL+yrkpO9SsfKP4KCgkJwVI63+GjhnKA== 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=h/mshjoYc3BOwI58GRx3z9Kt2nUOTVz9UKYxudYDR4B0g9R+Xc7dHVhyID+JdFaI55J6fCaYPSBY+6DR+yf4apP6u9aQabDYQ3amHO8HzUlB0dMYUebT21dsbSsYM6kXa9ACV+KFeR68Hqnvqr4Oiz9qxtTF1zAC8q4s8Syxsi/QOKTzuwsNNLXf6efaB76Rv5N5qe/q6ojF6V4/KRi25SjUjFXcF9nuXzGr0wmcvuanNkHcZE9Fvh1JSJHx2j0xrzEs0NONP5HDqgnfMwXl1pcR05mbGnZplB5Xy4eT6UqpXUvSrjuvU4JwD+UgkUkrrdJg+KgIts2So3l0w5dbOg== 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=dqIzseQJCKGEzRQR5uMw8sEg3yKS7TYcbu9OsjuHJfF309JmN21jbBn6BqEgAWpev0gle4jSWKVjB2Iwrucq3iH2njsxm/58+5QqsiZL2i18Y+tEPk1T67kZmnhb4LgegH7miXZqFoNk9XEvqLhjwqSsiaOW3A+JbKuxmJvWX6U= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44: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; Thu, 26 Oct 2023 06:44:03 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 10/25] net/nfp: change the parameter of reconfig Date: Thu, 26 Oct 2023 14:43:09 +0800 Message-Id: <20231026064324.177531-11-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: b6fdb42e-2e54-41d5-40a6-08dbd5eef149 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DxF3kxpf705hjiwoZN6andUBugMhnPhRVglfa6L3uMUKF8Pf0rclEiQJ27IAZ8uNNso35sRrmKLJPke1ZX7/6x3vOEDcdfeT6Cg5bbSl/p0N+371oZTTSbzA5Majoc7HhDI3L5/zL6CQKKORSo2o0UJ5xYYH/leG2c1mNQLbTf+Wlh2a3nI3K0JGRLzmgrWWAosTZz1QnZT2eAqznF2sXAKChJmOml5iDeWo7ez20+gQ5/yhOkfPNbap5uqyxjoccXvi+WOSzMNzt03k172vFMjCX9PR1SWwjfDaqYv01iYim8D/C9EBBv+pvwXm2TU/3dXt1zeHRhPtBA/8Znlwq7M32e0zvWi7DiNQc9lwU1Tywqgqp2JPa7HBwIZGxUQjmnuH7cjMvlxNJf1c7eD5epRbKSoXxbnjNUmJewwH1xAdY5SB0yhzB+DNyU8dLYhGlzbfVMhR/+XMWutzufsO4wkn5LRH/bP1+tA1i/71K1lJVCmxRbd6jpHP8Ev7dcSebTXv3i2RCCYDE1ief/mfZmwfnvsNOUKY9lC7Y8T/JRi383Nxk/5+3oL7XiNS5AfCUKg0KeqqgR85guPqG/LCh8Ew52tXVzFdiMiYxXotyoNF1A+Q9bk7KfgtDv9SHEAOTS3ykZlWgULC4cuU9luBbjyMfalfeZfU1raIZYWvcoo= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(30864003)(41300700001)(26005)(1076003)(6486002)(5660300002)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SascwoTR0S6hizhLctcRiFGgt8tCAItpXTtxNGXnn9w8iE9HDYxkg7BPKDFKIWkLsONW6hvguY8ENM/w6CzYhJFyz2hbeCJN0rUuwBUazINrql12ojMI4qIoG7eMlHWOH2lBTrAe+cU9k76Z0IIRhydqhm6Mm2KEEhe2Coh4kS0MFVAomniomGf7eYOV9c7cTsHH65HvFUocl8LkT/NP9s0ZG3evS1OpvKgy096RAXWIklILoQruwfQ8nBjmymZrp4NKyKdDgVPvlCQLZKV0WCUntFG+jkSSGU06hxEKbPUSbx0CfEYyZtQU07SR/Wx2jvUiiuJuuKnY3NLwcHiVi4vKbdpvso7WYnqAccARMkMakBN4cQncGg5jQr9RwKnTDiOd+rjBSVqj+MI9gMurU13VWlviSmGvvJR+6pId4r98hpwao7vMKfGv+oqUCySMVjLlRaSkR8XgOdnc2zVKEe9qi8nO3eZWeL/81n4SMH8kg1YNfNI+TCBk4mvArbzyez5zl4u+82K43qaXgfHlqWP/B7iGV0GdyIpQKBEJoxXXpjBl4uWtbG+3TW4PWr6VREZi9dTGjq8FFVvsDfiUCpE1SSzYr+puhWzkDiMU4N4AmVJqbX3yjGteZAGyDdTZ+RoqPVNYnwHWaT/DXRPUUH95VAe1S2sUh8+Z1YvhtliVCLhAec5kEYEMkbWNktxek6qzjl5seP8dQBk3lxJks1SWCfarkeLpA11YeKCWw1Il1tjMqCvY6H+MQMeFN6BxOsnTJsQ/ufuRB9Llfxxp23g5XI2husEztY8pFdYC3LCq6WarijMUowlxk/SRcdfgI5kaDHvFCdmLXhkUP4TEkIiklhxpaJz5SVQA3YDdtYhmBeyE0t0J7nvxh60U4aMzznndJ+6o5kXjq3aS89h1hLpxF7z2TCCnTx3k3FXKbyr61aa+3r3u8QDx8J0TykV508hfAhp4f3PyIjXvsmZwQwqrcIe60VNwTY/4/7KbKTyX1X56S5gWNBwRYah5hz/2U84fOZf2gzV4ej2G9UlAHjlFEGZ1fj/iBaW0tsrHbHigM48BfxVFjsRhTGMnUci/4yTGF9QvN7PdJUlzJ52lCsJXZiULdVROArV3By0R1yxxq9Y6TP/ZPVAoK+8EdUS4oJuba6TLnet3Km3iuINgsgwGOgRVSDsjwdvDrifdPxl9WL8lICU5ka2+FUl/vwBrKS+r3gnDdWTV/Z75zDoJwQfJKP544xMCfSmUwGAfRjVhFEYxZJyC/NdrmWDniAyIEk+ooc+2/EvcsHxKNojCIQE1VfmEAm9LyaOi09bDAyPT4Nv/Y84XQX87E/83HMybk63b/QCkGuAQqKcJ8eZ4Eo3G1m9OuERHOZdrmQAQqKwR5QLmiLRqk7IDWzP3EF3HViwWfcujE1jMAnvzEJ1g3VB1tiLv36AeS4PIoSe/1AjtHkemlTVgPx4BvZmgfa6La3kY73VnToOfEYSob2sR/wp4A2OpjdaO0x415Cx8JygtxJl1SaklDcyI5BnbTcJseMI9uvcqKlXwaa15AmLuxG/je0KHOzi3QXysMvAmN4q8VzQ7QbXrmK0vqF8wIUEcb5UzeW33TfII3xMx8EPD5Q== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6fdb42e-2e54-41d5-40a6-08dbd5eef149 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:03.2928 (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: eF8kkLIuk5OKzIfq4/gcTd2q00PgLM8pW1zqbyf6Ruglc+GGmIoN0zIdyVCFOnrG8BGm/OOa162RgkiaGdYeVXWE+R/x/WMMZcsEZJA3Bjg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133351 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 B476343204; Thu, 26 Oct 2023 08:45:41 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3564642E01; Thu, 26 Oct 2023 08:44:13 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2121.outbound.protection.outlook.com [40.107.244.121]) by mails.dpdk.org (Postfix) with ESMTP id B2CBB40EE7 for ; Thu, 26 Oct 2023 08:44:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WOtqzo+mWrJXQRFnjvSg+W5PL7plPjjlSqE4pJsApFKZzmUvvJ0uaDieJierjuHBhexGmOSlDVb1hm88vTnPDnddA40Dw/Tlxc1z0J9Qh0nk2j4ZT/81C4nTq+HjSqeRbho+n3hR8QUv5BB+2G10VgdmU2+ZsZ5qCBo6JVor5wrxVdLZpq8MsBD78NHbM4QfLogjDcAgKd8xFTxccyd0H1MxdoZ5n0vVTAhgBgWFmLdMqHP/w6WIH7YnSC+qD/gQb4PHloyyEIUqP/8roDucXwBi/8xeEhWEKxFbf1w5LeT/P7ISCOWpIEflxrFg+oC7IAks1cUbRSPaJsYm4P0ibg== 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=dMmYLz8l/eO2FGC2UmeZyusCU8ES/4cLmVXJTLebmrbv7wJ18OOtpAaPM6uh1WJJc6epg2K0tKHB7VGRkqVdsOUw4+IrN40NQrOHgyF1mCuUnq1Y1T+T115A2dlLWFyR020sEQdRTq9B7aVar06QQfyAGdLJt8GM2XfaKAAPy8EEMgm6RF2jIrKg7jKr9VD3war1TwQ6WmT2l2F65Yc6vra8rZKctVC+AlT/6uAl3NCRdOQDSfzzoaxRTzK/XVurvqL0hPP3jFSYIPQ0jXSWIbeChLGfruQcndeVOepbaLic+lpWct0PCgSal7zWEzNcnfdTWZlbyUbYcO5b8o4lcg== 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=ULJgQN04Wwb/1bTO6hRovuZ68dPBxdV1FumGhgrbXtyuw1K4NA4MJHNd7MaG5FpCr1JLvQgyv0IdAFGdQ/bV/i453+S+MogYtTb7TGnZ3jK4tzYtgxFWQaH3o4e+pcz1NJQEGQ5LfzVyS6bAoMaF0jGaE2bXGUpQ/1rxPSfFDP8= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44: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; Thu, 26 Oct 2023 06:44:05 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 11/25] net/nfp: extract the MAC address data field Date: Thu, 26 Oct 2023 14:43:10 +0800 Message-Id: <20231026064324.177531-12-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 9effcd33-b422-438b-bb77-08dbd5eef269 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +jx2WqXzcpJuZRnggBT+/aQgxGsXYPLFPnLhs5TVGC5bXCcsZQrYAe08YuftlxQYyDvz9uH1fmjQW4mtB7hRzymbr1GXOa8r5p3qJb3gs3s/ZQOBJr2tslIdsGkQGkM0bOKR/Y7s6j4j8jz/x/tyKKkq/uBkHvmqJdaDrEAYvP/k9YqAXPjW5eXkWmDHhz25nXu8u0Qjmaw0ijUdP9XQw4UhL/t9Fz5/F9W7/HueQmsrLKTwgRgS7UxXn7wQWgbs/wGd0KiyCl3mwjHqp6aU+rCx98gQez2bDTrkDYToiN/elBN3XCWAHNtU27+3qghF4+VNwanfRPbfc+4yB/qcWQ8sejPh7fNJEN9O14lRkyLERBIBycezAL/qwu2uU3zI3l5neM5FEt55BuesEulPrzthlPJoNyOFahZxfI7zZXUgmHW8K1d8vhPYleCQn2WZ7AI7AXWyt1dRQZN0Oaj0XGfhFreDZNdZ1IjBsHOfaoXk9R/TQsqTf5hsyZe0E9gj5hv6ZYYwjtJ1+f9KFPS7mxQjhtu480NGhiIttbhCYvB0CpvcuNmauzsl6oSd7kowaxXcS33hd5A9lQayKm/SCYi+dopmZmOshgsFx6maV5NrxFNO6m7kk+FAZkMjLwBhi6bGNtbrwlvZD5pCtBSP5WEJOuDoY8MDCUYMSXFN9/A= 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)(346002)(39830400003)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SNC4WxiMYLThqwk0n+Eq254nzHseX8WRnBuXrK0EXJJ3d8d3iAkSN3tiw8mIQwVGXd4aDI5Iaiwt00jvzWJaTUXivPRsjHY3wlxyETgDthWd8dE+2cjy6e4ENEdiWjHdb6DCxv9Kv4vH/5nftg2R5by6K/2T+lrQ5JjPaPvOx3n0py+huFTg4ESv4bl29bNklxPF0h8bEEthjQ0pdyw0zXux+WoKyp5ZFOYq3gXmdTVnqmfO2475BtiLNEdSFnFO5ADIB6+Q5gufZkISc5e4/zdYkKz9XYId/8D5sOv39jw9t7SCU8PMDeU/kfT81qPMUJULsnpAMMDTbMLTT1+TTN0a3X8VovhSzixMuNGmxjH4RZfbQi9XcbF04PS8NfGAGIi52MVGVzByITa/ubnC9aUpF3w7AEHGpM54kgJt+6JXNI5IQxK0wNStgXyySk8knF9nWRvujTwvF7dKpSblFI4nwNV88dZJNPs0Rx5/dze80clai57i4o4+foTDwboHukGHyRh3rOQXHbeHvSwXVBrkOR18hXfb4v7uPsrCiq/RZX5MyZ8K7hMWJVf/zK1Ix1zgOzFYLyOqnX/F1V3VWV/Uo9FP4xAewXX6OzCCl4DzRnzbfl0h39N/F59hH87+7MxlwqjcLV4bMdDhtNhwMBu7lS+gi3xjlAxwSNIVrWAIxh2hlbx+EcEPVqZPRK4zzT0kksmkORUlMxabPO4BU4mVQM2WwyhMiqGQfij4HtEK83+mWM7SXoV/Nu/vIAZJmM1kPsxII944De2tgQI83dm7Hz+0C/gEA/ai3gvC4aminM+PP7ACZ6bs5KWJX/0OKsrLmL7a8E7pNMlbhkk+bp1GCSgzHJqqmPRdUzlJrX4rB6ScRUpjUUXpc0e+EGx+jK0yq2f2Xdhj0gwVpj7omRoX+zKazUBHPG/zfZIDkKb60MXU1nGScBnB8Hyr84m8la1/FGL4vG3lmJWgyOWRJ01BhbbjjI6q6+nmcW/rXzQNmJNqkJbBbgNo6kL8rw4VTmjcqdd4pW+zeD7Zi0IKO0LYS+8YN36Y4w+jkDDByze80eeapMmE16e7YQ6E0VBs0NVfpy9HkTiYTcksE3ZDHm+cW5e7v4aiK4w/pXkUpp2kprLKOWT2oOeqRpmrk/nMvfWsk+h2UZ4F/Cd1AaLXFYH1lEYWkdCMKaZ91bQtiDpifA5H3THJAXS0AaM5UYZW2uxmw66gYdhU2j/WNhAA0F+FPwiQZmdiAhSga4Y63wsvdlffLUg7CSbo3ivJRScwtz7sXuv8q5pS6eqLTN8ZyGdp9+YkGuMutbq1ISbu7V9YHxNJB1QyM1yJSLgHdgVSPY60Pe9zOQZ2Ts2Sohoj2Kz9gxhgkW6/cEZkNbobL4iLPf99bHJ4dgtpAOs2p3FuYqak8ODZ98qHjC0fBb3HTutDKSp5wWk7FWPwhfwCw6HsMpSF2YOXHYDWWxJKSIX58YG/gRFmdqjdAuhsYYimM7OscPYl5InhcDb42rh6yzghXasmk0WiLkd4kGFuSP3ODApF/GXz8IT/Ry/ZrsHNS1+9S8vP3KIsL0cFbxbDJQUuS/7NDsKmfNbKx2rJ/5bpB5OMEHG8aSRVxfqpHMbqjA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9effcd33-b422-438b-bb77-08dbd5eef269 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:05.2065 (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: oQCM03Opl3Jx32dZHiw/Nd8PHpkcRLVZidwvoqA8EtBcBaCcEAO0WEDE/Gq15skGomc0TJM1ktex/g2bT1ssB/QOVprc4run14HV+CnlqAE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133352 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 552C743204; Thu, 26 Oct 2023 08:45:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CD13842E0E; Thu, 26 Oct 2023 08:44:17 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2097.outbound.protection.outlook.com [40.107.244.97]) by mails.dpdk.org (Postfix) with ESMTP id 231CC42DE1 for ; Thu, 26 Oct 2023 08:44:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KHUwmHZCBevPQX8av+dbzkKJ1q6N5RS/jWqkizeYkiyeRbExqwJN5yr7qgxQ+XCQpAkOYjIHGD8jqObi+GNymPTY5zA23Hmvp68ZLLB2JH8Yb585t0u/HUrh++0fY+tq/xPJztTO7RCOiLLz9VMvjwQi1T7a8VUiaKX9vYcNlKGK7TrAkMMbaw2XxoHV2qOKMJmg87lA8yXu8U/AjnTfi/Ig5qAegbtNPRjdbWio0XVLavGF/XOSDn0iJz9u0UIUx0uCYxQYFc3Mw5FA0AIj9NmVn6UAj9eUR6NkFqa44IOX2sLUYqx0Ii3K7lKTfPpQmsbWCTAeh0P7WYW28L9Bmg== 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=mh8nd3LCwqBJID9Lp4XEt6w7Nv1XOZpAHa7C6Nth671Blg1LAzWUrELl7yF6qv3gmgTr9rDh6DIk/eAu2H0rd8eaV8KWNuHyENJRJswiv7k5FRtFHlfAOOqSxSxUMlVgt/a+qeFAS+9QpCEuzXm2s+rEeVyMbksy7fS/iVlcwG+DZzp+nlDo/PkfqBJjcByahAzuRksGug3g83Dmiu0PZnvoWZLD5Pmmv1P6p5Ku3r0G7BHEfaOjySYkDmAgYaoaVWcRpn1oQRB+AP3PdAUx6dsdsNMbYU4zLnMBMUhEW0BfHjnWH7YIXzbMfmPVQZIJg6PtIn6KGT7m1gUW+i8tNA== 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=oGxcJeB7FpNkqU7Q9rLZiEJtKKaS/5V8DmmsqbNNr3gb8uBBJDaLg1w0miiwzXsIznwG4tdJyYihAuNFe1a7jffFpWHkMGpAf0cnvF8QjNebPQxKhNLhohObn+0wOY+/WLK0TFoV4C/vdQS9Y3o+HqM9UarcGo7pckAx59F5xxg= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44:07 +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; Thu, 26 Oct 2023 06:44:07 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 12/25] net/nfp: rename parameter in related logic Date: Thu, 26 Oct 2023 14:43:11 +0800 Message-Id: <20231026064324.177531-13-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: ceee9474-cee3-48d1-6507-08dbd5eef391 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6OfxxpGpcB7k1fbyaRkKh7Amy8jOVxGChPwhgGOFqufU2wGzutTdCk8x3NmOdSiIIKl3zO1C/hsQkmy+B5FQopOlrSYFa9xX2itcbD5sGX26CAKhEdiGWIFlhxu0MmYESPiWw/0x+WmAvn2Iy0OFCk/cuAzD0l39O4Wycj4A6CS0+u/RIit95qVsWwLeYqwd7WHA9bFz41NGU0nq1JdHOXM7/73hfGsQb9Ih6rYYhWLWP/Jhwjx4irRClURaNni89e01u8PM/bsbe71siIBeBkXYCCYGy48Msxsc8piarQO0IjPkiD8718TDkIJ+90fncvkV+qnk17plKpmCBXG23q25mFdAOFOmY0Yf0rQDWSmeHC0CnMO3I0U1yofA1+iMoH7usjaEYcFj9ws7JMC6OzAtZWloMz9qRfcLg5I3pC4eHIeEKGfGtrVdGMRr4ODeoZIf3IU7LFq8IPV0INBXMjyCoSN4QzEzDpQXc+5MRtxWFkZR8trdi9mhHzvuSy/FySXuv+MELfAgbQjTc+7rKUZUVQzslr1zdP5z6qbLhBndF3BO620Qfmy5y01vNU8aMO+q/zAPOI+YVZWw02kkbc4w4lcT6OcuQ42MIzpHcYQfjynoqZndQRVseUdjqgeWWFTr9nVbDpJ9r1O+wiBGHJTIn8rI3W0eRcPSsxXHH2I= 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)(346002)(136003)(366004)(376002)(39840400004)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(30864003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: k1SpNK+bAjMEpCqVfClmF120fD3gAOWj6YWVSF/HLApy5TYwtYsKw4vn5MWPj45hDnAr+iXQKlJEqMw+l8xGgAOK3WpCtRQK9R7fpKDCBzUwJS0GMtVqGZovx/xpBAZgBcLisWS5D1yIVL6/At7zuRW81rbb6FbBVRGsHfEr8qrhZU5bpG04Xr1A2tqvKCLckmdvJA0PvNIH2Z+K8lcrBIhb+oacDkjI0f5pTgW7RNAMREQzKrXdiL/MNDd2OdqdBf63HtJAs44gWqAXvpUojsTnRgLVf1OhkuyKoJceuxOBOEm2Fiae/IMc5qxgz6oOCzbRMvYkPgbKU1vlrQnbR64WQa2diWJEDaCTHcc1Y22KCt+pWwhjzyZn2f9OAvM6wetd9vm2vSBQh6veoz8rv1yVpwtzm0zUga+xtaWD79srreITQc7mirfxYcaGao78ZxBETa8la1G2kakljK28t7zPCFQ9EkfQ/jmig3EHxY+gIDKo14HfpRlox9+yNOH2SgxduC5H1a4qRXt7Xj5CdhVCOIU0x045RpuO5XMU2jQYJGx4koOafXXFVRKSfzK8aixsOCl2DzsJK+PUd7ppZF4ceQnPcpothdqY03WoubXs/+DhY5vEcUb32Cu1hXpY3Ke7aV+NPGHTw29nfGG3XZ4cVQXzhzFsFEYHCkpZZB7MKosTIYqtXWz9DJCRLJ+NqnvfOzVf6AbdJ/ifVieCBC+2luNeU0r2OFLA5VJhrCTsF0DDk6wYBRbagt4STRsZRe/yfMy5o2G8bVtGp1HAukL+WbjB6vOHLauHL33m/ED8qZbfw0jca8qZkQARBvMqw8hHsEE2mU4aqVO6QBXMQ0ZSMDDKkJtev2pV/jKWTdAfkLBSyZS3yt26wddEla/yPSAuigDYMPCp2tDzNXRid21H1WPOkqrkmb1b+ReYi2JILFWFBs3RNfXpJOcTdWb3hGMhLAn19WDoLDY2Dw3RBiY3F07+WqztmgAUNTetcoGPyBSVChDm9NU8MWasW8Bq9Gn8FJrqrBGy6oEKjpIgB5tRDObT6usdjlvrI4Aoovt4z58cwzWaWvCo29vBfL7/syyT5jWKbM4zRlohkCGsrEUMELbCMihBatgzgVuTT7yTm8UTEIKq0F7w+Lt04OtKB7rO5C4slk2Xj8PgnCxKBur/d54/ei1JdXEtLqSwS+V5F7qbaD1WFYzKZDpFXLIcb0XnnQkc7odEamNtiltcesfbcabrBl6gar4kxis6YkPVqVIiK5WS0k+DYJtxIiGGZPQVtmGqGgb04WnvUruWaV1GfgomWEXSv6C2NsTvtWiAAJ+fbcwAJ5pZW+FMOqTOgydMQLTBYL/vFuLx6Sy9dhJ9nm91bCKcDTmXIS1wbDA1g4ux29rI5cVzE6kfGUdCesyt/Pt4JVoYQl9Nmqk+WVMc/YZrZOFuPIG5kR3lnLFD5R20x7z/2m6bHdmzvt3dJR8vyn5m2aEuN9G75Da2TpWPO2n2JYZrB03sAlYtpOLmKzvpt2ke14g5zbteghLStmEZWbMYCaF/SG2MJjHu319k8Nm3RKwAqJkkSsz1kgITpaj1XQfyE2WZyyszL5grvgnIyxRIQb9A+MF3jjG8Sw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ceee9474-cee3-48d1-6507-08dbd5eef391 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:07.1380 (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: Sx41dB8jl7ITf5u+kmGV957K7WLx3BctFRd1PI6SoJIKit8FApWk2WTBFfOGecyGTxTPiAe85+2Pq8MG5W/liPARcMnlVv+3PDEktmgP4qk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133354 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 DD91D43204; Thu, 26 Oct 2023 08:46:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3F48842DF0; Thu, 26 Oct 2023 08:44:20 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2104.outbound.protection.outlook.com [40.107.244.104]) by mails.dpdk.org (Postfix) with ESMTP id 8EBBA42E04 for ; Thu, 26 Oct 2023 08:44:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MPWN39dd/apdzV3mDJTGfqTg4A1nvbemYNe6rjpG8o5bjze4tthf+V/LxAFRtw1b9vkDlO/nGfYsU9X1pZ9UM9fGAlp9escIgqPCiY9ML1oM1/iA8gU4ioeyefzKYgwCV3NJTpLwtJArx5jSoCImvk8Ciq/qhfaODxnQw6AuKxj2BezZQT+ElJdVIFHCdgZKoYII5nH2emgHulI7TqlI0RU9CCF8d7C7I2qvrk+ua9UCFIEHx7pDPUlz+SIEWR5BQNZXlT7AjSEDns443VDeE/ySn3dov43GBeES0IXllXWcazzH10D6X6QIM83gVC7+eLJQldejcbuwQ+yyQNkYjA== 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=OMTUOLB1dzhnbGSgcNMEpE6KBNk4gPABUZOi1/cJ1PG/j0w0bLIn8eTEeyyl8zOacFFFWrcYktQw04cpQzc568J5j1ISjvUxbGU1wL8VxzdFegPyw6jaBQS2fwhyZtqkB25mi8jk+3HVhA2UqzyCLQrq2rDb3nW8t6Gq0ouFU1ZjgAzx1L0RoDiLiR69EmShE9yhfW8RlP6vEPMxByYa5uvTnaQkxhJ4+eg2wwIzR8c7ki9Hxy5xAKK5L04+FhyCJG7yxWcPZ/fyxL1g4YTcfuF51Jt76ufyGMin81n8ohl+kBlOBkeAUCsV895MLi2xT1LOIiOuwB4b2Qs9wweZWQ== 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=p+HWYex5iPAI2v4YKhE451NlTvvCHyFcTkGSg0b1l7f1VHPzJ1NgVl8oVh8EJg9GN7Ym+//QRoFxDL/pxv2dnKjkZzWlGFaoG8y8f8V/UoE7L8qDuJDbF0IZKYGJ68ninWqJBcv6d19KN6OX0KYFh1qc7+rydynK+0xUeQW5aSY= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44: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; Thu, 26 Oct 2023 06:44:09 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 13/25] drivers: add the common ctrl module Date: Thu, 26 Oct 2023 14:43:12 +0800 Message-Id: <20231026064324.177531-14-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: fbd957b8-d65b-406b-de46-08dbd5eef4b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: biQ3esdajcAi9IE6b6Hh1Ao3ZWNtWJkDBlbGjvN5R3kjcSyzNPSgwEuCDfTx0GHfEiRPninnI8GnhVX6j9ckokRQprNA+rTt9dACfhd1vveuMTH4E+wHxgrei2uZvCBpd3hQb6qdjvpCNDYEP0lI0EHl/mDj12YpkHTaB+T/wBiqYfcdwZUIEfM/V57twUE6qvLtzqNZAU1H8h9QDbByXW4KIF9CZOfPwfTzYEh2lc5sp6TzMVa0ctDeXfUmrI0Scf07ef/HavNbBh6UYOK8Ej24KCng/BpBJVWJW1Zc/is7hwHXcWMOhcCQgt4AOrvRoO4OO1nNg1gwEprFV4OnpX01ID5xtmfjXeMLKGSBjSAy/6il9tJwnI+k7m4dOzW3k//qZioCl7qu6+/31LwrYfwiMsLkCK+gb/wrBGyfI86QRFtaRrqbC6HsoErV8VpFDAPIPD+t5oRlDHyaJPnnTPSbLrEQ0tZSnRjtyv3AHsnvTkIPKFE9BvFRzO+tyudDR2FZvRXxj8suGKPgvgvDGinPfL6DnJE9nLLGzavBuxX/nTfARq830eYEhN5tDsiRIz49XrE5bK3SVVNRJsVvfvp3EhB22BQY3qLz+NY9zp9Ztzu+wGXe8V/kKNKOgIYQGWNaWTUgqvHv3gK2FOU+zHQWujJFaQzWvC/gn3jdV2M= 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)(346002)(136003)(366004)(376002)(39840400004)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(30864003)(41300700001)(26005)(1076003)(6486002)(5660300002)(6666004)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FX5MV20twcUsN8ykOsO4ahAdRlFzJi6WW67uZzYwD5TSxmcSRY7GzrjBCVNBo5Bx/I4EW8NTB7xO2acy6qkMGlFYt8jZNnXyYj64FqlVGejoNksaDlJlosXduJXkeb+2jx8cf9tB2cq6U22D91ZQgl9oYfOdC2FnlITs8ac4ZZfWNQFyRfqwWh4IbcBAip+jCZS0AMksClZodJkdwzXJpDJ2KgnXYSXPp/0emoxYD4uTUUsdDADR0KKPuv86PqwlAa1K3HahGUsQhUbwUwRDm11plZRCW3nZfapT/8GHitCIkZuydjyejnnCGm2/eycLIxDPEBFXaSOmMl1rMJT+0hweqt+2j1yD/Q6Lr6/tvKBXAh4twI42uy3bdHj2fUx2c5+blg1J8JLbXdkET8G2L7jlBgJiaRTg4Q5Lr9tQtKW4Vrj4wt3tXAHQxK0jRjqM0DaEETQ2iIhCQGIJlfzxtBt/q0xxlF1dq5GUFp+WHZ05H89DBypyrH/IaFSJV+16rugvOrLGWAja4k3Z7x/9YwWlW5FbqjszoeiMnve1zz7ITaBX7MuvNv2kzhLa1NLq8b/1uxuwdmV/M1HTH1HRBq/ApHZAIDxT/0gEogwVjNyAYI5LP057OGEqAftBr4++mkBqpCq7n3nrLJmeqFaykETUFvLHpKfGI/qK7CRtK91XaU61ZLX6LzIPDQYhTBsz3qbjBcA9VIVevWH2r/sBqRmU+rUEueTgy+LHEpz13LglQJQob8uyfDDSzoWQgCsIsX2L2YV3VJYm44dOfOm0uMf2FlnuZf9MditjdkUKZc10OJnLF6o5Q5xxuwnRMAU69aaZKdEPmeH8HDPN93U+aD8hYGmf35TlXvOg8AVdAZ9BMRdJQaGSFWhqDCtQDANEXtrn5NUpJvQRT1YBbcEW1pCot0zMYxkQnEok2NVmvtgK05dKV9Cd14hPaFR6Xvq97VpU9cjOM01fgFVKJSqSBn4+EA4CBZQdD0UOAsdMSOCpzTkpDXK537JYMB0Mpx0s52SdqEeGBFb+gud0gQZYZwZqpTA57kq+fWJgFraWSp7JUsrnR05n/gRt2x+yFsT//d5twYrcR26n5fNWuM2svOZUAmkb0QhWokmo1NR5np0cN8aV/u6jBqCl6om6bEHhqk0/CbYiXjQJJ6+rTSYxn830B8RLa+WdgSL17lVukWbGYBAQltf6JmXAiAxJKk/LgSzbkFTnlAjA3yI9LQYiClllUi9eHMVtFF25LDcEoGHHGGhI6yhapXu7P8n/+adV4ByQ7xn8QhoHNyieFDOS0bySkfSBENJyIVxsiBIAUHpsbFKHCDEqQv+/bkX1rzJi+n9sgxW7G4xRsd8DUTxEI8rRb2D9MH8aERoE+kKDMxFwK/Yodfen+wR6goaqg9PMFunGtNc1gvmL5RqYyJHaRXH264AEi0vS2F3GOXFT+U6S74856cqn451kxSbDH1SKlntsbI8Rne6kELbv+y2gVv+cw8NMIsDGGsEOiPL5A/qX/lYrMJwhLNiq/xVV/4yQwBuE5eOPYuojngJ9Y0Y0yDGfqja8EqFBXcHNHAdw7y3QCbwHoOW2EBnE9sMdMTRVoM1M6pbhqhvyuV7fSbWS4A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbd957b8-d65b-406b-de46-08dbd5eef4b1 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:09.0522 (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: sBp84HToYuop6pbh1c4TY/GxV2UBScsO0gf3+bVt21B6LykXNKCxieyYNn8POiVLEL4ROXKRABxWubjL+h53dyK4mNpUZnCckDoflTCit6w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133353 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 3C8ED43204; Thu, 26 Oct 2023 08:46:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0B7A342E14; Thu, 26 Oct 2023 08:44:19 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2104.outbound.protection.outlook.com [40.107.244.104]) by mails.dpdk.org (Postfix) with ESMTP id 0FA1442DEF for ; Thu, 26 Oct 2023 08:44:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E+TE1z42FdJAu9fYZhJBt85WQU94qd8X4WpuVSiq5cygqSc8j7krRVeoHGzYK9emN7AICw0qfsQ8ZXB7t0u60hEjiqpfLbc+udbuDBhBaYFYQVcNh0G9lGHBi9vkn99qpr9391Siw2PGunAXZJANkaNgvzG07l/SVoC5yNHJ845FOcIdMLsSMtKk+/jKxTjRAZegrQNDZMSPa/2CDePiECtN0swpNUqDyC+qQQ5BnXtPF4a6OwsUhG9wLnZ3mW9J1Be/fSAU+GqxIEwuVL87snjvdXvJSNHMjNOv9QMovuvdsW+pTLd+tabGbAmeZCUVwy6+4Ga94x7OQVl3ZiNtqQ== 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=Jhv+NJpdyiRbvIpBS6yJjhOJX0O69ecO3I01RCA2VgV7P9sEGwOSLHrhWiVW3cZ7TY3aBq4tdbbHlfWes0qu6E76lRomwf0a3LBrytUPmN6/C0+mt6ebkpyzPwpTPeJrIzL5yw6Wb+fjgT4djYRfUgl6aWNbpqAkWtGN4UI2lPVEfvjuUVmSnTukryVU3CxOYTIDNetzOB+lU64R5+xTT7drSM72d1uhELVcwmqse6xdoPEi+5Rk5Kl0hbEqqPWjemV1mDGqra7v9Vzxz1SMKSMGPN/UBpjXLfUgu0hQSi4EFxscO0PPDwmT9UYrLoYkXszwJ5j+kphzlNVzrSEzKg== 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=MEA1p5vbIVO6B2FwBKSR4ezNWl7iHXLe0s0xyXgbgpirakXL5/0RL6Of/jdC5EskPChT6ri2G9U9DVjxXvMNfXBQh/4C9QZBEn9dNti1RbyuI8o+VQ94rAgugvBaWyyQKNzK2Yc2gH11Ao6PyQeN1f0wHJ5fVacBV8rLcNaVRZI= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44: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; Thu, 26 Oct 2023 06:44:10 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 14/25] drivers: add the nfp common module Date: Thu, 26 Oct 2023 14:43:13 +0800 Message-Id: <20231026064324.177531-15-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 5b49d5da-15a9-4015-5991-08dbd5eef5d2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cjJHbUfH5fXh9LGf0RvxWmR1424xG1VQI8H5oJsqtgCzgrQk8sP6l57YcrvRtnl1uyuhuD4SfvxpdtWTbLq6/lwm5naz8wXBzfNAxoVJWLbZeRErQRlvqgSJKi1XySG7YWuyeQJ66Hips10iCaoFquWaqkECs/b9++bCqKWy6JWSSXGzX58PudyGrujQafm1qoq1gh+ic40aOE39FGaPrQow+XzeoSQtk8UZgpGeic1EE0DbVT+LbWyTcj0HTcYwnLSHJgJkTo2AEopvwsst0SmJwXovBKVs8yu3BYfi0B07/RIuN20ZxHp+qRsMIXDn3Qgkze8GME5dS6DyKtNbzXIsXozTzBzr7/efud7IXOOJm6KshJY4zikpq5juJ6Som2SYhDUKDT0FQ7TIloNC5w47/5TKKJ0gkmMle0lt015x17GEST1vl+IItdf2rIXjYtanFTasf8ecFjsv7FpBYNb0biVrZgR47NqNuW8JI5TQBBFXMkFrTIM9wvf1Go+afzsTH4J2OecR93z0a/E1x/4hpyG9LEKdh5WhEt7WqminO0qqmx/0nb0qr5vXM7WKraYJzD2D/zwgiyYryJHtazqbqie5Rmwkcvcspt/DTsVlSFk956WxKHIF4nCPNTFwWkyiavXtLrpxPW0yb4IjGZvroh5epCsKVeSiezATNEI= 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)(346002)(136003)(366004)(376002)(39840400004)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(30864003)(41300700001)(26005)(1076003)(6486002)(5660300002)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hOdhKGQq7bbGBvUBLOrypHuTQL+Iro4uB79buRnjRZMUki3HPv59ibZWMYzDO5QCv40945ycZSWlXvxbLn7uIPGt1B8PVB+kT+hFnkjm6wt3uXLftKc2OdKCiIG5IAuCV8iVb/Hog0a6kr6LCk1/Mpt9tEBxnjQfNlC6q4CGKqe85WVBxizRPT1ClcLMIO4URsyVt41kAp0IKgfV8i0U1BGy71vQMA6UiqCI8YTgmEt53YYAwDuKyP6gOTx/9Tjhp6cllC1Sl1LQ0NwajWme7GGVQOhld/KcmkIqb/iJHXq3pe3P0gJCo6M9tSfb1M4s11K5RFAjxelQKrSnA449LIrbzHmNHHs9poqPS+xA78Njz52JAcfLsYivPzV2Jg3kRImxopu//dt+w9o0C7rpc9ivdcJ3jjtfOBdM+Nj0ImAnqSnCGl9tu6ARzmmYI7a3Jlp5kWGKFZHPfk0aYLWfvkX68feJcbunR2HLpBQZFrbv8R9BFY/yUeWaWcYiDpAIwqdm8MZ968etVOvAyPeUYXQlbBUk42QQszRRso7bRl6CU5QLHBfTrK848TBQ3yLARDtcM5BXpfJdt3Zjmsn1gZFcZGrcnwxrKo1HbBu0fEYl1C5csUmlydL82HL5Od47teV0MGdipZ0bQzc4WQcOKMeewB0dR8DW75mGQYyxRLLCaX5VT6OFHw5wVbRuAW3YuWC48FGL21a+2o0LfHg5s8YUGM/eLsDkCho/sUj+VGdP3HMsWhY7G5Wl6CEE2P0bGIolOj01lm8HofUm79WEVw6ZiQLhMvHKYmVkZmLykBLVlWfsaCEKVD2Rp6jGN5MsY7Zy5RA7jFP9yOZNoOd2WwwMtKQU6e/viX57yhkkUBM5gzGYzHKDebUffriFp2a3CXx/91O+0DZfQqiJ9p0/A3YlSmoM7aGuQnCHaKAh9b1deOoA+rz+8D/rDtMORQW1xSV3nTpl+nw+Xbb5FnYa127kHGmemNsSQHrkVA9pXHWy5yS+KeFkkQ18WEIPiWyLixrylCZe6E8xFwyO4VRtiAj2tQPt+EWUCtnCf8VTXueggfEUaXITxf35dd9IiMwMxkvPG+/N7/F5Kp8dkSN5yQ7WEu9Dh8jG+mfgHxCja02GW/7A/wrRsYuKhUCUkzpkCs522Uxn3wZHBl2e8Dm9Ue07465pwzYadLzDB8YHeibaPBA0S+zN00XTSmH8Z3MXeK0NKuExVmX2FisAi+zkIW/e6kJWsRvG4wzsecDSUMi75JyXAtBmzBv3Qz1Et4iIpNSa74E5+T8+k9Gu4lq/7Sg3AjTfWeRVd3VYgBMPb3+R3wW6B/rkgv8weqqt6bC8x/YxhZZJIyya73KoqXTGjGSt8sg2AO79b8yyzrttxRbJan19tgmpKsxqM8U0HKUrmDrtul+eoeILBYD5rTnBUtLrskpqfxv1UOSuD/pU92DaYg9xfiIvQ1Yom0vyxEruXHNu3ZQbI2FpDl/817+aYAj77arldUHCQGGcwSYHMBMcj8N5Srr4m1pz6jOH3Qg4svADh3j0BemW8Xb60KoFD9WYw9z83rUUz0FOZ182TUy29mMKd/SbLexZ0qLtiQ5NRDjnBtD3niM6w0a2y6KQIw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5b49d5da-15a9-4015-5991-08dbd5eef5d2 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:10.9069 (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: +2TaHYGwu2a1z8jwHaN+rFeM9VFBimsyll9/HGpQPFt1WiPHGmTtHPucs4nbv2fV/1lCjiGY3xCL15UQsePosmtDRAZ0t//C/h/nqDybrpg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133355 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 5CF2243204; Thu, 26 Oct 2023 08:46:24 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4FFC442E1F; Thu, 26 Oct 2023 08:44:21 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2104.outbound.protection.outlook.com [40.107.244.104]) by mails.dpdk.org (Postfix) with ESMTP id 15C9342E07 for ; Thu, 26 Oct 2023 08:44:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RO+iiMCjruUzl+3H6lwaWVPyS00VPX4VR5vqhv6QQ979twpNDDPm/7knMGpmvbjE6rx/fRbFQWwkcPRTPGl03zx8eaQYEoUXsDHcZt1/j1RXotee1K9JtAHY5gFGIshMLnDok5kvScG1eddT+/++sRAK9DqPQch2VKY6m5c5nIsU9vBjYN0BAEQ2uD/m/MIlZeSKOoDF8UblrbyKiJy9RCG1bSY/sm23+r5P6SsqwyFpAEeE4lBYtIdc1OpOHwy4L1tgCg45ksDQfBXVYrrJTi1Nmc6YGTjE7xMWWQTT2vngi9eIg2aR476WbAIpvtxRN6i99dINN++ioWuVmJ1YqQ== 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=SWOSzSFLH/s4LAo2K3wShbgH5mC7A5+tiX6L4+9OaqQbJF6tx1EsOjTeDjsAYvH9KhNoqp9dKUnqkYxkO0Xsxhc//SxgwdFY/RIT7GpLgVfmRa1v2GG5BQkk839qwBZEfYmKYnS863G1oqaDF8nFt/ofksl3eJplxTXzM6z0gt/FgHYdDVve8cXwD+09OVPCQmQkFJfvoJBXmuzXHYwqgk3ZEd/5tFgw4sHtBpZJD+6HMVnGqEhhv1p3N5TqGxq+/JzWckh/B1s5mVacNtBFUE8f8rDTvQSYAR/1U2+w1yRvwrRJcTIvhBeNeaK9ufaZXckKxbHaoH/4Lsh0MomXtA== 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=OxGkQTGIksbNCLtZLp36EL3nP5mRbq07krJg/QIZ59/Q/qDkY8nFetYamFxjzRDx4qkuUoO62S8nFSrc6fs2EkI3n+0Dnk5eesgyeVp7geUjLxwWHD4KSebeea0T6JHeqttavqVup1/OfbWtMfZqtzPuwUci1FmGNQCPyRPOhuY= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44: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; Thu, 26 Oct 2023 06:44:12 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 15/25] drivers: move queue logic to common module Date: Thu, 26 Oct 2023 14:43:14 +0800 Message-Id: <20231026064324.177531-16-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f5d4246-3054-47ed-7608-08dbd5eef6f0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BtVMtxncXIuE+AVigXsVctvldBXNlFJastQ1oaba1if2OS/rv0Q0zAieJ/0ftqTNu3OhtukrqkHpEGTInup7vEg7xonldogteORWKUnDz3CX9oomQ6QhSvOfgK7UUfdjceNDgWYd5TiAQwCyoOLeptEkqwmU4U7qpANIEBlajGEeCEJ5QqaEIC6ZEAladFlFqZZtcN/1HvEGO6m9sleqsuyabo2kuXhOWtdwLXxZh7qTVdUItInZ1ZUFVCBmSPYRnld8MgPR4u2Vcj7vWfHWdMZBmOsDnvsqIf5mYyn16+YlI5jR07njYT0SOrNP1abnMjSs8hxX4MLsRmp79eJVb/U+dVoDdCG6EACSe7OPXfbAEXHZX5UIin+fONu589Q+URuMMIrmgIytAwvh8Ebc9O5rHq2Sv6wAfxfu7i5jqmKP277yBLncFcwYkF6EtQO6lWrtsZ2JOH+ekvmzesYZrpkI3/u7Z7WfwS55ycnym6fcMS8jyw2BvQhB/70HjSm99oOZB/kyAn+yDyfGVBDQHK3t7um51IsQWpCSxMgfM4EllbAoW4WxJ8Gna3rO14PshZQ8PhCZGXipt9yCg8FOfG1y7VgnUhvT+gtEyf1YbZIodgC3TNrfW+n80AUL23HWvEaB+X6pHe91afu+RRw0acmVf47+EA3lNra7mOIxWxw= 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)(346002)(136003)(366004)(376002)(39840400004)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /OObcqhJi0hHi/YmJTgNmq+J6h7Pn+I+TqN7Iy30aqOBNh5TVP3JrRlU1ccRMk/5vXJOyfbJNS1AgRAF7hVFG9V+7GmvedntUF1KSrcEXx6gNaeXpZV/obVBuG5jf/OnAZCeY2gClhbK+DtC5d6B99aea/lp3BilRTmROM84vVL+9VimH1gKBpYYcNKcCrRdvxtVzd7q00b7ksGDA7ai7JYgDzaa0LUkGOicJE6obCcCXXkMpI6JvTNaySqwkrsF+xl+erM7vLMdXrcKBYopnFebRPutu2xJCqLI72xr9lbR3h17l0FFWmSlmMihsObMdGGJcsVCGtZgR/X2VxiqkSb0HJ1RfAzEeO9vINf+LeYM6N7EjBl6F+S5QfyWHm/Zr6kOZacYngICUBMagY+i5BFO7so3TtZ7at03G8LzxsZ08P9UX/7JEVVwpLbM9sKzG1Zgi2gKrk19DGTdH3O793xOzukKkXhKVY97wAYuG2KVf453SbWFXkTc8DQLHXgeJaaYwkdGzM2sGC33UsUGa2wCyLKlSoDZKfVKhp9hdd+JvNFHnI4rEyXtXQg9TEDlwCPD/DeT48UZGmQ7XwZdR7uYdWzwVPvh7ixkxXeQoZwvnTMNNBUcQ9KEAr4RR21hpje8n5y+OYlwnuvlxZF4PfuUYTl/79zQPt2qvuel1lVNhO2RcagzhChKOfY7z87ZE6GAeu/X20ZvufofFDkr+tHTv4pwmlNhuV6VFCaJXOXdAjczeES6KutyL0LEVn0erz8kT7iflXLSoDdGGQoqsCTNZxwdwwsIUZXNxWmpfooIovxGVjjDBCxYqnugGQ8IggBSZvW86PQDGb63PgSEIJF+hGieRBT4yu/iWP/0+bVkz0HGOoKvia7/KP0FbxT6YQr8AoUXXY6Jw1gvUTOXLm55JbvxPO5VVebMzRP54mwKmeXYE4qDClR8W28GG7Mb3lEw/5P+DmG7DZO3rBYqKTVsuxMUg97K5cMdHGjBmGhX3VUiwfITcHowWbcw+xY6rhn4qVVMRziAik0nR5qZc8qywvAmlKg9gty0GTI2sUa4/RKV6uubwOl33yJ0JRpyqIPxbywtzew2I/aDUs0yoI3Qdty+8H3Cpmt/B8WbbpIajru54+3IjdOKgz9wMVQmRK7O9SLEScCncfdhMNNGS5rKX01IADgq1FfnPdwX2QeSD1d6IdfQWhEWR/ZlMzgJ8+vuw2OXdpW7HYCu6cDz3CrVpW6m04TYi8MTo2467yWkC92hrfzZHCmqmTCZEg3bfCC+06QYvfYv6T1LozQTmygvDg570FYT9l3hX2RAuSXyd/g6uz31b6dldVceVfO+2aVw9Ik9E96T2m/DOC5tHRQBs0aWA/0CsO4i1XAgJ6VqVCIlpNEavJoudaOWGzT52AvVMuo2xRnhZ4ZwyRdW6gt8h3R8rvWmNJomMcQ/wxlccdPncqRAUfR9v2JuEda8HbH1LIDzBqsi7My+YY14f6qL5ujz5PMRK4+goFYKNXWX0rzRqasSNFkr70ufG36srQzxKcGviFKI77F7vJjeYMguQJCr5gtzwjZoUJgRTmTUO3ozNFbCZOfsfpNK6JohRU9Fk1tCd/caia2dhz29oA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8f5d4246-3054-47ed-7608-08dbd5eef6f0 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:12.7605 (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: TnEAi2IyEw0xiPjJ+xw7EBcAxQxMbt+lSX77cHxW9bB5mmz1VFqGrg7bSn0+ReVrnDvFbHKoSwboEO0St45CM7LAD3pt9hYN0XYqaGtldPw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133356 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 B680A43204; Thu, 26 Oct 2023 08:46:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 95DAC42E25; Thu, 26 Oct 2023 08:44:22 +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 2F19C42E03 for ; Thu, 26 Oct 2023 08:44:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=efJhXxzk3vexBkkv8Wyv6anO77fXotzwDopuG+yXlXFkA7SRzo7RjSXFBOn/oastxAJkOMOAkFPScxlZU3+NCe9TmKPm8oOpLiZjgcuxm+dxyApfpfNl55z59ZC5Uf9v7kxijYtTIXkPpE4M7B9815UqCR4NllRGMN+5PWFCEsUJIXO0REHtbRyjer6iBY2ZL+DnnCSPmTwxw16mc0bpDNXVeoxebBL3kYRZezuraxOzDD1bRG9E+L7QXl9xANQxi0FZW4I1kdCe/rQXNbMxJTJ/TRQBKZ/l73Ru1AuKkjvahJzWbCMXrMg9eHqO/+dyIuynBa0WrLbwcqvZiqWb+w== 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=N9LNWLKPCqAQBlqrnjdrEb5sHOA8SvMRrGl5slZs8kruDHmnUzs/nj8G0R2nrA/VQI3OacWe6C6K1AltnHKwqnC4NIz6aQunFl3tavqWQbiiRW3b38HsX9MfGo95ytCljiBnfRm+07qtPn2LmMFgJITA0FczCV/hw6HnjP4SlpLcVCgvHnI95thC3D/PYih3a0QZcOI5I2Z4fSzahLWTf5R09DTCF9Nu8Ixo71JfzHHDxbBT/6RAX1KBOLU4G7fxiFEyw9Lz++4rN5Mcjv8wheIFNg5tUjFdzQwstXLue1bkzsW5xa6GtNidCDBSLNT/IPAanOYUevNOGGQDUspMig== 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=nuDVPQD5ppHZr3TFpnEoi1EXNB/stcF1q5uPxo0LPfAsKJjQIrmIDFXC5nVfV1hG/fGYlf+KJ2nB11wtBuj4wrvTDfZO3UMoKphCzuueUIIM9XzGFjiVzRxlRPdSDyKSA3ofwRqXiwYJWfGaD1TgzkidU4vqyQkK5b5WzRn0UEo= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44:14 +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; Thu, 26 Oct 2023 06:44:14 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 16/25] drivers: move platform module to common library Date: Thu, 26 Oct 2023 14:43:15 +0800 Message-Id: <20231026064324.177531-17-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 99389b70-2637-4d3d-535a-08dbd5eef813 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: v/mCdk6tpPJv0v/yL1JHgLa1QufDmX9/Ujqb1wem7TmDWBXVoh4erqok6hlWwSGBoq6GEv8lt1cpbT9C/XCTxyPuNnllrKE1DlOMcHcMqihZdSTTi0Sf92esc7EW3G2IH05AodsSkyDdfle3M6jnsi6jpHoegeCHqIGftNaFdWVTu6eg9jN5ilyUWkOa7FM2oGwoATzs/VY4WMs6WR2ZD679FKoGiDhW37YPwr4N+yObQsMNPvixX12NYNI0q+IWm2C2JqhKv15ly8xm/NJdUYrZeDXQYUSoU4HhtuyyN7r5uq2QaAUtlv3lelmhWT25TUGD9JFLvPhh2HEjaOLebpeQimnA8BJ0nfESbGjIpnKjmY/3nyl69l4S8UuKdeDWuuhiNM1aWpkVoW7IJstyOhOYIz4DTMEnXNf+9vJprE/Y2eAhV++g3G5+LpB9oBbofoK5ssaBqk0VAcprFrclMdhhUKpMtoh1xeSmuxE62m9JHL+dAyxcOrQKeAD4Fvg/TzqQFJylVnr1YSBAc6psG+7NWWu+5FScvbCRw6seuhBZ5MFpRrfsjSUGaGHCK7bUmeu4ZodESCYRzt3ybAqPQMoaPTlhEWHgoCr+6Pl4n2ytJv8qaPnCy++adPZNoNLvJN0C4OkIX5WPOKxjYpS4oNiddFntTVGmlo2WcyWoDsw= 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)(346002)(136003)(366004)(376002)(39840400004)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jTFI0CdfkSNM2sOySyC31OA5ueEHkR7rC/YFvW/aHe18yS+EjHDDJ4bNlM/yYhBICxI6t3PujrHVU1aiewD8lyFRgc1dsBjhMjEB//J74cJUlfJPGx8EELuH1kXzAN2+r/5Dh2Rbd0ybnRy4/1Alf+haEEksvH0nMCZPMAKxUlEcqW4PV9dzUaTb+qvSqmYS9PZ90dbdwx/AoOPgAP2mkbQagL/scZYbLBERQTGSd2Fk5KS/lVVQQ0yS1H07jRCUHKb0z4EqYj3o62kIlpQGB/tO4uPEs9oFTtoOZ4bD/LiFYT4qn1oJSmCpBaaNcXhF+i5Dpyd7Q2DdqwOff4vxJWwbsAneHkfeDogyCsAmnvUUHaBFKmEnwGsTCeht1s8riGKdLPbYX5lKNcVuL+vZSYNMMAzwUKQyYpW51vwA57Kky86KsOAPf8GtT38V8NkeHJOCRmaa3gfGTpqhbCSTPh8fY5jXMjFsYct1PVYrJJTZxlo3uvHSPkmqgQ9eagn0ibumeRXEDWT7W29FTkU2W3mfRS3NtRuBMSvZKg1B7JkyfbTHYnBM7bKT9VfliMsYDHityAH9OHdbpRWWEtjCyCRPp9G9c7DiUdZ5CuoQvYT+/CeK2HWcEIFnSZwxLy5TNhongMG0au3/I1HYTXaGGO4CdezZuH8n25ksDn9W4hpgrZrBBxbtm50VieTPtz5BY99yaHF/SEW4Gboc3zGzJ/Yr6FJLyM/l9Sg+pcCyab7B6wMpSfu6AqCb5MDHInRXatr4Ji6hQPROjarXue/Jmf5VHOZs/dLA/Rrh2vIYknCpUPflK4IrW6R568NCHMp5OnO3KdskafHBP94xZmkMmks+Dmud+bT0yCgAX081hv86TUwLMRAdjAUsES97yFuTbsMh3M+Z2i6dYJpOfrxIlu0h8AmG0y/EHTuk9k/jN/PsUhWd/3Lb/PqLiLTP6VsF2wkpRPufwiYQ5Liy/joC9HwlDq5GTTqjAwJ8bBv/0+no/ZTAjMjBX51OLOAIW8DpI+/uWWd5eUrLJoPpvsNFPzOc6ECrE6Fo2aSvWmnvLR0fpDkQxqRucKNs7qreUiasuD/zjsEKLjbZD3uuyBFTrGsQsoCHaLb3x49rD0Logi2h0zbIIWsFOinYAxYAJ9BGsP775PHWnx4xb1vI9/B6iEKKlmvj0OsfZjn14O45HqEKNuK8ZSFNOiUCcDMYZ8RmBebFyVQ1wD3SAK7nO7jJiVPlcLGkIOAk+TeiJUEY8BiKB2mCSDNbR6fTvHIhqQNb/hn3Xz7hJrUFWNU3idBgfW/8zTHEa9IFIp57rZ4Rjw6H2DH+dqb1Zi5A5uQS+csSerUghJWDdj2O66gF4VkPnOXXwC3u+EcqLx1mjCGb69ZvGyU1L45kVMvwqv5HOHEZKmH/cO0pvdzBpBzWVaFZzAnyg7NC/DWF91FMmTF/H7JoDbO7e4kIm4rUALnCcTEinAPFmuZbpKRPjiZ5fZ03blrUjGEcQNDq69pQoYL3K2Rt4XFIWQ9jM7qNJkQtWWu/LGvAorxMyQP+3mEXp+UVWnpX8hMDozJTor2uT3VvKa1oDpoGulzcAZ4siIfuBo66r22pTOCrILp0PS/iGFO0Iw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 99389b70-2637-4d3d-535a-08dbd5eef813 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:14.7570 (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: 4KIFsL6VIrycNGir44AT4/prSf3aAs+C9qOyje18FsE9+lkzszxa/fY4zVgrpbEzLiwWtvrdDfQlSCAzvrmpBDMYBLtNRQCDMRRjdmM6lNc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133357 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 0643B43204; Thu, 26 Oct 2023 08:46:51 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CF10442E3D; Thu, 26 Oct 2023 08:44:28 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2129.outbound.protection.outlook.com [40.107.244.129]) by mails.dpdk.org (Postfix) with ESMTP id 121EA42E11 for ; Thu, 26 Oct 2023 08:44:18 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dlf7qjwZfjP0HrQ5DNkeIOJ8+STbITpqQcSsNwLAo3x+pZEac/HbtgBUY+bPhUCZ/hqKMz2CeN+0rtKpAvGYL3cJS8r+ZZFfrpg48wKTd8DYMenMWl2hqSaVsOhjaiQFPOevIHjz2Hl6HEYyZvrIO4U1sZBuHIKO8ykIDYUfw9U3x8E+mzVAxcakWCDHhrfJ6NH9fCbWydW2ek3kLfo7VOHlueUwuZkF4pc2tiudNuNe8/HW0ZegdgyR9A6zvTp9T3xg3BlhoO+xbkjb20D9kFyRjcaW3Ipxv901c4c8K59m1tVqet8D895QU/I4T7G3Y0Fwq0VLMpBlTRVQFEwh9A== 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=PAjefWpSeBqnG5aTcMsTiTwDmQxASOpesprok6klWIpNGWjNDawURDXwW+nEi1k/+msgDJGt5r6HL9PBMdf+JVKHFvN4c5isQUZLlmigTUIDpWptpST5pDPfAhx7Pbbd4rAK1TvxorX4oDuEzryCS2QVLhZJJ5dbZ1YWDFF+coZYqkwcDdrfMKlH/+vdW9f5XTOpF6uLHGJmoA9f2Q/bHjAclNKmf0XGpvC+lTxtXg0L2ovy4oNTWUSEKdwzkj69MNHO/lUNaH/s2g8Hp4O7qdauN5U4yOLqMALvc5zDY7IB0VzrSXEK6hyyuD733jl2EZrDudu+rjzMzE5qDsmQ+Q== 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=gSgEqhRaWj0LyAN8MEPn9OiyqQrYDUQAS3jdOG6a+bLcD8bG4h26gOxUuVa0wrpygv2N8xENWomITBpV9/F2mJlRLVrctNd4EVI9kzcSbVHDbJ27Gkz0P0btW3NFcbix3BkoOgi5xKgzCVII63TJIGDdZQ5uK83uOlgMlxRRsFA= 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 SJ0PR13MB5965.namprd13.prod.outlook.com (2603:10b6:a03:43d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Thu, 26 Oct 2023 06:44:16 +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; Thu, 26 Oct 2023 06:44:16 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 17/25] drivers: move device module to common library Date: Thu, 26 Oct 2023 14:43:16 +0800 Message-Id: <20231026064324.177531-18-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SJ0PR13MB5965:EE_ X-MS-Office365-Filtering-Correlation-Id: 1fb0a92c-104d-4cfc-1e9b-08dbd5eef942 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PS9xnLmRjWiaT6NbQiyDxv3LUdnrMWW9wRp+c3SE/8L5++d7N++myIx38Qe1b5S1nq+Fb1djEipPPJdW8wN+UX/npmI9QXxAhyO5NHyqUQjSDlG7VgrgBcenV2hQj7WvBluzulE9vyWf1Yy8by8oQIMhRX9cUVM2brWa+hagh8UMKcHAJsSBH1hJDUoEPbd7otKjT7EpQ0s9ccN5bcylU9ifIrXAcm3vy8oL/jOLQ2hYMJdSlqO9shQkKeyCWoepNhajB09LIATiOZWZeEm2TCRPDKWwKuQHBg1kLvltFS2hOKxzmEtAP/QzFql4XvjyVv3tJHoCNJ6Y7BuPnRmxFyS6zl/NGiufnrXN8SYmKcPIQ1FXrw/nQo7hlbCsbYtQ2GOj4yN7LFLZMQRjtcuNL6ve/2jJ5c1c5ceW97FgXey/Bs5E2PCUqqYJgkRb1h8uxK6sA0x10wUSoVJgOQS25dr4AtzbQ2e65nNELAYXHuhcE/O6qS+OUoj8CL4jatVlYqzi37VNXIgKRYLH55xjZrucq5u/MSd6ZNp3Ym4VSxv3le9DGDwJO6n6i9Ha5Kda5Wkb1Iq3pLuS77UZuR0b9cjX9rrRG8X3U904y2ybJgJHOcwm4UhW8TgRFcGHXflY9CVxP257QkUVDk0CkQKD9iZo4f884t+qYFYKglMU/Ec= 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)(346002)(136003)(366004)(376002)(39840400004)(396003)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(6512007)(478600001)(6506007)(52116002)(2616005)(8676002)(83380400001)(107886003)(41300700001)(26005)(1076003)(6486002)(5660300002)(44832011)(6916009)(316002)(66556008)(54906003)(66476007)(66946007)(2906002)(4326008)(8936002)(38350700005)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PE5kOYjsuuRWcvA+GlaCYVuyFAceZPeD0Aat+POsjrAW/1REC5z3yi5jXdfIUZ1xQxGkjYRSSEwkLQlHjQ9cyiEQKzDWCGu2jlOgAq+rOKrEQ67mZbIRCYwSmUhhl56fMw/FUkX2V/TxXCU6oT4fXMhEq/6NF6QCkp+/P/bbYSquvPOaraFwBtlR6MzhRhtDctTuy4PdrXNCO5P6Gp4mtH0ocvz/hptQElRhGwU5zNlJOH9zQF01f4rTbiUTRXzP1bC9Q3vWXKbfA+9wuU6OAgxBbievSqI4TcqstHVxNPNQYIEMjyLXetf7FOR9QQrOkkvTPUY/EdoHCWY8Cm3wVJ9GYyrLamdna7/qL6NnO6eNOqh39e/KgjM0qZ+xo7zDixNr0GGNnCMbpaqnq/HtP5laxAICk6EWsa17wxPMej3mL1824XAP71lJXQFNnKo/tMuzJWbcvXyBBkW7YNUEYL/Tzam0QAtSZzgbeqxG3eFI5bRKC5G+k43AQdD0x9g5PRLfUwbWX9MTKenRsUFyF+VE2rin3VcgVhNWnSt6Bvi9zW1XmgDC9v/p8WjmLxLpCKOSmC9CCUYSErLWPFEpaDo0bwHArT/t5oAAdb6yW2/xTHVC7rGB0/DcwUc4/5tVBjaydSSaWO6abzEc+rsYLAT0J3PVuFf0D9+lVSd3/14L1Mkly6249YqZmS9gk2es4ih6mMqOr49edO0/yOKEa+E3S0UV+wYBVVWkEshc4Ygy5aJW7SubltuWtMoDoDLCbh4QT5ZQaXMzzDQyXm494KyarxaM9QHwrDKOtVrO1/lpNZgkiAzsD2sAWuglmt/6kDbWXLAHqS/VEqPjlGzL5DmdSvC5QLUnaJBKvSkZqAc6S4pceEH3kq7+n/DX40ZmyjB8xNj37VqxIYf59cuqc8fZqvBsTHyRhrrw3e4Og6k5MOmiJYwsM11vc4SB+GRrOm3rFUna+DU+1CRTnYgbfXr+DRhD7v6MqYnV4ThrQvbKJqeLUwK0uR38YSkgAzdl40OkW5AtQVYVzMip4PHKoURByT8H+QJHs3xlVSFFucLnpL4QkdcCFuV/UMamiRJDJ2gdacDBTA1Eqj6+0pgzrmPIgLgC0jPvXJ4o988PXmaOxdAH/ZbKmfixqphFZBE9/K7ljXYXjgX2HMLE8+IC9+016KPf5gLetMq3sVWWq1xN0UQTS14lQ8HpI+CgTZ6tO8E74xlq+0JcnIE6OYvmO+vK1eC7aOZDm8v7hzJX6AEEF8+MmC4EGN19pvcMCYtfTFPMlxUorJcqn7EAMJO4YZ3UNZtDThAS3VCJRYp97ww8aFPghF9cjhS8nJycd88v7ZZbqOapLrrRLCnu8aIoPhMWVRkUFJ13uaow27ydhM00UbEIKprrV2fRajxvXu4zrKVAdj7oDobUXf7u2H7vRSeG3CIOP9mWsR7qdY/32DMa+tO1m01tsIQZYbBB3F8d9pcZnB0OsiBBtBYQQzWsNakwLVEJkIeIxokcxMIrHdIhftgWFjSYM+Nb0nL+psyeu/9m1dYAyJWiekdPX5gQWYfGlymVTCYHKvuJbfB4Wh3AZ4rBB7QaFkTWj/d7/FQ8Slj/79V0cNTTIXJDKcMw7w== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fb0a92c-104d-4cfc-1e9b-08dbd5eef942 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:16.6622 (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: 9+egcJfv3Y6KaF+cg2+SyeJuE9fKcKQi4m2o1Ob2o5jqkp/DguhI2aAc56oN9Da18P1NjQJMnJBMJ6oTTQiEbhS1vW9UcOzQRJ1JwrjgBhk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5965 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 Thu Oct 26 06:43:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133358 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 CF0DC43204; Thu, 26 Oct 2023 08:47:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F0E1742DD7; Thu, 26 Oct 2023 08:44:29 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2094.outbound.protection.outlook.com [40.107.93.94]) by mails.dpdk.org (Postfix) with ESMTP id 882FF42E21 for ; Thu, 26 Oct 2023 08:44:21 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RRH6UaO9O0pJozl9LB7M/V1dqxzAk5IXpcXhR2CwskmCyl1QB6sG1IdClEfoVWfgx+fE7kjKxudOEE5wBz6AagLpS6o0jEvJhD2mvO7xsUfwepYKcuzMIww7DsHFCjIFuG3FGH1WRciy0rPyt7u3P/S9lNDXkaiI1PqLSKUDqjpBk7GcFMHCnGOl9i5ktChyGFrWGpvRgQfOqQYMLUeE8mFXROUQ/TTRquw4Dhnubee9nKAzdG2jA/UD/MgH2GcqOK94sZ+skCFjBCInnKe/0bBXD14TDAXqDpcDB3VixbBGp5Wegz7g5mfZgXxFv0C473KAIr72jWWe66nUWuNajA== 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=TLRnqUZEDgCd7/M68FZSmE9hq3bl+i74+ZmW3pTwILc=; b=WDjhCy/gh6fSOHA2EroA6BDsuBfO8iNpNC+5+rkpkxiICQae/d3EION3F7AfYNl9pWaqXt4g5Wzdgi9QGT3X7q/OZYh9wXG5EDnNFjo8EgrgdK1y8lhOQ6TMwCs1Qh36pplYr5APvP37woKdM18MqlmiU1FpfqvEZSqTt0z7rQDsYXVNQ4tAHt31dvhShwUFTER1wNsC11DMIPiWnQSlfjjr8JD0Zpq9iXzhXmWv2saTvIOfrz7fMc68tBwHqfsw4sAIfTBopzgSlOfJQvYxLshJHdnbdRX9JmymJgwA7xKK4+MwAC2XriNA9Cv5zlNEJeXgR30vY4nCQoqg8/AQTQ== 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=TLRnqUZEDgCd7/M68FZSmE9hq3bl+i74+ZmW3pTwILc=; b=BfCJPZs8bWGiu+BQo8PPOCMdNI3736u8ZnKXcGmvC+PEWdwbssuK+Wagl6ADf/G/flaom7827zZj2PnXuBqa9+riAxPNaclmLCafgV2KXdoWxfkLhk5E23Vg7mj/iJkGacrw6tHfpQFSs9H7J9fStICYfvaQ1CCOCwrRCA/Zm04= 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 DM4PR13MB5908.namprd13.prod.outlook.com (2603:10b6:8:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Thu, 26 Oct 2023 06:44:18 +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; Thu, 26 Oct 2023 06:44:18 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 18/25] drivers/vdpa: introduce the NFP vDPA library Date: Thu, 26 Oct 2023 14:43:17 +0800 Message-Id: <20231026064324.177531-19-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5908:EE_ X-MS-Office365-Filtering-Correlation-Id: b205aecc-6399-42de-d869-08dbd5eefa7c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a6uGRr4q/UBedEuB6yjB7JeEnlXkS7OIs2ZqvlxPAEm7KTxf7RJcT6svhoyLdNLQxwgyWb0rvt/PyKI56E93i7FZ0Xz3VMcWHdN7NBMga3KU7HZvWoHY+tmS0QCNC46ywemkx8rXp8LAgeX/2V3+dlJ9834RV9dD+KDIOhfKxpPPhMfy7hOGD1BhgWrkVoyqN8zRZiQOGMDDW5fGHWc/+DGS7i6AivY02RPRA35rDgVZgm72luXPBny3YupR/utazRfBQBnsSaV0xonvHYTYSNsWBWfS8wm1tJAgS4nKG5tLlPSqsUBNhhEJgPVnZjWx40w8CH29eSrz7Wq/EOXPJP++RKmRaB1fJf9XT6GjVVbCJi/n9kvcq+vypNnfyDGSGVuQ57MMQMVCxY2pEwH/QYP3pc/1sML6PX8N/zrPauaKTUmNNGHazAh4GmbdEnD1YkOqyJ+n3VokRgfWzdFEVC0W1OWBfDfTfCH/3XWiop368bdUIZBCpiz3UO71EOgkX6d3oDmfqQWbhYpkyKF9gc8SBC6661lCZ/JZaJ+KQ8TsDf3iO6SZkifLCEtBZdf4rY8inW2gZJaoIr7gRwvSINHLqSINeujK+VaG3rSu9ZNgsHEu97SWV9DHFR9TxYTA1ip7VGHpHqVwjnXpo2qHzefuLu6Z6pI6ZjrHx/kGErU= 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)(136003)(376002)(366004)(396003)(346002)(39840400004)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(26005)(478600001)(1076003)(316002)(6512007)(86362001)(6506007)(6916009)(66946007)(66556008)(38100700002)(66476007)(54906003)(36756003)(38350700005)(2616005)(6486002)(107886003)(44832011)(2906002)(83380400001)(4326008)(8676002)(8936002)(5660300002)(41300700001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zHOyxWSSoRi3k8F7xj+ynP7VWclMd6i0tuxYV381L0wm+uxYEkaf+pTV0W6BF5tb3P66EEKserSkiNh+5qjfERVI2YjaR0D4IQH1qcQ+DyWsifGLtSaYoQWQT2xL9uDi+gSf1oJwBvmL3CQKiGq2MY62ZUEltoEw932n1oD7RVK4xtvGp5E6Xcoy40vqjSsXKqrAycoTPjQ0gq8jpo8sA712cYkNoSDo1yzX3Fw0zBmDvDZfZGx8dTOzvWYOy3gnFYR6YKYYsLhz8N/F3DL5OPLBfikfPIShYWkfM+3hPdeuTntpMlmHT+K37eU8aK/Sd7iXRNZ8kk0DjkZvAeiONlQwqqZTtz04QyKJR8N+DoJeDTnBT1P0YjaOogOdDdk3nJghOyy8bArLUc7N2vff8LSTx0HFPE9fT8Z9y3TewsfeMn+ELuUDZpVmfQiPpn1smUZ93sH0JXwkoKh44By24iNWRXZvtrXStL+xXXo+vy9W1mUvSwlVzrg3IIU8aVVQq7D7HwjPepxvTmEpFX3kOJcBH/ED3lOyVaJcz7j5bGIHXDLcg8SXG5y9a4aPw2emicpVvA3+ZliVwHBqY5LHYHpsMRcsU7a4OmHKFfCgPzY/RRS7v5TKw/zMQ328r4VcYdiesCW34uUPRsYHZWGOI++56ah2rX9Lrfb8KdVBnJTBjOmXfJ5MT66aQ+8plh6jOL6uRAGspnCeiXO+LUNMPrRmpqG4W/jaoRPJEqIIRhpGv6cOgQDacjxEOYz0bw+VnHeTC1bDEHbWty/ds13MRDZPl9B9jTyUFfVv9ybdXHEFIYZp6B/0EJY5Osdw+6O8mMWtyf8qb1slukfKeRP6fTAXY/AK9QeCdxKCNJQfOfL1Mlr60o5o7Q+42s3LYYWYGbsnbkLochgJ2aLcSMXbJBz3BicgPZ6hB8JisP9CfWSEGV/hRRIc/zvQ59MnhZdB82m4og7VrOPZ7/ZHxdo001r2uTPxrJGoYZIlOJlo0oPjQc0pOcCtQSDDD2ojGbOakqasCuF5/KAd0/jCM6FjPMzV3H7/i9UZGYzKA6/wK9umotZDb+/2+UPmmEtQa/q0kEh+zaglLgdtFH2BL0fYRSzv2/rC5mSTdOi+jQ+ziNoeolwgOCD5EFvNfue7xp9k2jDtGYtDlhLT8l7emxxExDrDv6Vg3PKmtDKAFxidmrc7emBchIXtYsoxZtc1R8pRZMKbdvO9mYNOFEC7Awsef6tUT9IDNlTqiS3DQ9d3qfYV7u39sO3npA1ja9ia2LZYaTK+CPxn3McQAVsA3lIMGV2ALxVGtlS055gKOD2q010s043XdZqd4kKJHk3vsBgXpo0CpGnfhDGWQluTkN2t62xeIguYQnjGHsoaaCwsaXS7yNsPDYpPXkmAU5XCHoQGMhAxK044CI5DhtKJ38L/B5PIOrtRpsa6uINKXC9yL7NvqUVMyNHr9pIhi+dsabN5vkUITmmNA4uvUZ64Qn6xSsktvo+VJLJHfPilqUKeTP9KUQUyjXZ26ocF+n4YjOGfI0564cBz6TY/OWmvbTTV0pjNvIzFVYP2k89a+7e8eP4/vKp+7mtZGAGzK1HJTAUIyI1Bw44DsFqbZ7lRtGn1Rw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b205aecc-6399-42de-d869-08dbd5eefa7c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:18.7384 (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: VHEc4sEO5y07WrbpW0ktLMfOH+s+4XKW6a6g/52U+OS0J3uotU/gDsPx6mmhQ5Y6toaHnsk1B6oB0bFMtuJ0+KKXMsbO04AwpOrOdF8irn8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5908 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Introduce the very basic NFP vDPA library. Signed-off-by: Shujing Dong Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- MAINTAINERS | 6 ++++ 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 +++++++++++ 8 files changed, 113 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/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 Thu Oct 26 06:43:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133359 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 6382F43204; Thu, 26 Oct 2023 08:47:11 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2C2EF42E35; Thu, 26 Oct 2023 08:44:31 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2093.outbound.protection.outlook.com [40.107.93.93]) by mails.dpdk.org (Postfix) with ESMTP id 5846342E05 for ; Thu, 26 Oct 2023 08:44:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TlYFXgMS+hYAFqTQxbu+DHQGZhx1CL6GsrEYfIj0+WHu26icMBETivtAMtphvqnVO5TjdNnEiTqbl/b6TomAbQxArvwNM0Mpim2e8BFz74tJeY9WVTstXiRwYv756QQtQvcbb/TNLj/BN0fD69IxZf/shUcqxlVes0+Kp2gLZYAr588DtG1sTknQkbgvQnt2Cb8rcUside7MjgQE4yodW2g9PjI6M7dYtQKLKqlLpV+1sb1D3ZMGiWailjN+wzZ8DP4eXK2gG7+da/9G9DfsEtsqgMbjaV2VlG9JxbrIcp7VULw+MIypV48J4EJCtuwPFEBqIjOU7grE1t3PhVtC+w== 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=CPpfx50lBltFz9LHLA9ADcDQVufOVkraGMGZz2VURlyncWyJ9LmX+kBDqt0mVzt6qe8xp5Sc/MZ+B/tbIOPGpIlYzPJ3jA1yERpJgtGEiFs949XAwifZj4rO7+g0ZgE6EWW80SgLrlweRwTRxLyulYhtUakd4x9vPB6A7j/SeFdrk1Iv7j2VHLTLYjbppOUstOS+bCa6gbOi/d/l9x3ZozkqktX7HQ1/bWGu4hkj1Cp6qvyxxwDojpjMgiUI4EjlFehgj8QLPesQwFe1eTXmMFWrezxvTP2pGx8gHAmPaDS5c4jE3E9KoQAl8Y5I/Nr4wP3CedFjJEgasZevb3XY3A== 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=GEJZVVnZQVXKiLXrvFBqIt62L2bGYBWwILyvYR1Wq9E3xsFu8oU1xv7y81sXI9kZ+xPNfE2CTAU2+YknkKZx8kP4WyKo29l2R7Zi5yezK5d5KDaKFv+BQpfMYefdG+dEXAk+cnWYENPw0M5bLyuwfDpbgj19y4hJlBNy8Fi05bg= 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 DM4PR13MB5908.namprd13.prod.outlook.com (2603:10b6:8:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Thu, 26 Oct 2023 06:44:20 +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; Thu, 26 Oct 2023 06:44:20 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 19/25] drivers: add the basic framework of vDPA PMD Date: Thu, 26 Oct 2023 14:43:18 +0800 Message-Id: <20231026064324.177531-20-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5908:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a31b275-79dc-4ca4-b311-08dbd5eefbbe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QPqZclHh5rJmFqUK1/CNwL/caPBSJ2s62mHUP7rPPQ1vaCcBxQxKzAhgQeLWfoPPTmPySeGuw5biWTZbhggZQd8q/I2z2hJjHHn7qjMXWFZCqS2l2CvikzSwbkNJZN36vl+NvZhfc68fO9El1tTYhIrD/KwoOlgZwHXix7sTq+dRSO1RjsMjmKNEfrWbQOLF/NjnjJ78eEartEtQMQhzT6IziEkMZqhTHnEUj4xwpaYBi2hfcd5ZbTKid9k3LewrUtg166OecwtiAeBj7xvYNRyEyFWSaw2B/Z47JEKNCDUhM3E2D3atzv22+eBPlLNUGwaYULt1tQTKUtStRH8bHpRF+qcwleLSGbMsKKrfraakZ8g+O2zVpC2ASh1ke/KMUuh7jfR6ltfHh3t3OJBVNUbDujLNAdBJ2OSvhFqSdcRZbrAgOF0V7dT9m4woO1lLgYINujLQSH18qP4ChJ2vdH+UGi1H55KUdZ0SR8QKrjwuePcuc1QQYALT1GGdWjiwtfO9Oj1oA4T8Wvz/cPTRFr4aDzzhXl5KSvBp7GFqE5RsarucJstC2/GuqhX9n654wmS622cXDyDOi1QwFWCdpiRhPeh+hz4GwTLjTedwNq+JwL4rTp66qiEQQnzilNg5Nc+AeFrZtL2DBc1FnVEO+phghM9EL0fyJqIdrXTC9LU= 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)(136003)(376002)(366004)(396003)(346002)(39840400004)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(26005)(478600001)(1076003)(316002)(6512007)(86362001)(6506007)(6916009)(66946007)(66556008)(38100700002)(66476007)(54906003)(36756003)(38350700005)(2616005)(6486002)(107886003)(44832011)(2906002)(83380400001)(4326008)(8676002)(8936002)(5660300002)(41300700001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7JTnNTeFuDLC4LDjEW2LJN1cylE68TWDNR4ki4notrAEP6XYgfPb67vFZhuJMOH16LzR99CbXdU39Hovi1krRaF2fZUKmU2f6BfyN8jEGfiVbnX1GpIH9WDXJZBoLlsri9yhD5ZPzDTCFaTH7VSn5rbInfwwrDkPBnwLmLJxp31N1VdsCN/CLGXb5s00NU20qPB7Amg8LGPCUFtQoXcnEaJpTySdgVOWG5+SqXC+JHudRR3LBnY+Heuy4KRkbTMk7OB2J1B7+Po8UaTy8++TQ/IjuKnFLcsxlpCy04T5cfT+YA1qG5GsxCS0ooMSTpjPXq33d+moMVYfJiwWUR8O0qQe6lx5JXZZRxBj1dkwcIWSJyyoVPfl6IR0tCtAW9XruKw58r85ej0wWe9d9lfbTw4+55uOL5AECI18bnlI7mQjlRIQEFpWL1adeG6TbfFHyk3C0EFdRYEAUcon8ZXNhDsKwvn9UgxdrzFsG8BfkGQoSaUQIFnc/vurBlV9Jn6qZHatuSve9JMRCxBEPPiYVpQYPgxYSl6dAZFfwVBNW0qgYMgmJDvVZUIQ/W9Eg1/CF6PiyGEvqi40nE3J1qPxXjp1zqFR6RMHS4x4XEaTSA+BMFoOJR5oxL6i2YbVUuPT1qdXt7aLl1Dv0ZXgwlBiYNuoViFlD8N+xzgRpBMevSyjddnpwuvj3IbwYg7lSSgna/crmM4xmHncVCqA1S/yP6aB5QRxsOshjEEflGqtjMLKvMuhtCQzWjbJx5uFzPfh0npifsOAUy8Yth2KKX3N/JpmYHf1evSzt7WJ+NH59anhQsbtBrxHFgn7iZU2eelUenR+XBYHxc5eksgWN4f457AjH18gdJGPguRLjKd4tUqC1i/51pLMsPygUOHvbqbyvN4kI0BjDHM+D7wHvIh9ryUdQFYUkXb1iRMOVtQV8qqvaz6uR9VzZ9z03mv8um/qd71f1Qp7zcwAyt/Gq5oDhzdO+Qn7DlXf2f7Snji9UaIYgy3809ZuB7D4m07v3vMYMQPeXg/8RitZLXSzRZjAq5SPvALUTpzZtPaOgTJiwhWOU3qH1i7pBj8MtMPkDiGWhhV1IYl2XdW6EG86mGMEP040qrXaZx3iPRDpYscOpfk2cfMlx1MyHHU8AwaEwL+Ax++47YUQvgZCX7bRLqrVWph+l0X9OY5RYLLdgaiCdcR8HhTAIghPhhKTWpT9IRUnSHIGdcSQnUGXnBUk90nFEhaPO1cLgkj35R+lGcoicOw/4IZwwT7A/75dMI4NU4Hr/hOUYwaEpc3+lsG/YXcXEg0N7JCXMwM7Eu+CisXCXLsMzAvTbVPC/qrVUaypq04ph2VfAnrqTdvNJZuEfO4RuqbXT7TijdQnc7bUNIaHf5xGAE/yTYoDeHnPBKXGtDRqWhP2dnfo8HRCOBzveKCu+S0Wnu0YTIhZ6auj7NJZEc9WhjgulN5Za8e0V5FZq3uLUnqLF2dCRRqChNTMdPCnEADx8woBvgo5A/enZphW67Gvx0SiCjZs1oqoec8vFBl4hcRJswFp4Bev3ADJr2ahe4Tv2exXPIVIGl1MNmmUcGURUK05CWkjB/UNtiXnK9zaYCTAJ4/2kXDDwIl8pkuQPQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a31b275-79dc-4ca4-b311-08dbd5eefbbe X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:20.8305 (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: bqOoxzVqAtk4cqX/PaQLQOZTXQE2KcjXDcSCbw5XVkktiTXM1fU1KN8sCirrs7twX33KspWos3bHc6fJ/c/EO+rpyglDqcputLKfaLKrnYY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5908 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 Thu Oct 26 06:43:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133360 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 AF1EB43204; Thu, 26 Oct 2023 08:47:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5AC7C42E03; Thu, 26 Oct 2023 08:44:32 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2139.outbound.protection.outlook.com [40.107.93.139]) by mails.dpdk.org (Postfix) with ESMTP id 84F3C42E00 for ; Thu, 26 Oct 2023 08:44:24 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EP4POKJx5xMEYR/B5AIv16xrW5kyPUeKfRWoesxniGUzER5tuP92pXUS2mHke7nXiF3rIPTr7S0AG8sEEjadxa0FmRWtrKlQQs0dsk1IaW6Z0CaKkYPdPqGlOMf7bDoTJM6864UjiOo/wC/Kx6vVQjwaQOkTIxRjU8z8hxJgQyRX1SpeId1BsSNPUrNk0ICDEGnJjYxjnS/a8mdeRkKBXRnWIQY0eBoTZrGN1ynXb1jvlH0XXCcBqxVBEXhhd05HBMNU5/TZwbg/JDgR1bygkA2n/2B3Vi50GhqOQJChGmG3RpYUreor1R3FKPZaZEhTwNf/y76wdtYLsg1jP+s/zg== 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=Sh3NaOAdPEX40v6BWBW4voue4Ks2p6HaRR8seTAcK8pb+fsihywRLa1LJiJYB18lkHLGr48rb1QomoTfkQb3lLGVICifo93xiP/8pOEtQ3ikip249h4znnfjkBM27uDeG75zc5Kgd9X4KLfcdR+gdiVHkcaCXxEnExP3bhMHNb0iJz18rQ/ytHO9VSGMVGv2MPUQcXG1dDzQzy1phs0uUYac0JlqgGyW/k22MyAkjab2W0lmHEs31ztFDi8y8Qjqj51dQab0x5/EcJ3z5BE2QvuHM2PJZYIZc32IFtcSepQP3dTXzipJRse59tIqj/AxhajDkgcOdMCIe8Im7+dwCQ== 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=L5vIL6Ac0HaTA+cFJyWNvNCcrNiiXf45N3Z33ZrsdH2yjzNEZ3iK/2yI5FgpS4uWpE+7OQ48gowVfKI7Vk83ScZvUlWQx7g00jDDfdncz+L0UY53hWTt1i4vfsZRtmQJsThYaGH8YpP3nzYAOnYAIanytuYYAR1aBZLcMEBHcLI= 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 DM4PR13MB5908.namprd13.prod.outlook.com (2603:10b6:8:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Thu, 26 Oct 2023 06:44:23 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Thu, 26 Oct 2023 06:44:22 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 20/25] vdpa/nfp: add the logic of remap PCI memory Date: Thu, 26 Oct 2023 14:43:19 +0800 Message-Id: <20231026064324.177531-21-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5908:EE_ X-MS-Office365-Filtering-Correlation-Id: 6f55e652-ddd2-4191-09db-08dbd5eefcf7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5wahKDUPpnmwdF3thPTVvlAGB0/kMuU8I5+MhqbmdRXbmwXbeANmIgMIrMQA+RO3rsAAvcicPIhinwK887KyFeQwlBlmvNQKy9o4QezC3TuJAH6PanKK8qVrDpg19MA6B8Y3ZXFzk7Jdn6xNXj+MlrjuvYFg1Eao9vYtEMNtDK4iPsff3Fa6SEp8y731P42hugOfYsLMkXp1HvqnGwgi/8kArh+83LPME4VPclsMkfplNHfMnIseAy53k+nMky7K0QaWV2a5ZPquPvTC8lNp+scR2B0arcGK27hVnVWqCnAd2g3V0blwt3/gMzOccgl1qe+N+a4QGrEV9XvH3F+xtxLPQ7V9vlT+FcYPALM4xvhtt/ph38LL6EL94/Jya1IZW7uOcP5BsF/ZSaJM0cyzCYpgPWGBywHmYH0d0yHxUqLqov3vtqhaEgZPfweNSbmxkNJUhoGvEnFLBTPgeeBIqhf2T8pEEZsRt2frXiFN/eUhTxTZlOXH69zRDryV7UP0wrBFOAKsEic3MWuB2NFLiu2O7xEdEIXKNENUwne+v9Cxw0Cyl263+fWVXY4zU4/7si2D9VpYvhw/alcm2iywZnwsbJeHz6i/nDDWA9O5OUGjrPUfroeYTDfD+HhpY31VUtUZPJdd+6SnB6jc6EiSprOgYkEThf2MXIJltKR+naw= 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)(136003)(376002)(366004)(396003)(346002)(39840400004)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(26005)(478600001)(1076003)(316002)(6666004)(6512007)(86362001)(6506007)(6916009)(66946007)(66556008)(38100700002)(66476007)(54906003)(36756003)(38350700005)(2616005)(6486002)(107886003)(44832011)(2906002)(83380400001)(4326008)(8676002)(8936002)(5660300002)(41300700001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 62NA5BLV1x0rkWBA8usOyVgLdiSxuVcbpxZiOnYccAZohtOlmUfVAKUk6j5s98Huhi3X8FALwdndqFRB+ZZ0QSB1HD42oiqawH3fjpjqMo6PnFkFX7EbjThG0crUX9h0w3yMtlbSpKvfsyAU8T3Z6gNra5qmTh6x6bCbYVPnGOY8fOJKYvbzX6RV2IWJyZYYjGSVFqWH787PuwlmTqmcoTZYk/1/NpltJxF0nTvvdBlg1rd0au3+i4aC/Oxn2IrtWQKdz3J6cwm6y8c4ml0Ms+U2aCgVqVSbcuC2BBwBB55TEwdtnoAf48x/cuCaVvZss0i50uvG8LDNzVmKLgZF4slGiy6QHxSQlo20KqqGP4a06tchc1NT3cUBNULgQ00IoE0nWcEctRO6r6KaTmC081wTDa+ZemBfdk+XNeftopqtSYdcIP5D//rNEtmGODrJTXycHDYND+uSSCbMnQvifjQD6Mxet36C+B80BoUaSH4sZzeJXO8eA3xeQsBYzbceFDuzh3wlrOJVu+okjGqYqqbThlHGSgaLTBC8kzsFs6Y16mvdAAy1fdhOnrcsADTt1Hx5y8YzOj4lEYuhEzHowi2ZC6gEYBfarnSpVycZnn+S4yo/0h1GvK2gdGMwDHVD9TgAaDr3/f/lSbwFrktYLiDtaEzQyWuFxgoLZFABFz/bbDdGlj0RTXAe2AOKAqhdZqWw86DLgB4AgKUNTxAPWwase8HaJnCoVu9xGFcMN6lUualKradc6tEImJqc+GyEUjyPWRps+47rAO8WitHZKZD+g26N6npmuKRWGn/WS5Y5X/r0SKiq18dV2ocbHfM+pk+IK60p7o/KfszIKVG3z1pLMaJex1V1MtJTkN8sv3Ph595udIh2A7wcLUSoOZlA0cfD/jkdo5//ySIb0tmrDLJ3X5pBBsfjloq9h2dHMWgSSiBL8eAT+4QNr6NIIOeCKC7pexFVqrrao6Gx7rQTF5EFclwznLuFhgTd4SO6bPreJ/BUyUjdml6iWGlF0fJD5qrVB2ho0A2lCFtLbpTxvY2FaWl4da3VHxaIg4QYKnvYo7Qh4md+ppEDYvyl/1HrjrVAbp+sM2UYRbWO8V/Cq1dQH9QSERF948o3nd4oo1jitR7T+e6OgaNtdV+F4++KrHaj0dD588o0dqlDP2vc5uvRIsVx7NogU/aQoA/gZXTln5KzFKMiBuRL/+pUoqflLlWGKfpD4HjtY5Vu+YTtms7Z59Z9iU4p09NAz4kVFKLI0ZwjDhacq53lEdlRiYNlJBJ2frZ/xYneFpbRWvL5xM0nM2sxVuFfmXuY+snHAP+zwHw5YU5zXA04o1nAMX+hUtdiY3aQ5m8gbADRzItMWVY8UNZYCoZ2fc7fXyFxAZ+1NCjL0YYVKS1VXXNxPYFJzsacu6tip/nQihmdjJhFU407zDNxyl8QhPMdi1v4bJrrH2/S8NaU3NaOwo9VdW+a6CYvXHVXlXYIkF1z292QblDCFw0gFW6GKuumausKk1NPVNOUzSZqT+waBlWoHjEl3svVf/cxHn1WNo6ziocwtX5INGqC3ql+HYLDKa+hfEaA+UbAmNkxy2+M8c4sbhLyHuJfx2h57KSGMbUwC1P0qw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6f55e652-ddd2-4191-09db-08dbd5eefcf7 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:22.8818 (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: EKsgyJGCi/20tME3BtkWlxUynxhoo9M8qduklB9GidvVCvQ1pJfp4CyDkvrPCjnsh5xQQMA4kVWsJMmhnf/dtFarjukxjuG1u4wOacRTkTM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5908 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 Thu Oct 26 06:43:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133361 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 0DF7043204; Thu, 26 Oct 2023 08:47:30 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9B3A742E4B; Thu, 26 Oct 2023 08:44:33 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2112.outbound.protection.outlook.com [40.107.93.112]) by mails.dpdk.org (Postfix) with ESMTP id 62DDD40A8A for ; Thu, 26 Oct 2023 08:44:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hYSmRMv0eIDBtpS5+KuV925kZDx61pxLdWStPsPA8jcjW+nZaNDSARtG5qcxtFrMddke72fci706KV9oOIQJe9W6KqaGB8/PiF5p6ScKtBupfRxztkMnD2ksUhhBMODTESyBaRtdU/AmzB5RV9HCYhy9295nqY090HRJfRPThnIwGvYUia6LrRsA2VaOaFBjOwOG90AkhT6ApibUaD5rPx5WSCp0MEwb4gx/lLJ+Tt+CdykZqt3mrifHmqBb3Tk2P//iUTTR1Ev6l2RsQTBe2GmwilV+uKyBMOmHqre6aJOH0s7UgvDVvYwXOZ/1MIEu0xh4orWTnWUYlyg7uifbqg== 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=TxTf9GyE39vKrOgUEB8mUHrXzWDX2cJAyfLEJ9Br6EabWCDf6aIE4rM5ti1QJmsL8EPUsbenjMcV/BlpuinhilQF/68kqpSutxNfbNbwTT00qwkjq59xpRZJTCb88/blONnqKhub5Ex50yIMOISHyWbYxCcChesrAtxAXfV45kdzuUPgcl0WMMUQYOlmQvumQsIuFu17HMGHoyhaDgKkMXX0jMBZfEjazrgJjaUq9zyueyN5g6hFqkuAomJ3Nc8mndnBB8/oRbWxwWNFchUvB2auJLaw/MQLBZxdJZDpXHxXUuypbjXG32mUy2YWfQLbR3LMkazFLnzUB1EN+z62Sw== 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=A1VdaS65JmIf+wNhg63t+SLtLYscsB0Dhn6ldw2GNMw5xAbShbScFT7sy133B+gFOZfe8bHr5tIeA8TcmY8sBXFvRUBWHAsqZw7Q99BkuvFSAX5novKMZ0hWVrMq9KIWKWAWvOQcvV7zRsb4cYuM1bv3rUb2bFcX+gEamTO01rU= 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 DM4PR13MB5908.namprd13.prod.outlook.com (2603:10b6:8:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Thu, 26 Oct 2023 06:44: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; Thu, 26 Oct 2023 06:44:24 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 21/25] vdpa/nfp: add the hardware init logic Date: Thu, 26 Oct 2023 14:43:20 +0800 Message-Id: <20231026064324.177531-22-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5908:EE_ X-MS-Office365-Filtering-Correlation-Id: 880c915f-718e-4c80-c1fc-08dbd5eefe31 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WJ2iPezUbZwXvRY5m5w5phh56usuOOHGEYMloTxNSpFMYTaQfHCj71YIByLE8kdH/ByRWWPtAyHunZA1/R8jc7HuiKMxOvXxEGOYpvw9ZNGsrjFiCAepH41zXEGf6UIH5RXAA5Y3dNvBJctihMTU6R2xBscwDatwRav8ypXS0DzcNNwnE0NqXK/HvbVKqyzfytSA9Ckzt8lZAmrHTCCw1xhEj/p2iF/jjLpYFrda5H5JBelMSCJlXvvv3nH993lzPaKZLz9Chvubw16qWeGmNtagRhSEQf4bHKEtfQpSbQuQBiPVR/RQcA9+erT8ejMqxIbpY71fkTUZN2PWqnEAfq4Ch7/dZPfVcTVcuayGkJCBJhXUqd2J96RxnfT6kbj9/P9jSF57Ih6y/J/psTzkNk3ZLieEA29z7vwSuU7DXGMIY8fQCNeFkWAsXmeC+ird4PEdgMsyIOp1TQno5p+Yp1G6+QzhrxmVlctoXuIN+MLzjJtDShcz9efC/6iyiNqvco5SM7dAX04DuJs2bTmVbUO+zG3SDdOm1dfk+7iatAzrchn8vJszHkDQLUfyvU+KgCz6dx5+4ErrYP7m4Tz4b8CFYkFZMqW29YARJ4tRnB0NzCoW6UqRoWQHvqQw7SkQD9s+nH1uH4epR/jxicqZ2ryKr0eTMBV3/2SgyGxRuhM= 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)(136003)(376002)(366004)(396003)(346002)(39840400004)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(26005)(478600001)(1076003)(316002)(6666004)(6512007)(86362001)(6506007)(6916009)(66946007)(66556008)(38100700002)(66476007)(54906003)(36756003)(38350700005)(2616005)(6486002)(107886003)(44832011)(2906002)(83380400001)(4326008)(8676002)(8936002)(5660300002)(41300700001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uvrU6+2tNZnBtKZfipQCOFAdczRQk0JLAqmcHGjhJIO5V7LWguo4a96hof20se1fXDvZcek5LfqYKPeThD05u2/+aTLRAy6X6Kt0RKsgMtekIylQoJjfdBrvatjl8KmPpgC9L+nHVFKnJIX67OJ0/SqT6BIcnyvDSYa48p0Kf1o4H45aLp+LL+S0ePWo3zMWYCWE/cPQDoJQo9qqUiL9hEZoqethtQmZlrffU52aV343CjXbPAO4pyciBUjVMsLOOkiaAgqipe2z867NieQY2y0gFw9WQUDO/oBxhd0HtAN1yNC9S18CgZxScSyCSbVmGTwWVw9rMeSr9ajxfsin97VexMqvdA4SHqY0hccGH7ulmJ55M09vr+0Fi8Oha70iabLJZr5jAbzz4TzE+Pp9EsfEfS3mmMv9uNVKrqJrDj8zgh8pgYiih1+rXk4L0ZgZUq1lcy7TORBxDnCJDcmto6YJMRm3+2vdo/KJ4n7o2xIWWkiWCvoNC4oCeRqDSlX28NRSmix9lff0I5qw//iINsQlJF8HAvtCe+/3KhOiLwlVpBvMp1E5jYfQReCd+aX998wa0ylIw8nuKZh9npvzQa7R4TOL01Jrh8r+wuA09xkWCapJhxMcsdjJHjlDJp99KXiuA9e+QzTHtLMXNKglQNj3HIJ6w77RwdCc9CZRxqPA5Nxw6qDEqGfJL6IZvvxHHDLwH4z/MlVsKhY1bseSzfqd5W/X+CTwrmNNAKEPLCgk8QwU6a/0pHo6vVPISdOcTeGsvNnfo6GqRbvYP0TEKKK2XCXsdzEs/oQf2wtfKwP/E3CKQob7z3/xAaPqxRNhS9s0OjQi/dfH95ZbDfujJWOekmUgahmNPiPeU2sxi4avNxOak35Pd0FmHNZGGWVq5DCLJNwGNhEmr+oPuEKsom1N0S6/SHciIQMzVRnshp5kUwqfZQXaCiYO1a+Yr4v8hX735ZLMpcLTeroTtUCoB7k+u3QNfMnBueTzh4wAXhXmyha1BmjLPw5m61CbymkcallvAvGLxRwOVDtao/FDWI4vrTn4LDPR3bNQ7fLEpxes4pp8mjRSlGPX/x59aYPaEdbZNyNVVNLcoFuKr9Ag9ahoImYrlJvDsLpfXCraXLz5+8UAyPhoY6vZK+6T9y6ufjr0rzojCkFQOOSFTGDeBwLJLolY2DKOdZZs3Q2J3HPMxQrGWHocZIN5T3DJjXjoBlZr1y8D0VC5xqlCDFqCzf0+IFyDc0OdBdy6RC8uRoIJbCnjDr0SYg/0aB0GVweLlm0bpwi04+zDMdq8vRr5ovJhGztjf98LQrSAzsMY10kz0nAKYEqavIGMJhCz7dnNnB4ShE4c3XbaZzHOJPK4YVPBeILZ9mL9ZAEnNyrPJ6qFXGYhefNhpNABi4nmyCFarj/qQ6bITcUnUMcZBFV1l9eKxSAPKwHssuLhi3gUNbRnkkdl0leHD7hoJYJHknc5nqckh1d3X5aNLFPvx77o40dHKfbBsxYem4i7tt+J7nWNfmSIwhhrYjMeRFnB35eipmprIOF5RKh36mv5KSAOzRyfLJotZr/xiu/DnMrNVkszTu9DyBS6R8Huoh28U4BxoBQjvutNXbSO2Djy9L62eg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 880c915f-718e-4c80-c1fc-08dbd5eefe31 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:24.9739 (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: ibK15eEInCGXGdq4OcZHTC0UDrwA+GlGcla4Hy5AyeK91j7Z9gKHUVhfh0BqSPtpUn3A+ZtCyXywfu7M3QamUjHm3n7PRsGEo4uS1lFt8lY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5908 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 Thu Oct 26 06:43:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133362 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 1E9A643204; Thu, 26 Oct 2023 08:47:43 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 88F7F42E30; Thu, 26 Oct 2023 08:44:38 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2116.outbound.protection.outlook.com [40.107.96.116]) by mails.dpdk.org (Postfix) with ESMTP id 0D05E42E41 for ; Thu, 26 Oct 2023 08:44:29 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QjnxBvmiFajIUu1mrXpbJcAyfEzQXEGb5uyrjsciQg/SdHSt8dpbU5ULA0vneQSB7h0t7vDQPisRDfCsmgEL6DnRVdXOP5sbvzoNM8FFgfwY+g6zcOVhKCsG28eekO8DMCWjnhFCz+4UHlhbTdvPej+jfScgpxwIoM8mbUx3Mm0+nnDN14w9+tKSPXGKN1QIquAbZg6qUpkrHAGK3QuWfD5COHAZy9lxewq2L27kpMJNskq9kTNk62UjFVJ2GxuaBmKziYV7pVJsRgrSLMtU/GRxnQcmoasM+umJ2QTepTZcmtvwGOdPIwwIlj2zhB/ljuWaVFyU/kWzsrx/S3IN4g== 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=RHA2c0lHb7AnijGo5U6VDR7PbFnsFzY914xYKWB4UyA=; b=HuyYTXTjgdT5xDLI8eCx35wAIhhCaj/HOHzwZOrGYE4CtX7BDiaa9ApXThONBotj1lQozN6VaZZj6wnHLfCGntvBoD95v+NgFEUpXjQA+evTX1fiWkTdDY26jcP0W1T5ZtlUUiRPQ/Hx/H39jpsi/4+ohlYl24rqSElb2qsYcmvqmiYuAhMf99DrQ5LycpG4oYanC0xado1PMjjHW0k2iJdGwj8fUKcS4Ulbqh2MJTWz7xGWihPzZV3cUFOGcw9XegnJ/8CWrkHjtarE2Yhv1J1AjlNHrsT5G8/mE3uGLu3W20Kk/39KQQnhhNCF78FU+gAKyvtKb9uff7DKvYi3lw== 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=RHA2c0lHb7AnijGo5U6VDR7PbFnsFzY914xYKWB4UyA=; b=Bu/qvgceUGK/eTbLedOxXNG1taO2fX+lcw7T0zs+iJRFABi6vSB7oE7oVp9d6ijFUh/oHrfNmCtKXOYnVSFevKWOv3UXBYNMTx06nL69wIwM5jWJ5q58CIzttfp+PbuJGATljVUN1OGfIt3u/+aaBOyPwTPcTqSnQ960sBr6gz4= 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 DM4PR13MB5908.namprd13.prod.outlook.com (2603:10b6:8:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Thu, 26 Oct 2023 06:44:27 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Thu, 26 Oct 2023 06:44:27 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 22/25] drivers: add the datapath update logic Date: Thu, 26 Oct 2023 14:43:21 +0800 Message-Id: <20231026064324.177531-23-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5908:EE_ X-MS-Office365-Filtering-Correlation-Id: a623e1b5-2457-400e-77ac-08dbd5eeff6c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WovXMNwjfzfnyfxDBri0MtxtWCGcdzgWP+WynEqI/RdSfDlbo8asFK410KvE68c5DTWxvtOk9k/9qb/uTs8vaSOpwqtoFo47KWt0cihFjkCP0o9RCbdyqCXosOs7sHZ0/2aSUr5iAARWduuyYmchBSC1slywAEkD13hKj4EdivNU64TT5WqXRwnbNym++ZaCk+1Gjaf+MlXXCCP4VVMp3vCeNmIcXbRhsIlebSHvZ5d0RUlZx14UMbi348pA4p+MpyKZ83SsauhRKfyz4ge3KN20T6nqAYsNpvT6/qHdNVyDY1kG/w4LnmLza+y3+sc7Umd9wkDTFiK5avBFz/8QytUyLw8Gw6+dFDgwaaf83mhqruyIx51WYpY9GOWtmKqGLwigC4FHOGagYqrkQ9LOXP12PotOdfhn/MF/INoD8+vb6+2IFNLiTVTBP4dpqJq8C1eytMjC46bBHiK2EEPcjZ+h4pwwYgewBnEkrzGCmpN52PCdrdOHb0pP5HTW8ibiSA/fVFeQu8ob7MLR2KpRmmaer0GNN9wrhygLooi+JnfZNRfM+PYqkuWmlDeYuF+PzsgCcDqkgvpc6/aoff7AndfymVkqh9ice8/Jy8BcrnhpErTal8cBdEiPp4gN3TtJ+6Bx3pfVpEeKvQpjTwT38/ysFvFBhN1Fs4EHObej14U= 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)(136003)(376002)(366004)(396003)(346002)(39840400004)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(26005)(478600001)(1076003)(316002)(6666004)(6512007)(86362001)(6506007)(6916009)(66946007)(66556008)(38100700002)(66476007)(54906003)(36756003)(38350700005)(2616005)(6486002)(107886003)(44832011)(30864003)(2906002)(83380400001)(4326008)(8676002)(8936002)(15650500001)(5660300002)(41300700001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: y/xoN9f//LvbouO1dAcCdLg98eeX3IzjlgWL6bwXEHx88dLkiICjhrO/5zF//GC213gALKd36xmENfqE7ZnRyIrmD/37Sn7NAuzcC+PSptvBnZxvvNVcvlZu43j6VnziztVnncPRXZ3PL1J0YP2qvR23Uvw0lRLOTz28XfGcvzALsTrzyEQCu/OWKmK6SRF57Gswt/bVsy707cjor9Ndz2cYW9OD8nhVk/EIESmkNFxYsOywYv+dwXbFmHxJ5jFOIqElB26jJUrq7Pw1ogFKtqlg5W+fbrxVEIthnIGPC7cv2uwG5fFbWDauLxbDpSciH7gnDCCNVmJDbtoZNuTgv/5pWH2QrbDo39o5zs0lsN1/TPqbxXXuZzsZIIjZ6txy9IW8IijmdFhAUlbv+0+96Q07lv/EUJ1J4xlfBLXXfRwJ3DKyuRgEHR7Yfj9BuV9bP/E1eziFUE2v1DzQRpob1DLT3ik1JOVfupsJ7d1rgRsjpXnBqWinaLcVbiDBKi2c55biVEdKsyl9MOIJstKJzdF209b2JdbprE1o7aHjlr0hw12SbRI2utKx6B3yZxSSryt/jlUY7POqI3Ze2hz2WsAe+rsDlx4ORS4RV5yIRULhlqElq0TfgNUoHBd+ZeNIGvgOmHZYZTU6jw8v4TDoM2TB7FSqQuAXy1lCzWa3aMYdOdDT7TMHI/dmy/PqGwH/0QPuQe6OZD5Alv8RBrlnBIo1EWiAz7SvmyRd+iD/4wtMsaxAhoURxWixso+Kx7ZJ923WCG4wIK5EIcNenXEeOoN2/Snp1ZpLxmbw3O6seYIh++9C1AMUtDSHlE/bebPJUDfp/e3pb/7NIEn8xs1Q+/1DUb4hazlEVwGcWfhEtaIxfMgf4HxR5wdQquDe8rFkZ6NED6rGApb99a9crgmD6pToxXiwzGGSUr2tO8IXmLt7Rh4rMG7qleRd3P72mMClS8p78wHGdl+24wH8l6jBucfK/U+B719Azd3V7X3/q5h8bJRIXkxW1TSD9XlxaWobAMy6+G9FNoBHfUhlwosicjr48YXU20Iw6JpXxR8EDWGpYxAXUE1dch6RjGxSdSI4LJiDOCxLS+LECZlF+6550xMna9TlnNYwvGtIj46WawzYaRm2MPRiBsHQ+6H+v7D0A0Xw5u9bLPZyPu7meDym5VamafiRrd3wg7KaPHgTy/Te2QaRjdS2/jjB5Cx9TE4K/xGeUUNyegQSjqlJybzhwL7rpcm7zX+beQxsN1s/SaBLOB3lCcyG4RCn8IsFbRdou9g21HbTjHSSKrLrvbQ+lSZaIaAVDpuQ1mF+/ZYKYMYoJOA5My7rDU+N5/Fj+PHcBHERswgiTzPDJY7XwEEVfXFF7Ytx+kfW81XUD5nSSrX/lQreECTjX7Td6JdheAMCQ5kSo66Hamy1EZQpQDKtBMjbLx8/RxH/VwlZ1c7iZ38HlmhY+wM7cFNGqUXSB2pXgV/ZJ8zgpSlvs3zs7SQPwj6Ijur9SbhaF6p42+5Z1vIOvcYKPUSmK0sBbBmYypMQoywX0YmO+Z+aFSBGFskJEvP21ijUQ2g7L0mKgf6s1aYg34Q5eIVEg7mZjzUMZw6fx/LAZKN9sYUPlZ1TLZzrdQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: a623e1b5-2457-400e-77ac-08dbd5eeff6c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:27.0026 (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: sN2cH4gGMn83mA8lqBqw4S3QHgrK9hiLqEvlpf7uoM5gsK0604n7ZS9CQbSVGsZve1aJIgJm0XV8ZYx7euKYhxrAoJCJTd2dRtAnNrX4oCo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5908 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..d0d8050887 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -4,6 +4,7 @@ */ #include +#include #include #include @@ -15,6 +16,9 @@ #define NFP_VDPA_DRIVER_NAME nfp_vdpa +#define MSIX_IRQ_SET_BUF_LEN (sizeof(struct vfio_irq_set) + \ + sizeof(int) * (NFP_VDPA_MAX_QUEUES * 2 + 1)) + struct nfp_vdpa_dev { struct rte_pci_device *pci_dev; struct rte_vdpa_device *vdev; @@ -25,7 +29,15 @@ struct nfp_vdpa_dev { int vfio_dev_fd; int iommu_group; + int vid; uint16_t max_queues; + uint32_t started; + uint32_t dev_attached; + uint32_t running; + rte_spinlock_t lock; + + /** Eventfd for used ring interrupt */ + int intr_fd[NFP_VDPA_MAX_QUEUES * 2]; }; struct nfp_vdpa_dev_node { @@ -112,6 +124,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 Thu Oct 26 06:43:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133363 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 ECDF543204; Thu, 26 Oct 2023 08:47:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9D90E42E5F; Thu, 26 Oct 2023 08:44:39 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2139.outbound.protection.outlook.com [40.107.93.139]) by mails.dpdk.org (Postfix) with ESMTP id DD17E42830 for ; Thu, 26 Oct 2023 08:44:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QGBVyIeBMMBGoummtT590jHM+DID838lo4vFyrlJWgQwxmMsRzUMAJQqF8UfhV/u2l0M10tb110Cz2Uow3FXBKBouAui8IiBExkPZZyUnThQ2Ay8gRxR9j3Mlg4b8dsnwe52CSfrINBDZKEIMLnjAM/sjNifTqXnmh72bbvuM1DZgqIzkeufjrKKzcye3GJvLZKxPB7vEyrAaervr18ejw4j8croJOwk5V8xuyASY+/2+I4zKrnFMwHWjwA1byDwpGd+TIGNqzCMGcMsyyit0pau+Yg9qgEqg0KFKSn3Q18AIFuydueD45rGcPBFpG6d0X1RmTZVxAmyyxdZYqwGdg== 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=EkIhE+6SUYsV+j9Cgqztz8HgRPhMNijBbqLxanMivEM=; b=Az4rvCCFT5q/SHZ+oZMKBiTtyVkfBaeGWapOgwuMwoYzPrUeix+To6NXjQsU8DIVA0hfg2kqi+kJM8CMl/GPsK18FJB2RdaVw9MItCTm1ax+pjRUqEjFQ/DoXFiHxL/AqURuDXK1mVHIzIxubKept27+z8BHWi6ug1jrStswjfhCy0cq1l7HoC4dVG/t/+6RYKtDY29gFrXrc2EKq8GyCRT4tXKxVTlOTxaPFRNCPduBq2eJ5GKZnL1iSHweYmX73fLXvzqwIHUlDcDulm9fUi3h2zXbOuPLKRQzefIst5bq+Z1TrmxtwHIKcnIyuPmY2YUCDs6vrqtXuLgL9jDFYQ== 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=EkIhE+6SUYsV+j9Cgqztz8HgRPhMNijBbqLxanMivEM=; b=diknU+2LEn7zOpTnBc2kzcIzD2dds7zWu+9rB0RdmpIk+Dh3BgkU9+I6+L/bj7DZF+KuLxBm7yIEU00cg3NY8DmWaMxqOnHsev1K5YoOi1Miiv9kyPFIxibKlIGQtZabzV1w+2y6mD/5Z7e11lpBrbvH4vpon8BWHmPs33hXLL8= 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 DM4PR13MB5908.namprd13.prod.outlook.com (2603:10b6:8:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Thu, 26 Oct 2023 06:44:29 +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; Thu, 26 Oct 2023 06:44:29 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 23/25] vdpa/nfp: add the notify related logic Date: Thu, 26 Oct 2023 14:43:22 +0800 Message-Id: <20231026064324.177531-24-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5908:EE_ X-MS-Office365-Filtering-Correlation-Id: cbc7d79b-65a1-456c-c9bc-08dbd5ef00a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gZfo4oaSwWdSCLCseWKO1SMPp39GO8JexZdhB4WvuY9c5PpnaYWdIgOCoTwftvAPMXz0B9AOpuHF0W3l3tRm4vUukSPnTs7wVeAkL5P+MqUMdJ3B1GvF55Jf5z98dKG1n99mDyUpyhhTEI3scMEyN6NdwMWnWAJTAOko1FNNcCYa96j1jhMdy4DxjSLON28rHTXZBI2Ey9X4q8GKynAL/JVCsvoFCXawWWesan7FVAU/U54Umu+f+xaK2e/PLGJ5wBUXTh/77xh8ybeODEKhWbnlzM5d6iaVuRLiV9S2lQ/viq7a2bPGswrMbRJVbPt68yiUMPcu8Ot36Yr7IblP2yL1qhL3FURbp881F7XqIWTJEJeyx5hH4FObhBibDdWLfcXm+TkW374Cd8GCAhfNhxxNHMYmTxNXtZpsIdtMcSWA2yef/C06rbZXcistCpBpW93NUT4WP0Uop5v41RovsySoTP/HKmis6DmpTqek2ocKQbNh26PUWMs8dmMPFD1I3rhVWu3i/xtJpqDAYzQDGakvakQSbigJH0Z5E8qhBfkZ6GKpNIDVBKV7Ik2pulUzH7ZKjV/0AH8mFeyDH9Q7SlQ8AzG686okbklcii25xlRTqOl3BfQpfgGwbPqiykHQcMk0Idv7C9I69KNs7UxWQyOnUsL8yMrlCHDoK57/D6k= 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)(136003)(376002)(366004)(396003)(346002)(39840400004)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(26005)(478600001)(1076003)(316002)(6666004)(6512007)(86362001)(6506007)(6916009)(66946007)(66556008)(38100700002)(66476007)(54906003)(36756003)(38350700005)(2616005)(6486002)(107886003)(44832011)(2906002)(83380400001)(4326008)(8676002)(8936002)(5660300002)(41300700001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HFnk2JxAvSZNIDyLc9L17CVxztSFpgR5Fk5x3YesBbWRoTS5+27ge96wui/hdrgMRZe44d4vzWc2/IEBJB1WNkUtULBTtM2xXJwjcPRvOi1NmGCZlF9cNdzzr4Wj3M/O5q1g4DOquc11jcj6joxERwFwM9ykghNNu1XZLqO8Bj7EUfkfevwZUo4JaRCCuKU0qDj70OLhN1SDUpreavd2s4OcjxoNWBshCCN1jG3Z8t0odEGRqreIWhwe141q1ekL8c5j6aVKmZE9BaWQXt6Fv6jQraI2sik1gTWilKMSuWHsOefxP2BS+3jFMEkrj7tkc6k284tJhJaktrwczH4igNtxIR+XLCJVisUoiUI6RxMxm/Tv2fiZFFYHzGdQr8Lb3UfKmV0a9y6R2c2tfrM0IaHOKBtlLhQVO7Fw56J+aeu5+BxD1Y9QbnNCx+XRVZpUxasI/7/p+UaAyGQd+5yXbcRTLHOE7SJ1MK+KjFpUeAAn3GWWSn43VmrWbcia3GdiXVfq11/1yuKGoT6csLpAE/j1Omt5cP9Mueg7oyq+0HjNqMICGbpfSXI3QTy2ygrxi2XYT8EYurW3LjNxBBEDFtpypyEV0bvwPBFkfbIoIKPaRrvCpf+7rnBO8FojQZdtiF3e2I/xY8FFFTR2O9J+u+tOEJEUASS14eZitVB+XuddP6gB5dwrdybQwzmJRCPC+o5e6LrD2iS60lQXimdh/dFpReGVL5Lms8CRb7P1wrJmw70IT3YAIOmP0W3m+mtxdI4kJfV1hc4C41STFAXRziaO8NUHXRY93Ve/LMRYpbqIQglHsppTq1Od8NV9YhuEEDmwbSNKKEiGlq3pcpOCh3G1RDASVulJ2NoAwstsfpAYFln3CCbzE/7Lz9L4Fb+E3d3qEHRictxAUCaS4tPZvXzgBBYLnObDBK++VBdmxb93JacxpjEcw5JHOFfdE0w+ztH3VDIdNwlb9LbvI7nJAPs94LEZiJvMJ6iH8z+AXbVeWonAkChgZjOK/+Rz156OAYgCTImZlBtk9n1ZvKnfukyTXQzxfE5dY51Xj/lA/gjhM/Est7mGB4QLeFaNWv4UBPBTh4Lv+BRQ3dMlWYIQP48a7e5tZzkGESAjy6jAhCMW0/dlw/T3EGGrvSv8uf5GNOSDFBUPvqbV54Bd1liQdjX9Aeqro1mJZ9ObwaC6J3JoMFlu2CXQdgqF+NbjxDaJU2KiOyHb/ZFnI0ae/ApM95uF4wyaDYSmZb6h8WWT+8ULJdcQPngROEPHxsmW35B+1038/E0p+TirqikaCdoDhjKle26J38IgmQxuU+fceCD0KEkz9i7GtQbY5NNe8CoeIliTpiL+hFKBaQ/GPRfjKIACUauARTybPvzAfNMRw0DSeM+KA6jMUhtZJcsoRjeePm/UpsCHEYScDXwVKnQMlCw8OiuSnrrJLEkcLKWfySyud0TE74+mICf4+bx4P+vQe00T8E3sB4YOe0PDArJZ2sDPFY0FnFM7ZVgELxEhCl4NNWqp+GSDgLgQje4+3skvn1ANpeeJPIxn0LVQgx2q4Jx5DNAu/DpSTTnx3lU8umEV+gPfXhGN2lc5y6xlbxCyoBBMuDbrZpE6I1yseyuTHg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: cbc7d79b-65a1-456c-c9bc-08dbd5ef00a4 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:29.0583 (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: W++l/uTSmV9TJCNe7+MiQr91B8e1e5OEuh80Omu8gQj7SZgGMCodFO5jtiuJqN/VRKcKXDjRXHo2//4u65iyneHTntL5mOcJ7G/Hv2vVB94= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5908 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 d0d8050887..f4d63b8ba9 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; 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 Thu Oct 26 06:43:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133364 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 8A80243204; Thu, 26 Oct 2023 08:48:02 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A3A9A42E62; Thu, 26 Oct 2023 08:44:40 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2095.outbound.protection.outlook.com [40.107.93.95]) by mails.dpdk.org (Postfix) with ESMTP id B8A7542E45 for ; Thu, 26 Oct 2023 08:44:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Evshyel0061qXjhE2wvL14JxzTEK0qdp2xNlYxtdsKrpRyEVF1FoPX3lQ2UnkMQkjGhnUaEtH1UqkuKdFkHFDgWgfFih1N5VWhYDFD8RU/DM8iw7IV2VsBrEqLREGQ7VTDe0nnFh1PCPbvqIUoOUh7rYg3jy7FljY9WrgmwtSXAXQDlAW5Ihb3fJhyfmKdBEbhbSIxOwpS1AcP70oAFQ7DpHbCI+Fsiv9zUkRPMYr5tJTIYMPd6w1W+C1kDd4bcSkNSgfnaVhq8SDbOFXHkQEeMdacZAstIoyloWpV9EpWfwa+XDI+AKDJUwync+QtCNrtE5nmdq4v96sdyfuhgi0Q== 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=wiURsf+vlS538RAt2eNSJjZmTmEO4kYbx9XWM297ei0=; b=DfCNBSzxBwgSU3hm/JG1GEBe+MaY1mneScmX+HSaPpRsPWSv7yV3PbG9q+zMxFhavwBRpNYcMV0cQCvqM5Fp3Gk2xtp1Rio6D7q5+qxiu2m+YJEBPJvVihHuRWbCnYzi16gPBTe6qNYPG0DeNAw03kPzuY+BqJuqwoU839OnFvIm6lv7ZoWEq9CG+kDKXOCPJorco1o75XyACkMc3phqL+COvIjESfCPqDPEtrwHh+G8sV481ba8I/5q7j1572WTCL1JQNTgUIE48+tg73WDE2O2EvV4U+q/MIgY9mTfeVmNEPv6E6I1Tib+6h6Kr3gIkdD2eIF+zivlNtwR4ZseNw== 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=wiURsf+vlS538RAt2eNSJjZmTmEO4kYbx9XWM297ei0=; b=cIyX2dIIA/eZeMYAhhHg0DGg+eRA8y+gB78fec7Jh38oH4G6M2PEmjcwfj3z4Ic4a4ONXsk5RQkjBCa28ZyHnysh1JLvWiy3zeedbDyskjyo1qjWYwIanQGkYEtdgxnfaCYeqsASEe9IXpagI2wFxr3MH2t77sD8k7mZrLM5X+Q= 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 DM4PR13MB5908.namprd13.prod.outlook.com (2603:10b6:8:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Thu, 26 Oct 2023 06:44: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; Thu, 26 Oct 2023 06:44:31 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH v3 24/25] vdpa/nfp: add nfp vDPA device operations Date: Thu, 26 Oct 2023 14:43:23 +0800 Message-Id: <20231026064324.177531-25-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5908:EE_ X-MS-Office365-Filtering-Correlation-Id: ded28d47-8a03-45a6-bf61-08dbd5ef01da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XWADqd2Qm9l9xCwDAlwYtoq6Lda5EgoHCsfnh18f4SVgCC2HpTfuJxqSvHTBvmJ7ZKV1dTYdziGU6ulMR0lb1H3Aq54tzuO8f8VlDvh3PH+alWVuBfCOFV8ue1sgZJE1aoT7OXNhWsgefGd3MsLjVm9YZ9Ks05HH+l3BAdxF2SYoAtCXXuXvVpfBMd0Ulhd06LoCysrszedQlTzBVe1EPAainNFjTNc3ik48JgtgOqhTsOTDV4MtE53qUcgiPR9dIQBl4YmznhYzH21VcRb+7tuR2UitDYb+F6Z6Of+T68DJ8tlv5794zc1kyki1pFmrNj4HJwzohVeUZO4RAEslhG7jQisQPnbvb334vpI9PqWlx8+qHB9guNBmX6Ko3BfN/d1xXbY7Q23bXLWSt6L8bzEiGNOkszpBQocNO0ujarSpYZ0lTdORa22+REKOeGwZjXgMy7c+/WbXncYAy6jy4YN/T/txZkPSvEqJRubzVgmxAWVeBbSgntH3XTFFUYPriOOu7ZQlHbKWC5n0LwvDEbp6tpllHruWUoIOkAxd454AbOwM3ySUz4MOFwVKwoSIN9q65RlRtMzyfPvzY01A/h9gSkjmEb0RlqImodFJDZxX48BtOhqx5V1YOaO2BUPunMNXy4Dc1kDIDgDaRlOnMgk7rEiRFKqziPwJvj30A+o= 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)(136003)(376002)(366004)(396003)(346002)(39840400004)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(26005)(478600001)(1076003)(316002)(6666004)(6512007)(86362001)(6506007)(6916009)(66946007)(66556008)(38100700002)(66476007)(54906003)(36756003)(38350700005)(2616005)(6486002)(107886003)(44832011)(2906002)(83380400001)(4326008)(8676002)(8936002)(5660300002)(41300700001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: F+RFApoOU2tgAepzUUwNEnQ48FR83FBcPAaDhP8Mg1wHuYTaPpPNJN/NjA985lgdxZf/omhJtZyOfFP4kD5zNXGPDPyf932d+VEhQw2k44h/rXAOMxEIyX7TmubHo5P/bHzFHRWFN+4TMZ7BiyimH25g86HzHlL6crRS0lJ18D+dqmiBgwu4yBWgU7wzJV+VY6lUBRcUE4z3F7IrJ7q6HiTFq6+ldiKjx+pam8Urb6jeGgfCp1DyZXY6fM3OORBpvyHyDxrLEBHqSNmP1MsgPgy0T91yBVT9udK77O6jOo0/x9HDxLAKk7qIDAdy/e5wNdG/J3L+P9XiL92qrlilbnypEuxpHe8UMoOGvo9kLK9SahVnV3/+QsbdQjB1dcPlxwrkjDyy5Ss9qiq/RurjK9wwb4ggfGdBgBbFHtf3zNCadhY9dOw+c2JJuE89mwTblZXkgJCABPaYokDH+EcOz/o2iPNSPgPnDkeoailx2aGyYFaKThDZkP3p2Okoz2fxL4tueUNNDo9V+JA1b5MxWQIJ1gplpjIEyQoZDtLckL1/BZvkvDkq/+wd0xYxTki3V0IO55Mow+gHEASVdalhYUcDgX//FNNnBqQeFXIwW/b1XNtwwjNQosmE0WnJjizfXN6dcza1s5vZmEiD5+ukp+SfFHur4i7nWD6vddXXQkQrqArrZpryX5L8pR1K+ciEqQBx3PqtoPJGehGVF0UXi8NMqE5Hi0MIkLGeruM8gUcQTqOyp7dwvOAFVKnvaJw/+wkw8uL5GI5EE2WfUupylOHWj/8CrGsNPyWDdX0wnsirns8i1lwJiEhIDHuJNjiMQOhbzDyz2aMXKIUHp4Rn+Os/Zmzrs3Sgzld4jYuzUPdGKwcQNhp3jobV0j21X69DcISzHOan8ufjkjIonZ2M+xx3vD8dAftZ+l5hQ6UlsIRwTYvjX1xv94mCeWGv30KPYZEYe4wPPjrVLKVxOfgUo0OMJqZUjNAfTSj0r7sbSGpC0+tSuqSrmtSRV6n8UnqZrDAG5cWqCmCcjb4lXmSdsfXwbrtn/FuC4RtRsEVayz74/X2T9EQN2p4xEqnQXkC50uUF2wzpCgD8ustnHrzEqJxoegWGG/JGNqwJFM/5v1ipYn3o7HnhDQkiw8rIuSO3v/vHwcgfzd3MUZsJ0BpzPK/rwgdtlTDCYo5CW1CYIHs/J3McxcK7h4BZSSv91ZzEWpRygofpXt9lNAJu8xFw7NkYBLnhxyv/M/9mMYHHQdITPNX1tnT7OQJlME8Kxrntv6NdsK4JxyvOLe+ICoLVZyWPvMFrJmDx2h/Fcf5N5iiAgSWvqeH3QahQrlSnMCEHYd+iXF3lTLIbiWUCD6XJSrsSQVBrvwf8CsFiN7w4aCiPtPcUUoHc2RuPiMboETGfHqmjiKOaPBRK1lAaA7tVXHM0n/WHMXJMDnE0pavrS0565qeb9cdHR0RxhZ0seA/fdhOfw/Mj5EoQBVoTIQzm9oRi2x9d/ZurS1SsJ9s9elqja5o4vRuL6rs05qi2JWaE81LRRaVFMQXtpccQsP/kkjDV0Ol4mTanxG42Dp3fUL8A5FGiEfKfBsaVvWba0R8jL5SyUe91biPD3cbKpKs3Eg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ded28d47-8a03-45a6-bf61-08dbd5ef01da X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:31.0810 (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: 6uqOLo5bIgSOlbpdLeL5+DO2acD/6kr4ZrYgASf0qk+vYvG/CfMD33ujokOoQDZKVsnXK3argahNXMcjicyt00Wm9hVxJOdGgKpBrzqPsLo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5908 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 f4d63b8ba9..181fee58c2 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 From patchwork Thu Oct 26 06:43:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133365 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 2BD6343204; Thu, 26 Oct 2023 08:48:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AC8C642E68; Thu, 26 Oct 2023 08:44:41 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2126.outbound.protection.outlook.com [40.107.93.126]) by mails.dpdk.org (Postfix) with ESMTP id 795C942E61 for ; Thu, 26 Oct 2023 08:44:35 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=euzQHh2dMbrmnGFTnOVzW6lFzpJzf5oazQfORsiugaxDO8pXod6eyeGgHC0qpMxQUySuFJSYS/BNZJLG/jDita8JAJpG5vpb6+9moiYbQ7r4SNyJygm98WgeTqjgphyoyM0AyWkyoeUfJfMZYUChjd7ZmwhLIsnlAdaX4dyv4baexvjpJWFJvTGEPE3+2POAwv1V4/tJ8AYkKjwlAGyquz62+GjzITQSq2Xs/aYo5Bm3SvCcaXCL7LhHJqiP9nh41UuunNnC9I5Z9qr5nhiqL/QQ5Y5dOu5RkIynbfvYZK/ElTlFYzx1vW1utBWUlQhpfvuTPyBK8SYdl0PzHu6LSA== 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=JS7WM1d828ZKijVvSxMz5Io8kPPsBhpfnA4H+WGep38=; b=MmX1nqoMgBmL/FGE1lwnOJlDQnZNb5+wDsSbOrh/BFIYgnmaF8qg4ChnASjykuB02DDpYeLUqnP0nua6PbkO3p1GzhYKAlSnepPzX5Oe3+fKI63emaNr0Y8CgZoCMUzcCJA4SHDsVOmLG4x33jLVsuFq9qM0etpQahdOutX5A2OZUSJBDxo08KFCkqxqEGfGc0pVlVtqaQunJkkeI6i0McKA/h5bpQeWc+gZEZByYOY/7vOVUol1T2Uyxqj2ESb9Ry7wMR0SqveyLREIdrzs990kKnQtEBjBa0BgiESuBzJIKHDMbVfwlchqC327kaziFALEbXJTTNChbhF773PCRg== 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=JS7WM1d828ZKijVvSxMz5Io8kPPsBhpfnA4H+WGep38=; b=frWP2ppYndCUb/QgIOPDvUVXfTtRicJFPC3R1VGLJd1BcfafpX6OPNIKnBdT7jZksRAo09jVo6AzCGB6on1DKogwD/R0ylRxkXhVXPCH5JqDnADTV4qE8gfyNP47OS/ZgZlIPanCGFuUMb9PqCUGD49Afrvh/YZlDEYawI3lhrs= 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 DM4PR13MB5908.namprd13.prod.outlook.com (2603:10b6:8:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Thu, 26 Oct 2023 06:44:33 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Thu, 26 Oct 2023 06:44:33 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v3 25/25] doc: add a entry in the release notes Date: Thu, 26 Oct 2023 14:43:24 +0800 Message-Id: <20231026064324.177531-26-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231026064324.177531-1-chaoyong.he@corigine.com> References: <20231024022849.3092506-1-chaoyong.he@corigine.com> <20231026064324.177531-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR07CA0034.namprd07.prod.outlook.com (2603:10b6:a02:bc::47) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5908:EE_ X-MS-Office365-Filtering-Correlation-Id: 86907a7b-d2b3-4c9f-1222-08dbd5ef02f4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6bDkUr+Qa7TkU8mwejaA8tHj05s0I55lZYhrDcLYUrSyy1wvsLKzHEE+WG8c6CbWwpzAgGQZD1mS4VH64940ZNRYI6QGORBWgwr852Cl5h+yf4k1dV9UqEokOvMbZ1VRbseI4HCFKDgLrS6G+k5GzBSzEcP32ySJrl6jrXe4rRiyOkOpYnjkWwAMbk6kUgRajfNowBcnvYPmuoyuyRqq+k3HTJ/lTW6xuDfD1Df9DKv9rkK6xqjsIlHQvl78erBHjxTQY09JEtwPYqBCCwgCLrtH808DAgvppKN9q8GjbUlEgwXlAEnBqFJb1MYAkSOiE3zM3MGN5WxBKiffBPs3fg1ocRPcyR11fbfHiFcfuHvhLiE5TCo6URqg+mEQ4ac0zfI6tU22uj8D2mkoTHYxLI4dOE/lT6gpSsKDwWJQ5G+hnmsaXDsRSh4PhFv+D3WzVRweRg9FxKCT6tE8pgQJxmueKtSWYc3qQh6V6+bgYHxCQZuZiCbv4tu4eBmcA2naaC+O61dZVcsJ/0U+zd+ijqpik5IiNKwllBwAND2KqVryzpenDYxuilveiSB/nBDGeJiwhIMCUoJLpuL2JbxcGCO2AOGfWWVOW7lasm+CUdSfjGvIuhki5tkDsNMRXSnNki+ovcD1xCBRJipsAirwewqTWrT9UeS3sGyU8+dA8ds= 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)(136003)(376002)(366004)(396003)(346002)(39840400004)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(26005)(478600001)(1076003)(316002)(6666004)(6512007)(86362001)(6506007)(6916009)(66946007)(66556008)(38100700002)(66476007)(54906003)(36756003)(38350700005)(2616005)(6486002)(107886003)(44832011)(4744005)(2906002)(83380400001)(4326008)(8676002)(8936002)(5660300002)(41300700001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: oS3dZwl1LCTVTIX6b5kFmm49I88kgT8cID+fUuHHxBpTitoPCWJwYs+N7j4JuR/tIPF5HGuRF9QZwxFOPRq38yGzp1bWLcVfZKJjOgSg9U8CHlmeJZ3jx1KWkPvwdMmjvvs4gDAwnCg/t6zq+7bzAjmGndW9ZZ1wFXur6NiS/yF7v819tgjc3T+LrQnU0uvuLhnasLOiMQh7LlVksvPmoTfxF6RJMnjc9nSzcPjujhsWgqfSSanpyssJrieNDrMK5a+PH8f4L8s7bnfoZKlVIMWKVwuA2olcktM8yDuGj3H+1LU4RzFzHF/BNqcVnYwNKQxqwSUJzDqmsz4qCnDpZCrFqqMvs326zk1zOz8oyX23XJ8qwpzgTzbdoRk6t1Q/xWyY8QiBIQrgBqNG/c6WKrYolr7BgMSt5sKXUq4EhPtld8Y8OyPXZJgwGBGpjZbAh2SIW8Yjf7tMwgtqyElkVsSkzbXqJ0WPi5ag6784Lk7aXlYEVzUMsW5JQcS2NuW/l4y9/oMdVIcZRJGyubteKZXRdQ6ZhWP+7dQp4X2o2FXB8bCb56u4SAvPrOYk9Tadv2lpWzdicbs56oba0E1i3Cl4oGUKTWIAFw2WDEsXahC+1wGSNRjiu6ljl+6Iq9MvMr85DuNI1Eex+uwxh0Ot7RIHpB0lOSPyzwoKmL/UOtJMZC+YpRojFSEJ4fno33ob0OxrA/r5JmzEahTIVZQRcS5q04FHxRNfPRP9SQUUf7nq9RGo1m1RCBAbvaTHJaeBtaL6V3XdoEiJhSFSZ/8IfvCUGGByhtAdjnxTRu2TbHoJb8jIuXFOcbTzSwNXx5D0OCKUkSloUFkZrmLsgnlbJAFwmVkk6dZHTTNCgYqPoigFeKUs/vDYI8y1g2H9TWAgJ/Mtmv6w0dxe9opUCiXvqGUFj68q4gjY36aQZqkfHebcN8OxatWVwQowbo1nvhyecdysRtgHXWYSatP/hWQ11a/PWGVsOb0rWwgHVVeats9F2YBtRcp9WlWmmZkVuYGjLNXHbsViySG5rLgR9Xpx+fH6r2Kx274U6FX9qvNYx2H/s/u6jzQOvboR6A3XWMf1Lsj4+u64ewr6wgS9DNB4GT78MM7EFQJBfyu3Hi1iPi8tWGvUdBdhB3v1G1X4bIHzai51xG32S+y4NvqThgmQOLQcdzGw+WO1mK5ASBtu4ZmwbaPfPaGAyin6sSmfwB2GwHzSP2FkU4HPUrwFXl8j2AqebG1gmw922+58gcRmfZv/a9uYyYkxf7LQWXoZyjK1EnI1GjEwp7+GxQ664Lx4GSRoSL/GWJj021CIk16PDQZAUnT6xKcn/uFtqXicvb/LKgysMm1FdNgYYitkG9CfwC6VmCreSX7ZwUhPjbfyN4F6DRW+uikis8yjhCdsmP2640hzBPjgRh7oMhgWX3mPUQ4F2twXh6ILr+PH+Nb4wMHgnL3464Smu5UqiGDd7ccHQ/R4NDFF+rW1SS1dZsa54T5vVCNx3lW39mXSA0jNUQjyXqMVkm3lyrxQ3BUmwX+dimtlg8gQlfEePQKj+f5HoGVIpq/I4Q7IxlXcylJP0qtlX/dqMGmzGl6srjAR7M7S+6mSzPJNYakZaKmWmOEvGg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86907a7b-d2b3-4c9f-1222-08dbd5ef02f4 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 06:44:32.9489 (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: 3SvAZ4arX5KK8nr4WTiblRd+jmCZgg6FAT6YzDE5Yzb6gKXS+QTWL+Eu5hmtrYtVysBaWohXBSatz3eEz+M78n6XGvcitqWoFrTUD+kf60E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5908 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 a entry for the NFP vDPA PMD in the release notes. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- doc/guides/rel_notes/release_23_11.rst | 5 +++++ 1 file changed, 5 insertions(+) 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.