From patchwork Tue Oct 17 05:45: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: 132691 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 5599443186; Tue, 17 Oct 2023 07:46:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5C47840689; Tue, 17 Oct 2023 07:46:10 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2109.outbound.protection.outlook.com [40.107.94.109]) by mails.dpdk.org (Postfix) with ESMTP id A8867402EB for ; Tue, 17 Oct 2023 07:46:08 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X8dp9FDAVVnKeany7LLMlUVgIuGjH3vD5OxkUjJGU3T92fRvW6gUIZV+N6ZU7R4R0ZPh2Y5FWPMaaImvEsPvwd1uKago4pKgYpO3RqOMncfoUi9zVoAmTQmh50jEqjz6kx5QK9jeO2huRit7uxybqX10PShCMA62ux7glCKsO64JXRDZKxRzjOYSuTM04Vs4IRbWyXBVEYiIATiwPFkL6Vqoqd6yqsb0e/LhSvoERZJ40z6JtUlzkiz1wslYkOGsxLbFzFNfvGM+nzRV3Au/hlxXLkWEjEj7XrGB1tFuAvKPJWou6TL35slxSVMKG6/6pLDOlv+CgIlZjvPNGRm6dg== 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=E2ocXth2s6uK0EpcpnmZro/S9Gk7vc97jtsCGP+EeSk=; b=Vq1mIjRpGOg2nluf4vczyorKf+VetzrTdRLCfHLHS/n3J+FoCanvaqrnFAI9JzoNBLadxYpV6QyfIz6uahh8QOQ2toFa3Dqio7FL8GOW2SHoLbiaoPP9E4RKy4oeQF3TTs+2uiUh+/pEIvIm7Qc32m5lXudS4Ak4lRpMdMLRE4yQf8OVaBGgYWc8pc5oETSdVTNlaErAnBTp2FZPIuzaqRKYVgQ5UpsMmB7iaTqW6wFVHaA3MCu1ZHv4k0GfDxWAx0uo4IyA5NJHvEN39Pv+F1TyFd/00QbTk7Tp8dui+VowPlfVlnRhtOszJGaE4n1m2yknMcCe1iOveFMHpo7yZQ== 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=E2ocXth2s6uK0EpcpnmZro/S9Gk7vc97jtsCGP+EeSk=; b=dY3KrrlbKwwohVyjnytyfDVarLOfnyEd/WTYBlaI9kD88ZsAuUwrtoDCSyorDGn722Mr9h2RbJQ/Haj1gMBH/2YIkJWD3tOagN3p+Dzm8P1rmBbeW179WXOhI39dBhb1QsZzUyS6xa4JyUTbMMvv3M1p5uPU+9qwRucLnaiTht4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by SJ0PR13MB5272.namprd13.prod.outlook.com (2603:10b6:a03:3e3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.46; Tue, 17 Oct 2023 05:46:06 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:06 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 01/25] drivers: introduce the NFP common library Date: Tue, 17 Oct 2023 13:45:21 +0800 Message-Id: <20231017054545.1692509-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|SJ0PR13MB5272:EE_ X-MS-Office365-Filtering-Correlation-Id: aa4c78f0-96b5-455e-5d5e-08dbced45b29 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: g9N59VtaP3l+CkmDi46p3Xdww9T5WIC/0QEyp7jlYMipu5zhIQpPvBDAbqzmLrbfC2MtnnG5LMv0aFvMWvNIrXdr1PrULU1yvxfLPMOjklsKeAa4gEdilF/0U9kipQs2HDJYinXbzHrhWMyQFTsvgSlGsc7GY1/rFZzcIAA/FB0u+IgRuyHaACXQi37gsQ/kokmSvZnDzZPzLFb62MC4lmtIiaN3fUXTRDq5aTCnbm05nKT3nOjR82Trk3am7Z1FnoQHHcpkfZ2prPrJVZi6ulOcbRqC1Um/laTIqy7HQo4SI1U4Oh8OMkZ0Jsvp0A9lf1vHqNKxT0KI2sAH8pb2mkeXbJpmQ7SGJ5oZk4DQfvIlHXf9D6ilPDqBIbs9fhrRu4vZpKQCSpJIvLjzamxxfIk6x81XtjwuC1c6Phvj2fq1Z0OUgh26fztBgOyrB0piyAEdOj6ZfNdjhs6KO53BPOVI+CBV+DrXlT9yYxFvC5pNmsfKM56fPQgSOgOME/emlNTwj3X+UP9TV5y/t0m/4RR7mqEywJkW2stB6WuBV9oIBHRljNcGGg25TlUTv5I0iqWKEmKKEr7SuzE7UjV4xoNqNQ/5o0qBe/jXptq8msTqyPje5ZyqXfELzVhbus81SPl8AtEKRvcjFTUwGTZ/DWjMtIJY6EYupk/Ezwu0sHY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(376002)(346002)(396003)(39830400003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(38350700005)(6916009)(66476007)(6666004)(66556008)(66946007)(6486002)(86362001)(54906003)(2616005)(83380400001)(478600001)(6512007)(38100700002)(316002)(1076003)(52116002)(26005)(107886003)(5660300002)(30864003)(6506007)(2906002)(4326008)(8676002)(36756003)(44832011)(41300700001)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Dvge/92TphdIZMXcknAz1InyXpOqIx8cTe6bUG8CoYIzi30soHc26kdJj5feMTGWY7iVtwatI1j49Kjs70sRxe5rbrmxkLYjca+hf25UBeeUkbKy24TzQq4BcZHxrkGzLlpQA+A8YhlIMRH+poyX8shO6OU+kKkMFlhiAW0SbcnbO1cq1EkvbaJsKqfq85SwkwS4dOEbAq6AAOHLVd/SKRPCytYbsGpdBldQYHYZ49CmvBCOj7aDmaGZF/qYBwhTuz4mn4Je/99MmxO4hIM7nqCSrl9ZgALWgOBod7NZPLUPPxzDYNcMKqQnyv81ClJnc8w1HeXUNOCq4ExJktAKPUpfdRqE7qntFC3rCk5zDwfE2fXJLNb1jmSg7jzSdHf1IMrLL6aZ0oYFYl9acZHYFQv66rZprDU2b/x4+kTT6y5+LaE6mP+dyLZk574DSzMWh4ECFFUHF9jBWdzqg/zzNGJr+Xm+Ti+j6CrNNnPORLjMzF4pk+4IWiqDdKtwfg3m+947uQKE6ligCyu03D3M6rJkTZHlClX46mGNzfVEVZC3qzCALe8RjR40wUxcVbmj4piSyzLD+PdzD4QoVOvizfCdMcqAwdzFvgEPJrOtINVBFtJAjfwGdhho5kGvZtxz9IdxA5Ntbfhwu7GGjW0eKj1K5P0kKOwa+UaE/kI8q2qXSH9qX1iI6hGGrqKkRzUV9PezyQEJUU0Ebw8XShKYqncLsUozqC9EDOZwSaA49FidSVC9Qu+zc9DzBczOax61g11ahNxEX0v4LPNfv0Tk3xpv/HBvx/Z9H7RMPu7giMelab5Vg2i0TQCk4PeXBW2PsREnlJTczIp01xWfyEFoGpfjFtHOvNbxDCWcb+RW+d5g1p06OMcqXih3Q/Qzm6KOGYZgK5g2g96nSfgOe9fDaAgBtXOamQa+j+YK88b9PDuflJHDvbB0lw+f3KX4qC7MRW3DDspD/rN9WRbrYMDMXCTjjY0wPAzFvdCXgqOyhmy+UiI9YFXzzdQaY+uAlOpZydiETkBkU5FwpoLfI5HNcxDzjoYqemMLFwsvThZXKbgtWXQ9YQQKs1/zaXTOaHjCWlp2+OxTfp0EWSBFMwyzpszp/VHfpHEEwL8RwgRlNw9La63LzZxccN/DYV1zfxClQhVX4t6J8R5EWiVNerBmgdclg1FoFzqGG0PxMmAJgA+yh8L+rGgw8KADAiWPrOWqj4oFCnu7zomRxEeK5RRAnNYHFdERMk7P8PUe2RvN1+2th8n9utar4T5NIqiVEtQRnZIf1VxM/mL2KcytFcBxYXZwkV1bnpOQ85ysRrYNKVcG+JstYmqS0wZmbKVZB0QGIgczOSjT+W3mm/75TxnHbnaF1VT2xQo5XdqdyoKeVF56xEqJkzP6AvHUGmH+yosF7rhu+R5jKH5GyTrDmwHflFo0w9kEGm6hJazv3/V8pIGzBvqZjjuxskAdcMVt1K1OIW9MS62qujIswTRHKk4sPb9ScGyi3ie47UkyL5d4uvpZHEozlnxPFIdoyfncHa7SrD6arjKjFbS5SlLSp0VzWhKg4XtT63/EWf5JRPiXVoy6a4tcXylNxOeEaSvRbfFupw7JKnkdTpf6f4TrYrWGzQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa4c78f0-96b5-455e-5d5e-08dbced45b29 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:06.5942 (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: D2LJsmVgregod2exzqBZku1Lf5TGN6qMHGb46+PpLfV7V+gOpQmm+DDIhhnFxxFoV2DEYf1nQvsRPEz6fUDKwDH4e9/twjoaHkRcHAN3gQU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5272 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org A new NFP vdpa PMD will be added to support vdpa operations by NFP adapters. This vdpa PMD share some logic with the net/nfp PMD. So create a new common library in drivers/common for NFP PMDs. We import a 'nfp_class_driver' layer and which can support various device type in addition to the ethernet device. The shared logic will move into this common library in the following commits. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- .mailmap | 1 + drivers/common/nfp/meson.build | 14 ++ drivers/common/nfp/nfp_common_log.c | 8 + drivers/common/nfp/nfp_common_log.h | 16 ++ drivers/common/nfp/nfp_common_pci.c | 274 ++++++++++++++++++++++++++++ drivers/common/nfp/nfp_common_pci.h | 44 +++++ drivers/common/nfp/version.map | 7 + drivers/meson.build | 1 + 8 files changed, 365 insertions(+) create mode 100644 drivers/common/nfp/meson.build create mode 100644 drivers/common/nfp/nfp_common_log.c create mode 100644 drivers/common/nfp/nfp_common_log.h create mode 100644 drivers/common/nfp/nfp_common_pci.c create mode 100644 drivers/common/nfp/nfp_common_pci.h create mode 100644 drivers/common/nfp/version.map diff --git a/.mailmap b/.mailmap index f015c89db0..3040a26609 100644 --- a/.mailmap +++ b/.mailmap @@ -1299,6 +1299,7 @@ Shuanglin Wang Shuki Katzenelson Shun Hao Shu Shen +Shujing Dong Shweta Choudaha Shyam Kumar Shrivastav Shy Shyman diff --git a/drivers/common/nfp/meson.build b/drivers/common/nfp/meson.build new file mode 100644 index 0000000000..45871dfe35 --- /dev/null +++ b/drivers/common/nfp/meson.build @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Corigine, Inc. + +if not is_linux or not dpdk_conf.get('RTE_ARCH_64') + build = false + reason = 'only supported on 64-bit Linux' +endif + +deps += ['bus_pci'] + +sources = files( + 'nfp_common_log.c', + 'nfp_common_pci.c', +) diff --git a/drivers/common/nfp/nfp_common_log.c b/drivers/common/nfp/nfp_common_log.c new file mode 100644 index 0000000000..e69e608eb9 --- /dev/null +++ b/drivers/common/nfp/nfp_common_log.c @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_common_log.h" + +RTE_LOG_REGISTER_SUFFIX(nfp_logtype_common, common, NOTICE); diff --git a/drivers/common/nfp/nfp_common_log.h b/drivers/common/nfp/nfp_common_log.h new file mode 100644 index 0000000000..066e38e688 --- /dev/null +++ b/drivers/common/nfp/nfp_common_log.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_COMMON_LOG_H__ +#define __NFP_COMMON_LOG_H__ + +#include + +extern int nfp_logtype_common; +#define PMD_DRV_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, nfp_logtype_common, \ + "%s(): " fmt "\n", __func__, ## args) + +#endif/* __NFP_COMMON_LOG_H__ */ diff --git a/drivers/common/nfp/nfp_common_pci.c b/drivers/common/nfp/nfp_common_pci.c new file mode 100644 index 0000000000..1aa8dd4bbd --- /dev/null +++ b/drivers/common/nfp/nfp_common_pci.c @@ -0,0 +1,274 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_common_pci.h" + +#include + +#include +#include +#include + +#include "nfp_common_log.h" + +/* Reported driver name. */ +#define NFP_PCI_DRIVER_NAME "nfp_common_pci" + +static struct rte_pci_driver nfp_common_pci_driver; + +/* PCI ID table is build dynamically based on registered nfp drivers. */ +static struct rte_pci_id *nfp_pci_id_table; + +/* Head of list of drivers. */ +static TAILQ_HEAD(nfp_drivers, nfp_class_driver) nfp_drivers_list = + TAILQ_HEAD_INITIALIZER(nfp_drivers_list); + +static bool nfp_common_initialized; + +static const struct { + const char *name; + enum nfp_class drv_class; +} nfp_classes[] = { + { .name = "eth", .drv_class = NFP_CLASS_ETH }, +}; + +static enum nfp_class +nfp_class_name_to_value(const char *class_name) +{ + uint32_t i; + + for (i = 0; i < RTE_DIM(nfp_classes); i++) { + if (strcmp(class_name, nfp_classes[i].name) == 0) + return nfp_classes[i].drv_class; + } + + return NFP_CLASS_INVALID; +} + +static uint32_t +nfp_pci_id_table_size_get(const struct rte_pci_id *id_table) +{ + uint32_t table_size; + + if (id_table == NULL) + return 0; + + for (table_size = 0; id_table->vendor_id != 0; id_table++) + table_size++; + + return table_size; +} + +static bool +nfp_pci_id_exists(const struct rte_pci_id *id, + const struct rte_pci_id *table, + uint32_t next_idx) +{ + uint32_t i; + + if (next_idx == 0) + return false; + + for (i = 0; i < next_idx; i++) { + if (id->device_id == table[i].device_id && + id->vendor_id == table[i].vendor_id && + id->subsystem_vendor_id == table[i].subsystem_vendor_id && + id->subsystem_device_id == table[i].subsystem_device_id) + return true; + } + + return false; +} + +static void +nfp_pci_id_insert(struct rte_pci_id *new_table, + uint32_t *next_idx, + const struct rte_pci_id *id_table) +{ + if (id_table == NULL) + return; + + /* Add non duplicate entries to new table. */ + for (; id_table->vendor_id != 0; id_table++) { + if (!nfp_pci_id_exists(id_table, new_table, *next_idx)) { + new_table[*next_idx] = *id_table; + (*next_idx)++; + } + } +} + +static int +nfp_pci_id_table_update(const struct rte_pci_id *driver_id_table) +{ + uint32_t i = 0; + uint32_t num_ids = 0; + struct rte_pci_id *old_table; + const struct rte_pci_id *id_iter; + struct rte_pci_id *updated_table; + + old_table = nfp_pci_id_table; + if (old_table != NULL) + num_ids = nfp_pci_id_table_size_get(old_table); + num_ids += nfp_pci_id_table_size_get(driver_id_table); + + /* Increase size by one for the termination entry of vendor_id = 0. */ + num_ids += 1; + updated_table = calloc(num_ids, sizeof(struct rte_pci_id)); + if (updated_table == NULL) + return -ENOMEM; + + if (old_table == NULL) { + /* Copy the first driver's ID table. */ + for (id_iter = driver_id_table; id_iter[i].vendor_id != 0; i++) + updated_table[i] = id_iter[i]; + } else { + /* First copy existing table entries. */ + for (id_iter = old_table; id_iter[i].vendor_id != 0; i++) + updated_table[i] = id_iter[i]; + /* New id to be added at the end of current ID table. */ + nfp_pci_id_insert(updated_table, &i, driver_id_table); + + free(old_table); + } + + /* Terminate table with empty entry. */ + updated_table[i].vendor_id = 0; + nfp_pci_id_table = updated_table; + nfp_common_pci_driver.id_table = nfp_pci_id_table; + + return 0; +} + +static int +nfp_kvarg_dev_class_handler(__rte_unused const char *key, + const char *class_str, + void *opaque) +{ + enum nfp_class *dev_class = opaque; + + if (class_str == NULL) + return *dev_class; + + *dev_class = nfp_class_name_to_value(class_str); + + return 0; +} + +static enum nfp_class +nfp_parse_class_options(const struct rte_devargs *devargs) +{ + struct rte_kvargs *kvargs; + enum nfp_class dev_class = NFP_CLASS_ETH; + + if (devargs == NULL) + return dev_class; + + kvargs = rte_kvargs_parse(devargs->args, NULL); + if (kvargs == NULL) + return dev_class; + + if (rte_kvargs_count(kvargs, RTE_DEVARGS_KEY_CLASS) != 0) { + rte_kvargs_process(kvargs, RTE_DEVARGS_KEY_CLASS, + nfp_kvarg_dev_class_handler, &dev_class); + } + + rte_kvargs_free(kvargs); + + return dev_class; +} + +static int +nfp_drivers_probe(struct rte_pci_device *pci_dev, + enum nfp_class class) +{ + int32_t ret = 0; + struct nfp_class_driver *driver; + + TAILQ_FOREACH(driver, &nfp_drivers_list, next) { + if ((driver->drv_class & class) == 0) + continue; + + ret = driver->probe(pci_dev); + if (ret < 0) { + PMD_DRV_LOG(ERR, "Failed to load driver %s", driver->name); + return ret; + } + } + + return 0; +} + +static int +nfp_common_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, + struct rte_pci_device *pci_dev) +{ + enum nfp_class class; + struct rte_device *eal_dev = &pci_dev->device; + + PMD_DRV_LOG(INFO, "probe device %s.", eal_dev->name); + + class = nfp_parse_class_options(eal_dev->devargs); + if (class == NFP_CLASS_INVALID) { + PMD_DRV_LOG(ERR, "Unsupported nfp class type: %s", + eal_dev->devargs->args); + return -ENOTSUP; + } + + return nfp_drivers_probe(pci_dev, class); +} + +static int +nfp_common_pci_remove(__rte_unused struct rte_pci_device *pci_dev) +{ + return 0; +} + +static struct rte_pci_driver nfp_common_pci_driver = { + .driver = { + .name = NFP_PCI_DRIVER_NAME, + }, + .probe = nfp_common_pci_probe, + .remove = nfp_common_pci_remove, +}; + +static void +nfp_common_init(void) +{ + const struct rte_pci_id empty_table[] = { + { + .vendor_id = 0 + }, + }; + + if (nfp_common_initialized) + return; + + /* + * All the constructor of NFP PMDs run at same priority. So any of the PMD + * including this one can register the PCI table first. If any other + * PMD(s) have registered the PCI ID table, no need to register an empty + * default one. + */ + if (nfp_pci_id_table == NULL && nfp_pci_id_table_update(empty_table) != 0) + return; + + rte_pci_register(&nfp_common_pci_driver); + nfp_common_initialized = true; +} + +void +nfp_class_driver_register(struct nfp_class_driver *driver) +{ + nfp_common_init(); + + if (driver->id_table != NULL) { + if (nfp_pci_id_table_update(driver->id_table) != 0) + return; + } + + nfp_common_pci_driver.drv_flags |= driver->drv_flags; + + TAILQ_INSERT_TAIL(&nfp_drivers_list, driver, next); +} diff --git a/drivers/common/nfp/nfp_common_pci.h b/drivers/common/nfp/nfp_common_pci.h new file mode 100644 index 0000000000..21465fca68 --- /dev/null +++ b/drivers/common/nfp/nfp_common_pci.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_COMMON_PCI_H__ +#define __NFP_COMMON_PCI_H__ + +#include + +/* Initialization function for the driver called during device probing. */ +typedef int (nfp_class_driver_probe_t)(struct rte_pci_device *dev); + +/* Uninitialization function for the driver called during hot-unplugging. */ +typedef int (nfp_class_driver_remove_t)(struct rte_pci_device *dev); + +enum nfp_class { + NFP_CLASS_ETH, + NFP_CLASS_INVALID, +}; + +/* Describing a nfp common class driver. */ +struct nfp_class_driver { + TAILQ_ENTRY(nfp_class_driver) next; + enum nfp_class drv_class; /**< Class of this driver. */ + const char *name; /**< Driver name. */ + const struct rte_pci_id *id_table; /**< ID table, NULL terminated. */ + uint32_t drv_flags; /**< Flags RTE_PCI_DRV_*. */ + nfp_class_driver_probe_t *probe; /**< Device probe function. */ + nfp_class_driver_remove_t *remove; /**< Device remove function. */ +}; + +/** + * Register a nfp device driver. + * + * @param driver + * A pointer to a nfp_driver structure describing the driver + * to be registered. + */ +__rte_internal +void +nfp_class_driver_register(struct nfp_class_driver *driver); + +#endif /* __NFP_COMMON_PCI_H__ */ diff --git a/drivers/common/nfp/version.map b/drivers/common/nfp/version.map new file mode 100644 index 0000000000..25e48c39d6 --- /dev/null +++ b/drivers/common/nfp/version.map @@ -0,0 +1,7 @@ +INTERNAL { + global: + + nfp_class_driver_register; + + local: *; +}; diff --git a/drivers/meson.build b/drivers/meson.build index 8c775bbe62..af70ed322c 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -15,6 +15,7 @@ subdirs = [ 'common/mlx5', # depends on bus. 'common/qat', # depends on bus. 'common/sfc_efx', # depends on bus. + 'common/nfp', # depends on bus. 'mempool', # depends on common and bus. 'dma', # depends on common and bus. 'net', # depends on common, bus, mempool From patchwork Tue Oct 17 05:45: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: 132692 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 C398543186; Tue, 17 Oct 2023 07:46:25 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E218340E5E; Tue, 17 Oct 2023 07:46:12 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2115.outbound.protection.outlook.com [40.107.94.115]) by mails.dpdk.org (Postfix) with ESMTP id DF3E540A7F for ; Tue, 17 Oct 2023 07:46:10 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YbyxsWhbhwJE9lXVL9CukfAk1VEpGrTHI1miBXW/xN+WaxkuL9xXf80nkVkfAeLRKFNIShmqnwXRbAdOiAaelJzDVY+GetOukr4v0VGb+bWxzag78CDRottdRGjOjdN7FnRtbD+eaqIQPukUat2b/Kk3XWjR+ZMWdMNS14cSjee6735Dm6egmxHoF5aeJN4HpTwqi30s4N/wVX8X/zXKXrwlOYuATmbSjpM5ll3kuLa/hS6OVpq4cvonFxP/l8lQeWWHNyzv6X9T6PDdahh/mtV74+FghVRo+mJubndddeX0sOeZriH9XYErE1ALGQz+XvJ5RIpxk9dAb7L1Zgd/yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1c5Wjtn2y4rsZ1S5MGhMj4i/iES/a1veJobXvPzui6c=; b=T+OvoAFXDu1dnV0gaTYM9ZPsmW30mfL5xpSQzml1f4ByzwH2lrzqOtWQUPT4jOygYFd/6Sz5X3rZMrKxyM8YMUr0DLuqnZC5RIMYOm/wWJhRBsYNR3qvLE/qXhH3DDnYX3vIz0Oa2Enb/S3PZntoXs74lyUy87gdfJ4yHcl49ASP1tu+DDuP8L8Nmw4eUUeXKBBCw2LVjWab1I/d6OE2/FfFSJQvHDcLXyfwCYaXAXn72Dr1aAgQJjrnTdjxdCnbxcztf2DJNUI3ctEHVguNBtT4+T9z7SrKlWogEB5oLelVNzRrJCndhHTZR+HgRB7TdJHUvGe2ZYu8//4RsB2sIA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1c5Wjtn2y4rsZ1S5MGhMj4i/iES/a1veJobXvPzui6c=; b=e1asr8wvwi55kDB/va9Jr4mllrHskW3xbtrRQtKhi0+wA2F4Kw4bpBDipg1d7V7hB2pUb9lwsIXorD1hJ1bQ0dMf4V/0qWzSsawZbTxTldtXzqrnIFkvgnXcE+Fcr/vJjdbtY5Q+m7M6G71z4wTeV8XhnitL3Htu+WfklfcOMmQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by SJ0PR13MB5272.namprd13.prod.outlook.com (2603:10b6:a03:3e3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.46; Tue, 17 Oct 2023 05:46:08 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:08 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 02/25] net/nfp: make VF PMD using of NFP common module Date: Tue, 17 Oct 2023 13:45:22 +0800 Message-Id: <20231017054545.1692509-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|SJ0PR13MB5272:EE_ X-MS-Office365-Filtering-Correlation-Id: 6eae6df7-0b60-4a94-ff46-08dbced45ca1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kG4V6jExIL+wZ4XTnIORsNCdIPeU/EyovMhTeoZUF3lDMtV82UaNJ9aeyYDDqk0XPZyMmRRY1M1lejFrpLfCt3nahJ3vlo1ZKzSJmmP54nwZU5xwM+fCLahpFsOF90h1PMFfF4OGD45ODKYHX5fcCObrVdwZesDLTB9lHBRhp7O2S3cDZZX+iuhvCcP3FI3msAqP5SYc4JCR1yst4BKpfKOjlNOHMkKks09JWtd7UZzCUFBVh+biIS+Oklb5UX2sm4tcWGTC511blQm9oiauZ3JiEGC8TjGtNxrmrTiRiivlSrmNV+DYwtaGBfRgS1bzb3ZSQsww6RQpeDMAuZWazUAZp+S30/MbaTu2TUa9RcUyGWnBrlFwfsMqmpb/MfmUl39MLcU4odrojrsuDVWweSTWNA+4DZNXSXKNsnVw8G1Xh2r2HISOgf7x7KocTZOQ9vExSx4EzSgNmQ/RYXLq6T+vzDfD4TQJwGiNDpPu1rolpPCSfli4PUo1gjUsj29I7BqxRctdICsxuXBOXGWlHWClq1pL2qZ4t0Fj+pUmQx/Z2AKsqfq7jTolss3TSiifJI/10lbfuFxAaWvUj63dvS58sNJxyQwtxtCpP3AospAjr/PrFgJu0a0YUDQw63h6ofwsw7BOOd27zvqjoKmpi0lJ9l742ZQKZ1i73dxyW6M= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(376002)(346002)(396003)(39830400003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(38350700005)(6916009)(66476007)(6666004)(66556008)(66946007)(6486002)(86362001)(54906003)(2616005)(83380400001)(478600001)(6512007)(38100700002)(316002)(1076003)(52116002)(26005)(107886003)(5660300002)(6506007)(2906002)(4326008)(8676002)(36756003)(44832011)(41300700001)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XPzwGj0T4V797CmTsRo3GEcvYZvxz3myB4USOVOMqql9QOX2vJ3HnzdzjovxgZcb3w+rrsH9zjcIsHsMbg13F53jKtcIoQWX21BRSKFA2Vr+xIuQ2w44uaZDk/2mZIJLK9D9h7In4J36hJ7TE7SqALtZb/ioJ6+c0BrD/kGyhLqTlD97XGG9d+RJF/3vxSAffKzgAgha4KIsJn/IyVxblNmxXSHNEuBr5l6Pj/h4+9h+ipExhjQJoLFwpwT515LZCqf6ZaxIdNaVTb7jJA5XuRJsW2VC3ruRPdtdZl+pCMl0i0aNHVZr6YymLugXOSPfd7bZQ7GBoZ7uyhKsRLUgllM8MLcQ6FufcMvcMSNUTVATuzIUUnBozDJPIcXm6p3fSFFS+LRdsjDVK9ZQpdvRU48iLICp/ejPpEudXHoT4Vj14lrR3eXuFyKId2vHI3/XFxfOczYSyPRoCi+pzue7fv0HWRLhbhfbIbv5waJ/ivWBTt2jQQqXo7O3VUzupEGbbgWz8ce9FTrJLIrgV/4HRgQZtGf47Ydriax9kEe+dJANBNftz99zRcj0EZ2V25WYvzpbh9q35leNCP4y0wQZO+aR3bqmcNu5pmUAAHyo2Vt93KIqFJ2QYD+3J7QdR3ZC7qojJJ3h00Fs0M/IAV/vn9j9xwonFCs3NGGyh4hLQ0JbpWvqE4LgbEIgrRQlKsaNrIbe1I8F2cNlBlZG2ZhPCoN1QgSYvJ/QpbQdtmNSegUtw3RP4bDEL7l3sxQ96oaVaTpHZ6m95EleKLA4H6ikzmCcAF3TOZJBieT96W/BsqjKDzYd5XyW1gbKe2gpQLHaZj+1TKo6PaVaMLZDsBcPFj7x+acRT17Iw9+ebPvh6w5X5RQzNLigHM4Yk81Hrfo1jtwMRLvHGYxH6ePmKgU0MUcHerLrYMi9eAJxWmSO1sIdBpKVjTPx6j7ek3nPktiOAGuZagLOm/mzQhSiSlvkqYnJxHDGcwo1zmCdzk06uHLqJdtk1pHo7kDSBe0wBM8W3fBryBD/tnrLHfZR5P0eFJY9ynjuAzXbhU3G/sjSzvA1c5PIIoTcR/fHkcTldwWSGH17s1rw10VW9lHOJ4x2jHB/Tplm4RfNbE+xWEsiC1EWwDnjKBE4ggc01ji79/ICUm2C8zhwyFHAVaHVRjPhv9Ftyzfdu+dFKeq0wGdMmjtqs777PJVIXjyFlajssiBcJBSttkoUSwKBCJSzWmL+Nn9CbyLVLaH1I3s1DWk9BiajY8CzB1bH6UFmBorkv3Pp6z+TUbMh24UFx9OgGCNFtqB1j39G89qBbWTDYlKkyDQ4UumQo4SHivY+jUFBpQkO8Vt12coY+fe9QFpsF/V+Nciyscdby9JN85JRE58Wk8D47JDugZovoj7eQ2PWEbKQRtjl99vL3e3AzSTucZ3az6KFNda355yoqV3FcQrz6jYoKmCBp7tECgn0pQ+Zq7FrhlNp5mi6cBZlJRTzvyIyocZC5kIdOGRu1iGu6Q20gH+5cnwed0/28mzVtqnf3QEAPQ2oqW8e8LF8LFXFx2yVrTfNevYOSX3Fn0hZ08odopYfZxvqkkwDpo98xA1/3TxHmB9DA8Vz+bCgcO0tegZbcg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6eae6df7-0b60-4a94-ff46-08dbced45ca1 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:08.8623 (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: v/UhOKgdDaKh/erWCNtx4RFIurjSQwl6DKTOnaAw0baKD2YpphPXf0GgTsTjzAuwGn/05j2GavkDZErljAg0De0Q3wnuMUIvNcA4YPOymT0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5272 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Modify the logic of NFP VF PMD, make it using of the NFP common module and link into the 'nfp_drivers_list'. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/meson.build | 6 +++++- drivers/net/nfp/nfp_ethdev_vf.c | 14 ++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 40e9ef8524..f8581403fa 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -40,4 +40,8 @@ sources = files( 'nfp_rxtx.c', ) -deps += ['hash', 'security'] +deps += ['hash', 'security', 'common_nfp'] + +if not dpdk_conf.has('RTE_COMMON_NFP') + error('Missing internal dependency "common/nfp"') +endif diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 3db35b90e8..b9d7a7c5c0 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -6,6 +6,7 @@ */ #include +#include #include "nfd3/nfp_nfd3.h" #include "nfdk/nfp_nfdk.h" @@ -399,8 +400,7 @@ nfp_vf_pci_uninit(struct rte_eth_dev *eth_dev) } static int -nfp_vf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, - struct rte_pci_device *pci_dev) +nfp_vf_pci_probe(struct rte_pci_device *pci_dev) { return rte_eth_dev_pci_generic_probe(pci_dev, sizeof(struct nfp_net_adapter), nfp_netvf_init); @@ -412,13 +412,19 @@ nfp_vf_pci_remove(struct rte_pci_device *pci_dev) return rte_eth_dev_pci_generic_remove(pci_dev, nfp_vf_pci_uninit); } -static struct rte_pci_driver rte_nfp_net_vf_pmd = { +static struct nfp_class_driver rte_nfp_net_vf_pmd = { + .drv_class = NFP_CLASS_ETH, + .name = RTE_STR(net_nfp_vf), .id_table = pci_id_nfp_vf_net_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, .probe = nfp_vf_pci_probe, .remove = nfp_vf_pci_remove, }; -RTE_PMD_REGISTER_PCI(net_nfp_vf, rte_nfp_net_vf_pmd); +RTE_INIT(rte_nfp_vf_pmd_init) +{ + nfp_class_driver_register(&rte_nfp_net_vf_pmd); +} + RTE_PMD_REGISTER_PCI_TABLE(net_nfp_vf, pci_id_nfp_vf_net_map); RTE_PMD_REGISTER_KMOD_DEP(net_nfp_vf, "* igb_uio | uio_pci_generic | vfio"); From patchwork Tue Oct 17 05:45: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: 132693 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 7386543186; Tue, 17 Oct 2023 07:46:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 180A240A7F; Tue, 17 Oct 2023 07:46:18 +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 5D2344067D for ; Tue, 17 Oct 2023 07:46:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BP2DQ66KDqmFCC4hKxXnV17hGTkpYj+epDyWVjyEyZM4v//0bjKvGqiVeRdztCHqkU/UmAZdfigPNtxcePNCjo3sLsukmhKTWK8SPLrPY5t/j+OdH0p3FfINkNyZKfrBvF777KVWdWjq3SGSTdK0mY6vE1F+3cl22C/P2tOSweLBcOFANxBOO2SkSXYtcAIQjx/dzlt5VmnGX/erkBlvRlZ7SDdVYJ7JOsdbnGlbLBfCmz7iV/dtH1JLaWGKNedsqS9SDk/RXlK3CC8G3/WptgPIulLo06A9SmUhx10ZFpHNrVPvWnLirtRe/EjxvQhzKDJ0dno1S2WbERNc5LNPSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aRnoc5wP5+BGmoVJxSkWB1DrWqm4OiuS2L2n6/bpjzQ=; b=Nh8teVwV9yf/h7S4j5pkQTkxmp6pkmpIfLKriiTpxUQ6x0yV1MQ5oRm/HCVzQ7UKPCjL90SMzUGpK+IGb+z+5KP6hPziyAxeCKYAIhi3r7weo/KtO5ujuBwONv4ZlxnvaMUTnp+H+n7h2gDByPYIUKdg9ZJw5Kq5HuPanrqCsrBKq6ng2p26XbHD1zxlVb5TtNU0x5dXq5C1kJrAeWGw1gHtfpDXfTFx/an11c3FGnOaRTDLgVTEH8B7BI5rAi7c95UHtyB3MPXH2vmuO+FQDO7VVoYhbTqNryStpheXQsGOIyknHOw9vUkCruILUzTcW88U7Zie0B+3e/GO4hR/9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aRnoc5wP5+BGmoVJxSkWB1DrWqm4OiuS2L2n6/bpjzQ=; b=tU/uFtg3JZGPfzGZXd1AAL/cCKxFQIqxPmiTqE7vYCcrE5yJ6YHbmEKZCOoZ9Rdagx2jmz0+vAp765lmdO9qr3FGaMXZ5sTIkLaclF8siN5noDInz8Pe0ZVeEKgEpHx7C5KuyUE0G7CiSQ7vSd/Jc+QrKSxs6Mc6u3jlO6VOS20= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:12 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:12 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 03/25] net/nfp: rename common module name Date: Tue, 17 Oct 2023 13:45:23 +0800 Message-Id: <20231017054545.1692509-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d30cf15-f736-4d40-e8c7-08dbced45e66 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ifsX+ciovVnFVK4ZGCMAwOe9de6AKg1nUyYNuaIgMe2i47WxbwYbZs2/0QcUjzHFdOpJXSyrTVQDOXfnLaDAFWwW/cAxe59VdWbSwqQV9VY2YTDzGFgSWK3aNJ9pzZwhGNHVBmjWJLuM4kyQWz3WuxNrzHaN7tj4I3WFzvZtapWdjrjpb4+PHcWkUKwuLUWUymbZAmRXjYiiRmXgTBuNyqpyebZf4oGNjvcz/OKv89fG4oW48VTwW9RD1vAu3+SIPTKEt4wvs7+9tZ1Lak814FhMMiAokI5mtvGaEYcI6unzWmHJCyuyD0RiZefqaMXfPOM9YSYiZuUdLl/BGFImQtFHv1kJc9+TD1JqkCtLYGjj5ArRGSQYPhS8CqUE2/dqqkuLl5pvGYWjeHUo7oNa+K/BUrrsLSW5b3zksV4dMXx7tehR2OgVg00oYJqqwhHB2yl8GwhvIWetvTysU1bFlVl5BfLnxHG/0QurASpZcF5l4dUwoJsLfHL0jeLEQitr6ldd92zn9HJElyBqR4gWF0NQZe+MS1OG4iYlplNGg/w8/INecC92Dwj/FzLdB3O4voDUMA7lrLboNToXupUxpfuNFN/PO25zFiq80md5QNtOuqLQ8QYRlPkWN2CNi53MMLgIWl4u1Yuhn3cMDvmGwCGcEloWMfeEeQs1BCjT6fs= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Qk0iABlE5OgbIVxhcjyGsRA2vTYi5JCICEYzHjtlS8KiRMKAk3uZTYovinnNgYmEltOIpcXk3TI/R3krDLQXLh11PYV4ODU1Mt3cCqIbeKYuVxpgHLKRGrsI8vg9FERbo7BSfWRRo9VBlWZjKFjelyl3XM/7i/2F3Kqr75deWxYkEDzskoFaUWY+x9gxAeiuLV7z2e5tTriTXOt8Aoky2JMXOGnPXcSlkAslJ9WtYaAEOp9MeNok81+2/GrvJ8/6MeYopd5XxV7ET4HivYIB+k9hg8Ul7hI5g1qInrSde6A4AzEwRJdNxRaHiWpbQiIdBLi7+D8ln0KV/6df6vK7gRzVQk29ruAfSLBLkHThstLu66nxsG8N6SKVw4oZh90YaZ80HJW4qExxTwQAkiQNiblm5SPGo3MOAU/iphO5BWrSqkwI7ZcH1AziMCMNRfPiwBe0nM0XGLON5uq3JRMdHvWYaS8Nqr6KQS4iZUS1N0K7bA4jkgGY0DIhImPb3hJGIx5lLRRIUUk5N9tNf/eA02KjdmXf0CXVnXTlwvb5v3yjWHIG9VyMjmf9D4q2xRvDSKr+c6L0YK3PU0PHwmqoKDjLAOeZSXUi7WvIjf7LEKTgoCjVICsjhq9QTM+oUCD2qYHqTDfGnn7EtxwWl9peXX/jUPg91lW3OEue/Hx6SnjtQdJ7KaAwMGKyQ/ituHTjZYKbmDYUzaoO030h3WXQIun69w/5vvcWBkFaL8omYHC3uuEqLHwInr0FXS43f8XDvwUl/UYuVjT5jCZEgOx1Iy9diuwvjU4h6FZ0ZwnQL4hPx8mLMvqv9swSWHeGcV0FHmQWFROOZmnOSHHxX8wTQeQhL3hp/FOayV1GPVAc3tI5qQ7LrzlFGQcQHAOHGy1xJWTVhZbmB6L5TWpX1iVaX0NnEN5Ix3yPyYQFM0c4SqtV1xycwFIXBGkgwGHizGFQIAo7wtNkFH94leyRZihOqutQ+nc2IM6nINV9BmT5FEQ10ukJ/3p4eSM5xZIwESPkDtn/BNtTAr0c2UpZNJoe9/5BcQV2nwuWTIoEElX6hL6a8Dmmm9BwkM0miBMinRBbR4NlkkCT3lFaTlxaAi/gAGTXChO4xxTInjm6YPIK6JQLVBMfimspxXMhg+od0K30FhNKcljjmPkVBvS0zwaanU7O9Eo5TBwuuWm1Ukx2VUcRBPSVQ2q0yBMTlXcUbfKlT8+UfMNVaHC/UxT1uXV6lH6b/+1s2i066yol/J7dQ4WJ0XoIBebJD12F6GqRK8sGXN5F0cBRwWsnMLRGJinLFFQifgSvEkQlFIbKfLEO+Ez82s0pw/PpcpC6VhbzBlth4tV7Ydf1hF68nUxuI2ajsTnP5WCsL3LLRDG+vFlpbZV1M+rTHqxbBx32Gt5eRfLQ8djZ3H7rAXx0y2evC4vY52HR2+SrvcAKNSAOT4qZu/dfsILRLYBiQb4YEep9aadzpHKGWiYJa/vi6AWvK473sGuRX2ltjmCf3AcdcPFzkZq5zGC5tVjMF0rzLOLk7ZG6833rcwTco7B68WhmJviO/8NLyl4xUShV3b0R/gflFZnWeXuMC4XUbfhfE1HZdXbRCCpS21OfvbjDtEB8wvKiUg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d30cf15-f736-4d40-e8c7-08dbced45e66 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:12.2907 (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: 64DKIKKpRvwauiPKXDhR7ELIffrx3sJJRYLeCcXunL5EAh0RiPBVxPkF+bO27fyB2TMkLiinvAlQ2w/kRr7ux5Men/Fz4x4W76wctHtC2pI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Rename the 'nfp_common' module into 'nfp_net_common' module, because which is more suitable and we will add 'nfp_common' module in the 'drivers/common/nfp' directory. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.h | 2 +- drivers/net/nfp/meson.build | 2 +- drivers/net/nfp/nfp_cpp_bridge.h | 2 +- drivers/net/nfp/nfp_ctrl.c | 2 +- drivers/net/nfp/nfp_ethdev_vf.c | 2 +- drivers/net/nfp/nfp_flow.h | 2 +- drivers/net/nfp/nfp_ipsec.c | 2 +- drivers/net/nfp/{nfp_common.c => nfp_net_common.c} | 2 +- drivers/net/nfp/{nfp_common.h => nfp_net_common.h} | 6 +++--- 9 files changed, 11 insertions(+), 11 deletions(-) rename drivers/net/nfp/{nfp_common.c => nfp_net_common.c} (99%) rename drivers/net/nfp/{nfp_common.h => nfp_net_common.h} (99%) diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h index b7ea830209..7d442e3cb2 100644 --- a/drivers/net/nfp/flower/nfp_flower.h +++ b/drivers/net/nfp/flower/nfp_flower.h @@ -6,7 +6,7 @@ #ifndef __NFP_FLOWER_H__ #define __NFP_FLOWER_H__ -#include "../nfp_common.h" +#include "../nfp_net_common.h" /* Extra features bitmap. */ #define NFP_FL_FEATS_GENEVE RTE_BIT64(0) diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index f8581403fa..40748ccc98 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -28,7 +28,6 @@ sources = files( 'nfpcore/nfp_rtsym.c', 'nfpcore/nfp_target.c', 'nfpcore/nfp6000_pcie.c', - 'nfp_common.c', 'nfp_cpp_bridge.c', 'nfp_ctrl.c', 'nfp_ethdev.c', @@ -37,6 +36,7 @@ sources = files( 'nfp_ipsec.c', 'nfp_logs.c', 'nfp_mtr.c', + 'nfp_net_common.c', 'nfp_rxtx.c', ) diff --git a/drivers/net/nfp/nfp_cpp_bridge.h b/drivers/net/nfp/nfp_cpp_bridge.h index a1103e85e4..bf975ce7ba 100644 --- a/drivers/net/nfp/nfp_cpp_bridge.h +++ b/drivers/net/nfp/nfp_cpp_bridge.h @@ -6,7 +6,7 @@ #ifndef __NFP_CPP_BRIDGE_H__ #define __NFP_CPP_BRIDGE_H__ -#include "nfp_common.h" +#include "nfp_net_common.h" int nfp_enable_cpp_service(struct nfp_pf_dev *pf_dev); int nfp_map_service(uint32_t service_id); diff --git a/drivers/net/nfp/nfp_ctrl.c b/drivers/net/nfp/nfp_ctrl.c index 6fc8cffd2e..a95e35c9a5 100644 --- a/drivers/net/nfp/nfp_ctrl.c +++ b/drivers/net/nfp/nfp_ctrl.c @@ -9,8 +9,8 @@ #include "nfpcore/nfp_platform.h" -#include "nfp_common.h" #include "nfp_logs.h" +#include "nfp_net_common.h" static void nfp_net_tlv_caps_reset(struct nfp_net_tlv_caps *caps) diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index b9d7a7c5c0..51c474275e 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -12,8 +12,8 @@ #include "nfdk/nfp_nfdk.h" #include "nfpcore/nfp_cpp.h" -#include "nfp_common.h" #include "nfp_logs.h" +#include "nfp_net_common.h" static void nfp_netvf_read_mac(struct nfp_net_hw *hw) diff --git a/drivers/net/nfp/nfp_flow.h b/drivers/net/nfp/nfp_flow.h index aeb24458f3..09e5b30dd8 100644 --- a/drivers/net/nfp/nfp_flow.h +++ b/drivers/net/nfp/nfp_flow.h @@ -6,7 +6,7 @@ #ifndef __NFP_FLOW_H__ #define __NFP_FLOW_H__ -#include "nfp_common.h" +#include "nfp_net_common.h" /* The firmware expects lengths in units of long words */ #define NFP_FL_LW_SIZ 2 diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index a76ba2a91d..f137e4b50c 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -12,9 +12,9 @@ #include #include -#include "nfp_common.h" #include "nfp_ctrl.h" #include "nfp_logs.h" +#include "nfp_net_common.h" #include "nfp_rxtx.h" #define NFP_UDP_ESP_PORT 4500 diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_net_common.c similarity index 99% rename from drivers/net/nfp/nfp_common.c rename to drivers/net/nfp/nfp_net_common.c index 2d4a7635ab..189f81bbb6 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -5,7 +5,7 @@ * Small portions derived from code Copyright(c) 2010-2015 Intel Corporation. */ -#include "nfp_common.h" +#include "nfp_net_common.h" #include diff --git a/drivers/net/nfp/nfp_common.h b/drivers/net/nfp/nfp_net_common.h similarity index 99% rename from drivers/net/nfp/nfp_common.h rename to drivers/net/nfp/nfp_net_common.h index c7f467e33c..cf08df4618 100644 --- a/drivers/net/nfp/nfp_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -3,8 +3,8 @@ * All rights reserved. */ -#ifndef __NFP_COMMON_H__ -#define __NFP_COMMON_H__ +#ifndef __NFP_NET_COMMON_H__ +#define __NFP_NET_COMMON_H__ #include #include @@ -451,4 +451,4 @@ bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version); #define NFP_PRIV_TO_APP_FW_FLOWER(app_fw_priv)\ ((struct nfp_app_fw_flower *)app_fw_priv) -#endif /* __NFP_COMMON_H__ */ +#endif /* __NFP_NET_COMMON_H__ */ From patchwork Tue Oct 17 05:45: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: 132694 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 911CF43186; Tue, 17 Oct 2023 07:46:41 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 11FDF40E78; Tue, 17 Oct 2023 07:46:19 +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 A9E9040A7F for ; Tue, 17 Oct 2023 07:46:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=buQFxeLtWSDHwqpXuUlWJVmMd+7M13T3VDzbWS+14LapUuVjIl2lJPkubToYUgu8bQOBsHRO4//aYDAcJ2YL/LtoSAQbIzXMZRP7E+0BHj3qWQGN12Rr8rWCiSEQS/fMRJT+zgA5XVGvXHuzoOjlhq/KlsbRtvLvoitEwNaY2ebah8rpJuBKGBICvbYGhEeHtNBAUxFPidktDWWiSoHrOoEz5RPBX0bHud0yAOVTESteiSwkXge36vx60I0Xw4c+xdrKOulvdHdkm8Wd9Iibjh60+KzAeFLHRHR/G6A0KkcsU36W/KOcHzEJeV+555maNAaTwQj51G7S6QX8Z0Ui6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=d4X/lJS4zCHqyYwFQhGJG3ZRKBInquv1bRtjVCTr/40=; b=CF6KgMPbN2CzZs7CJyRd4xw8LQN/pO8Qpre4ySmfBFrdF/zL4SaIrLsi/or6rvFPNlOkTQgj20mtns3NdoRtfkAmZQX2jjiV6+GoJqVrcc5r+NhuaDD67G2kkZJ+uqcO0JxH4cKaCj+Ogu2dovIGiVoJd+bxSKDNz+YdZQX3xzrUPqnsS4cSdF6k2KHY8iBfmOvZxVGvhehuySaGkyaUGHjP4hbzEIalpjarxE0XXvsarJhiytjhIDo6bFb7L4fTl5bJLiTIQ9VePtmGmhekTNb+GmUxERD8io8S1JP4LTQgAleJ00q5z6LRlv83qaegPDVa2SZUFDF1FiTzOpl15Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d4X/lJS4zCHqyYwFQhGJG3ZRKBInquv1bRtjVCTr/40=; b=F4niC032qnGheNO/yot7Znn+FJN292Ymd8OCu4kbDJbKUSAS/pkQ5kLahrUeifMXIUk4p14h9umoEulRdNDKpYjxW5KuHiSKPSbbYQYZU8kxzhdAoOTU4zUyk9+GWgHKLAr251TBKKa9NpOWAF2uU7AbDKRj5lMyXwvrNmfPFxw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:14 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:14 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 04/25] net/nfp: rename ctrl module name Date: Tue, 17 Oct 2023 13:45:24 +0800 Message-Id: <20231017054545.1692509-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 8aa5dde9-97f6-4ea7-75ea-08dbced45feb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lQedgok2T5fjVdQGLtr7X+mX1t9lk848V7l5mipGeey2qVhuWddTmj8m4BbjetXoMfF61EOAtbdg/Qp+pXSd++RXaR2DjZtvsiu7y33B9iYy76rIznK/nT0ZdA69mBfolGMJPekNKutaimtRuRsUcp1SlwmVwhqgo7YY9tIPOk83M3+SqqVK/gOfAyHeocJUdya9neXx4q0oQikGSi+p1uFCUdGvpvz9IiGubRPqE6VCMFC+zjJkzRJaOC3pHpDgsYM/bu+rnMotG/8+xETiN6k5hHSkGUebHLBKsADu1iBxev3P6eleVQ/IE+hXfzPoTyh737NEA78/KjKLzPWgV10sQ0f+zfMtWAySvbnuLQCBaeSxBaEMVSeVYWAYw5HEh6vm6gnxUAFVPPvzUa4D7Quf5AXbza8uRdObSAAm2ZN2d7OnWU7OSpCJJbekcLAqg/hCUIVSS9VvjXsLtiYAAPqEVX3eD4R4D1/TY3+tllZoPsyZ4l0xMwbFXIBM9VtGFPTV3MwDpZIFJAlVTy5BMWE8p0GjdHHtUkgRrQPXvevuyWDZfSLPbNhcwGCCEzZYL5bD5JmKR1Kfy1Ixl1ihIDz/98V2EuUCnkrYpKTX9O97JRzE63iM9ZUnUgOWvDhdh4SOr7raGBPQhWzWuCXsPvsL1P3OM+QWDwckmQbjSjg= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: C//6r27rxbc6D1nWHSQ+yGhLqph8QSqKog32VRDUOcUTBNRIugGuMljYW+MGdPXmqA0CotwC9zoTb9gopR+6u4IRjG9XjQiRz/5mdSpieJ1imJfW1mxp6TDcoWnDrun2s6P6P2YofQ0TC1iuPICQI28AxrlfiSg4HkLVRqTvXg+aFLUUHxqf0nEtdqCd2CpzX6/7gTw2HCU6aXcHCsggxeDD2mZ3bry7azX5r588SXbLGR6hDoIEK5AI6G4JNXXJ7pzknhfy9mvGZZAk7dURyjtspydUH2OEZet/aQCU2KK5iU66Xt6psJJgH1SrYwm70UpRO3ecbRw0A8upTdNXdra9QFFFLqCIibgd6+tAxvSYMokxNHecYk7NHpfwEIkbTuvJAvRn4iba1CBZLokQIEk4OgXnH1MvuJagFrFgGpk19NUAltJ5QALmE4C4D3Tz8CIN3TIhgZxq9nkhk4qa4kNKwuiXGqJ5n6LcXJjMPg7eJmxfGUAWLoZpDWAbYC3wroTtlf9ZGLtP6O1quAv0CSb1m83FhbWcadbp3m+jqQ1r4Z9CMFmCJ85ae5PDNfUNIgIT05JmR5xdP6yD4Yw0uIk3dXUSpx/l+rwPUBvjqFBk6p0cci3zqZgwfiuq6KqeM5han6qn79KnIHq3jdP2X0617DRA4Rk01UKbD9QZrJb85GBIlF+aAdImzur2chDpZZy6eJAhLJg5Zbe98TaUtl8Fu6uOTzA+UCKXfe5wL7JcfJbpqctHxyi8TPNoE9I46FtWwfrWW+vmmpTJG/NiUMqtm2ut0/PdUkWyEjqgiYg6Vm+OniVnTZhjGv15GB7BEV83wnvLzx4djK/ayEFjWD9RluBMlr35aEnNpF8Xd2pWp6nWkfUOKA/J0T9hWBaLSjK9OMQW6WRj8d9QcUwb3WxEttrbO5vzOF4bipt7Ozia/MkIrcF7mufxobQMiudtdmVOXZ7h70Sq3bhYbxSihE0of516ySoRAzlxKP9AshrDBTLmaxGZBJt/6o0DraAiaJ6iA0/RUYHfKQVnK/Wc3WjcgN8A+g8+MKoGm0uOIGW0zvABDE1VwFsB0HCLWea1OnQxhIgkyDCIfDGbBBbugmYB4S+YajBmiQPsn310Iru5X8DPMhKKyRPQp1XMzgwUWvxoDRemYJSVh6E14xXiIU6OX/NkzYhXn/SArH2cSIouPLBsc9cFAqgnaXocXxm7TJ7kmTG9FTFCWJZT2nfZyFUNDJJIu1D/xZq1HRa72I/FP0kS0HzVkq7r93hRt7l2sOXPnPPSxRT8vxhHiIrYrpXz03Jrr8QcjdYg/OaS0bbjoZYYTPVz4fes2g5u28Um+D7Vs9XYRZTSyctsqik42tO2hli7YlIL10qehdr6zOIGxHEptA1Xyja8f4Y+LnblV18p8oz81FHBglUQ9gIw9GnsSLPAgAqrQGR5M7GSlAgEKHvL4QjT/JjdeuLTAtB4tFnDHxa6AOz0FUOtAyync65hCgOmU86jkk8vm5k6KMo0M9CVkivZcl9pZ2vPDEgIjCxcHi00nPQDs2z13/5Lw5gu6qhEEhi1sZW7BHLbSQk93vaf+AVn411pWN7UzXpbO5DUWaI5CMNaVRI4W461dA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8aa5dde9-97f6-4ea7-75ea-08dbced45feb X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:14.4473 (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: /ScZcwVYutR7eV3XL+yxWUira1uZ0spedSWVXyHyxdTXCgS+tM0rVvkdcNh4FhApVgI+ejn1eFviexjVewKj+1zsme/4vbMR9Cv3t2S0p+c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Rename the 'nfp_ctrl' module into 'nfp_net_ctrl' module, because which is more suitable and we will add 'nfp_common_ctrl' module in the 'drivers/common/nfp' directory. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/meson.build | 2 +- drivers/net/nfp/nfp_ipsec.c | 2 +- drivers/net/nfp/nfp_net_common.h | 2 +- drivers/net/nfp/{nfp_ctrl.c => nfp_net_ctrl.c} | 2 +- drivers/net/nfp/{nfp_ctrl.h => nfp_net_ctrl.h} | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) rename drivers/net/nfp/{nfp_ctrl.c => nfp_net_ctrl.c} (98%) rename drivers/net/nfp/{nfp_ctrl.h => nfp_net_ctrl.h} (99%) diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 40748ccc98..d54dca36e9 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -29,7 +29,6 @@ sources = files( 'nfpcore/nfp_target.c', 'nfpcore/nfp6000_pcie.c', 'nfp_cpp_bridge.c', - 'nfp_ctrl.c', 'nfp_ethdev.c', 'nfp_ethdev_vf.c', 'nfp_flow.c', @@ -37,6 +36,7 @@ sources = files( 'nfp_logs.c', 'nfp_mtr.c', 'nfp_net_common.c', + 'nfp_net_ctrl.c', 'nfp_rxtx.c', ) diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index f137e4b50c..af85e8575c 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -12,9 +12,9 @@ #include #include -#include "nfp_ctrl.h" #include "nfp_logs.h" #include "nfp_net_common.h" +#include "nfp_net_ctrl.h" #include "nfp_rxtx.h" #define NFP_UDP_ESP_PORT 4500 diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index cf08df4618..8a02911c45 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -11,7 +11,7 @@ #include #include -#include "nfp_ctrl.h" +#include "nfp_net_ctrl.h" #include "nfpcore/nfp_dev.h" /* Macros for accessing the Queue Controller Peripheral 'CSRs' */ diff --git a/drivers/net/nfp/nfp_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c similarity index 98% rename from drivers/net/nfp/nfp_ctrl.c rename to drivers/net/nfp/nfp_net_ctrl.c index a95e35c9a5..b0a427c98e 100644 --- a/drivers/net/nfp/nfp_ctrl.c +++ b/drivers/net/nfp/nfp_net_ctrl.c @@ -3,7 +3,7 @@ * All rights reserved. */ -#include "nfp_ctrl.h" +#include "nfp_net_ctrl.h" #include diff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_net_ctrl.h similarity index 99% rename from drivers/net/nfp/nfp_ctrl.h rename to drivers/net/nfp/nfp_net_ctrl.h index 9ec51e0a25..3772b28a66 100644 --- a/drivers/net/nfp/nfp_ctrl.h +++ b/drivers/net/nfp/nfp_net_ctrl.h @@ -3,8 +3,8 @@ * All rights reserved. */ -#ifndef __NFP_CTRL_H__ -#define __NFP_CTRL_H__ +#ifndef __NFP_NET_CTRL_H__ +#define __NFP_NET_CTRL_H__ #include @@ -571,4 +571,4 @@ nfp_net_cfg_ctrl_rss(uint32_t hw_cap) return NFP_NET_CFG_CTRL_RSS; } -#endif /* __NFP_CTRL_H__ */ +#endif /* __NFP_NET_CTRL_H__ */ From patchwork Tue Oct 17 05:45:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132695 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 5006743186; Tue, 17 Oct 2023 07:46:50 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 549C840F16; Tue, 17 Oct 2023 07:46:21 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2102.outbound.protection.outlook.com [40.107.244.102]) by mails.dpdk.org (Postfix) with ESMTP id 6103440EF1 for ; Tue, 17 Oct 2023 07:46:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=irGwGEOSUx5CQJ+ufNxidoM+fq9KtuwVc7d3JgoxXohkn1uLySPio5KCl/tBNgXRFX/pXHaAHOMSUSQ0a6f++WHxv127qmJThvKtPj48qMnSH/c/hJyALpXdV1fFawn5n5Xtz+mp3Wv+h5CgE2nlFfWSWpsw8QXF6hQ0KPCtUxFlBKSJc9dJ6kGmZaQiEm20NCHN0Tyq9gASHc6E3uHj1BKUxlOidInvZc6r4vv5wo4OJ/FfDpLJSczOidN6073Sioeb157Aomsnmkl/NDOxO+zHB9uJZc/yHdAQyjoTo2HQTHqq3MD9VMGYDLnRFSv9gEcpNRPr7EAw+Iq9cpc07A== 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=aT4enpGKIwcuClFyoLqM6iCmv6q2qthMz91YrGUpfx8=; b=XjM9RUvAJXF6fieMIFH0nyksoDQ2i5zXAee0S8va6HykkAk/Zh4/ICLF2acogihWFbsyrC9BSTJ0X3gJEuFY72LAB7enTMMamkBAL1Z7FM5h39Isg577QozLLaHuvPd87oyQeuTrkFpAIcS01HFsyAsO3qTTgB3VYfTCQrNIVfw/VZkEMGk3+kReIeXI/qRAk1VlAvtKQmNPgJqU0wJ6bdvC31Vv2YM5TQU0DtIfhyJmQv7XhfZKCHTntlfW/EIFr6ARc4jut/gRlwLBgWCAu+H2uISFsTNYK76plq7ACL6cdVl5x6uqCs4mpxhjklvzoc/gFJgNhT00EAohkrIXNQ== 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=aT4enpGKIwcuClFyoLqM6iCmv6q2qthMz91YrGUpfx8=; b=cq97q+HlZ502XpuVxyQERyNvlv7J2V0E0UnvPZ2KeEwpIWzdZOcBfyC8Vgp13zIm/nPK5C1mZ+7MtIrxnDoq1pNp4KAeFPpO2M/JTYu7RxluorCrfDFYi+B3NLIgDkNx6/b1Q3gQiA6b0pb1biVlVbH14FefwFgQplJXgocQ2D0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:18 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:17 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 05/25] net/nfp: extract the cap data field Date: Tue, 17 Oct 2023 13:45:25 +0800 Message-Id: <20231017054545.1692509-6-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 0e556f6e-2397-478f-66e1-08dbced46172 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ASfABmQSAYF/2jn3C8PDwvYVe1zQw8Ipwosly9L/8trQkY0B4FdS4hRfSzOQk65Xe1CXg7yv+eV8qg0vAB3TApKhmHPwSFygd8lJav0TyULEXR7QZ7Uz8GX5LazloY5j76oS26EY1uN5CUzxvmw1Q+Vo+4/L9o34JAfxC1L43t34ToQRrvvGh43zQzii4SWBofhurtGjIsOWS+26cZFhNRnKfs4hvKRnxOHT/AwhR7oUkbiJ4TtUTEx+7cll9i+62HQUzg4y4Snz6q4Hmkd/hMhMKemy7cQsa+xWp4BEah/Xb60najjdZsE8iDEKLzOVKMN9QxjJirWRTwPTIvIeFykVX7ed8mBhUEDQDXCHfYKLVyH0GeA/MuGjSeBC98rPAQ0dmIO0R7imYB3GpswfLw2rs4WP00CsLi6ff91ptzaE/HWznwPnAOz9RxbKNcwTAo4Tn5P3Yh8AZ9Vd8SGRwPj0+V5JtDnp4aHMhYDVMkNWOT5qS4CQJ0NxGy1k21t8ylJu9TJJ8bB3h91P3f+nQVBYaSahlPnHRaSoX1HvFpqWb5W83s2OTU7nGStFTGjSIvDR0Oec8JPY9a4tGaBpZzsHHnwC4VCyjlpOjPktleZR1TFCbAmhRZR1DmxPf5SCyeZBd+AHlCXxVA94NbC7sqXfUJjWztLar7etUU4Hdcg= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(30864003)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UflzURJqxPPdeC4LLByDX6mrg1dHs5dz2Hbxr1jYxgwMVspQ3T0QIvi1lHlFH84ylZBAyt5TnCXlTmF5OTq8Hp+/qZAfTQSwkiJ6J8XQA3OULjm9OvN7Kc3pzm0rTbzZXYviv3yjhrNSYdCrSFZKvTRbgBRZvvWeKlX68dj4/3X+iTbFM13uFJyWaCpTMdBRRc9tZda6TGirKEn3teHIDDOVtJ+Behas3sRyPGMHclfilFA3uYsqlj7DAv8at653zuPHtcgRGQkQ5QxrIAoioS7R3BCACjexqZXn3uDxm0p3fthMuRL/04w0uLeAA74zpHHxkC8ngbMrWYUqoQcyHmkVv/20xFZkvD6El0y1qmcyNey6QTwK8c7YRjUO7hYYEmpkiP8HAe0wRQ7u9nTG7TtADurDpXIIiDo9ze6BrWcSh/wNiwEyVGPfRzBJZmB/o8VXUU7ccPGmbwnchBZpWDdLqKmbk7LpqW9DKB7P/7od+e8sXTqWmh7JZ+GgWr7cSyuvJ3DXOQPVJmXjudBrAq9Gj+DSVKFMvHQfthuiV/BiMg/A8UXtTKTc7R5I9wzQ1RK+ilcpFwBUvqnlEUWVC0nKZfzpR2pJWnEnppc3Kmlpi194VMpFDEwgcZurpvnDZeX2sFjPkxyYFkaURxEgD9VTJmyJO3xAwjOnEM/Di4xqC1y2UoWxLPO7yY5eImTarMDmjXqNYxr7/3fZBEYXCM7erb5hKH0P5sjwo38MDGEuWuAFNyKkA5nG5QacdLYu0o6JQR7ScYR8kVqZrzHvNbrtPPk/8tiFGK6ah6JK1nvlmHaXNlgKxRnWGB7l3mpWGV0lJO7aVTIiBwoOAZsKs7IL2zj9rBoTwg2AIF4PcPmqHJortT6kKS6Pu2nKCZUzZRIVqjDH2Nf4hvECsn/Q24fCODDArOkJOOhztNOsIIF8/YP9rAPUmwjBb3Q+slJGubN+Qx6QnnL8MMgEc9BDlKrJEPP4yThuxqFPqvT3wHaeJpt7fZ+rWr9X/rUbjqx4NeAJRKhhHLAkk2JOgQHdi1LBvo4xVoSe58JSZ1sX7dIi68omYUxUkNcPoRJU4DOT2LzvMAEmtjo/GkGjQ9JJtLSzP+75k35jX1HPG2T3jwSUKsVU8RqYhGRzcYkEzed6KRdY8qtfSzKoGWAzxzcCQUlwQahpXXgdNMQO0KcDo0A2e3P8Gu6VcOnfdGrz4L/mtf8oE4Ob1AF7ZjneghNVAagTm2Zo2npQL7eavgcU19qhlp8X4gWKcmE3RPeetKzsRbcqWuMNDHu029QoEZd88efWMj4a26azDKdwizqDpS/wn0w2HIoOIFomA2hkc3MQ8g2vzKtMvae8fGAa3havzoeY/ezI+1liY/p8K+zLmxU7XfNDrgEtkO03aYyIuxH3kq9+Hpbtv4zVyI7YaVpxG4wX75LlW+s0IL4F/Scf2j2yvv7q984wK6t8X8sfGd3EJ98ryn4u9E4KaHNmgi+c5eBoanW0p2AqI/bog3ulkYSCrY4kramOOTgIKEAGgvOAWFYfMisQJw+Vv9AAP/FDlIMZix3SN5GCNS+Abruihhq7RCHB0hHveghI19/Z5W8UuwpKWG0THnKX/d6oDWwScg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0e556f6e-2397-478f-66e1-08dbced46172 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:17.9082 (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: EeL+jTtbok7z5DipoWXLMfzutuk6wC0MwG7NZ+Je2sn4HZvooyV982zmcGiM3Pt3ebtI3qL+FwUuRnZTRKFU0xoMm1rurUm7oPiv1EUON2U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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' 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 | 10 +-- drivers/net/nfp/nfdk/nfp_nfdk_dp.c | 12 ++-- drivers/net/nfp/nfp_ethdev.c | 12 ++-- drivers/net/nfp/nfp_ethdev_vf.c | 10 +-- drivers/net/nfp/nfp_net_common.c | 94 +++++++++++++++-------------- drivers/net/nfp/nfp_net_common.h | 8 ++- drivers/net/nfp/nfp_rxtx.c | 2 +- 8 files changed, 81 insertions(+), 73 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 0c54d7ed27..c758add734 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..e9a16371bc 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) { @@ -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..533099278d 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++; @@ -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 20940072fe..329589e90f 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,12 +128,12 @@ 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) @@ -580,8 +580,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); @@ -609,7 +609,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_net_common.c b/drivers/net/nfp/nfp_net_common.c index 189f81bbb6..3cbf6bc021 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,32 +1215,32 @@ 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; @@ -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,7 +1336,7 @@ 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->super.cap = nn_cfg_readl(hw, NFP_NET_CFG_CAP); hw->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..269fb4930e 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -112,7 +112,14 @@ struct nfp_app_fw_nic { uint8_t total_phyports; }; +struct nfp_hw { + uint32_t cap; +}; + 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; @@ -122,7 +129,6 @@ struct nfp_net_hw { /** Info from the firmware */ uint32_t cap_ext; struct nfp_net_fw_ver ver; - uint32_t cap; uint32_t max_mtu; uint32_t mtu; uint32_t rx_offset; diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index efdca7fccf..a0c7e0e9b5 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -386,7 +386,7 @@ nfp_net_parse_meta_qinq(const struct nfp_meta_parsed *meta, struct nfp_net_hw *hw = rxq->hw; if ((hw->ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || - (hw->cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) + (hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) return; if (meta->vlan_layer < NFP_META_MAX_VLANS) From patchwork Tue Oct 17 05:45:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132696 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 B2A8743186; Tue, 17 Oct 2023 07:46:57 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 906DD410E6; Tue, 17 Oct 2023 07:46:23 +0200 (CEST) Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2100.outbound.protection.outlook.com [40.107.100.100]) by mails.dpdk.org (Postfix) with ESMTP id 0393D40EDC for ; Tue, 17 Oct 2023 07:46:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aw6wzlj5bEefXABcRg4d1Nt5ePIir1jWI/6uG3D/5hJd5YddhDrQ+r8RAt95i4+fGDL9DvwOcdKEOOaUq4rQD9VFO5FiFoM9SZLfdy7D4ffzk+vvFuQX4iBsQnmfUoBJV7chAJPutkvD7fqBvolSARyrQdRR1tN0ik52ELannTfztUZrHUoxwEvoIHqIdoGaxnbGsTFdYcB4DbbrlCE54/cGA9PJqRvK85vjgv+mn6onfXeHnvM5o+Mxu8PY45efJN5pbSYbvlvjhNVL64bm2xK+ITfML3rUKKxjtcZnf57ndD9lGd7lTpaHE2Bxi1A+tLtirEa7wDJ3jYKdgGvCrQ== 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=58qIvnRfuL7HPF5+tCTEn1a9XE4d3BmDupSZvwV2X6U=; b=IhpboQ9XoWtBCcWUR/EmSjZmbEmcv6GRgMQ5Pc0VTVm8YckJzxPCKBpxkmwMAyay1GiD88Yf29DiK3W/An4uUaJiNQSL4QxrVthX86X3bjIvmo4QGSTV/LKsH1XuaYOIYqhd33hxpvAd/ewO9+rohkM4eb9px/dlWZqidaOoFFQ/hJgaf4HrH9O+kK4/FNgt7on04CKNYA/jzxQbwxZTLILA1JTNMOPbsOGaA2THEA2WPkEXxZwhYY3aftrYCSIJV7rILuBU541Lndm7MAVnQsF+HPGrUu7y3KdRB8Dybv543PbU1rdGyXE8pMirE0QzcqAxGvyn2qJ1v0Mt6ehW/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=58qIvnRfuL7HPF5+tCTEn1a9XE4d3BmDupSZvwV2X6U=; b=CmHkZ4YHlOZtqwUsX0du/tx9S/9rYBw03VQS36C+RTyhHpmCJRDza/jkoGQgTkJHZT527SA5njx2DegT4SGi6vn2wrK7mnwKlLDx3uQXEvlfklsjbP/g4Dm1EvYAvmlnDWDsdWEZ87IPhm7ZzfYt5HlwJ9lYV+EgcNt8JQHFtT0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:20 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:20 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 06/25] net/nfp: extract the qcp data field Date: Tue, 17 Oct 2023 13:45:26 +0800 Message-Id: <20231017054545.1692509-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 65d1e0b3-a337-45fc-6f87-08dbced4637c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K9VBEIBidZ2uuZFjqJ/xTxw/cq6J6saurPT6+Kg+w1/ar++QMrwi8PqdfoO2u60thnBIjJ2tMz/hfQa7MPYxUTJiUXNdSwAW4k6e93idQ3lNJSCJmqyd1FiwKahdhUTHsrlyCqk7q1MA455SR9/MWLUV609TI7+emOZXKDn6S9nygoJAeQYtqGObbdkYqbvvAgWkUPhWm008I3FRD67M0X3QIjnglRjk7IyA1DXNwTGrhEC0lVp4DnuFFdfWpr8hl3CbnkdB6owkkdQFMKbCx3seR2UhNV2ZybMEpXEveprpJEYtRLnKi1inpNnQVcZdeXce1ZltPSsCsxWguUsNaEhZusebg5vOID+iGyIzgLrWf7eF+VPOZsIKbAZrEGbIwMP79bw64ZqNGKNxCWaJDd852l7rbTOcEKpydmu4T8c+5nxdCHXworyF9tIOGVizHuuBN7isGr08sLmPLg41KsBpwGUF34gCwC72fTqjGyGOtqs4x4aOuqwp5a896RE3Ah8Kb5IP12hJazbVCLSCgEFAsXX40vYV7VhowNTFhiOYg6AvXy+zzL6rQJEhjrl+A6hqu67zvUIwMkoc/htCWVi0csovw9p2RyObxpLWqu2ImvwP8D9HHkRZe/NGGCqqnXH7UrRC1C20xLbiiqOnSyzibNgwCxZ9Zf0O1OoIDd4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QrQtN7xVwV8ifzg5Rs5HrXR7ZJR8DhohBVWovW+t+fp0a1id6+xeQHaF1lOL2MVZKcTmrruNRPE+d9ebyAy/0n4aLcY0W6g192CR1BYzMV9RnXXIJ7YU/v6L9Ub17+NLhPd5VDG9U045WJTlBtileXS1JHGj+CLwnDqMHsJ+JgSqFXDg6sOy2pU/inQmV3xpE66RfXCpGWu3QBrsKKt61l/SrT327vZFkyjBE4yP9Hzj6FJxCYNv8YfVTS54qKpDeK/SnqKzQr6KqijS2jd4XKI8ynyU+V+UgYmbgGd2KFFfXOPqhbcUj1hMqXH3sEMIk4FDjHeupJi6+fOpAcwgxK3VIAUHW0X94XvnRjEhgBrGoyg8FTYTvTtR6wg+DLmngKp7u3wxPuilJxS01ozXeDOTHoixNq/+lm3i/IKR9xzPTVCxUn0uHjol2EmB5eS8fgDrZanA/hRBgmwfMWLKpKE8L/QW6k94JC5djDUuWchRpoh+0YKsbueV4FEJXdkQ73aTm8w0/jvmtQizDNC05YUDKeyNqN8WhdLg0j+ezRWYEkl2mKLXihR/As6+D+Dh4Eg/B9fLK9OMa1wk0kfyFjBFHPlXXeNuAc018wejea6mtLkCR6agrPyNdC+gMHOZLaVxhtV93yQ/dNe4oHjSYjYH3eNAobdPtpFtE3ZacuBQKGAVZZIW8PHv49r1LvIamNd+iyUlNzXGLAyKc+uMz4d13gms/W0WeXjjlMgDY1pG2GRCUe2DiBGPTEL/W6kJNQM6QZ+Ee9/ucvJQmR6O3NxbxH/kvYbeVzfMN5J61o+5OQ8QpCrb9SN5rRswEHiy3vv8HXUR0n3MYp0SxdTpPELmu0I3+JLm3We0ivR67b0Nj9UShHWxxUl1Y6THPRix37/7g2BfpqQ3/RyiKAEziZJK2cqMHSHbGQFA0dwoo95z8T/1ted8Uzr68L9VyX2UDPmJesZCBpVTfhyKVYbhJHTNVBt2tBSENQHAxh+eUv5FZ4H9gjUc2O77A6xoJx1CoPLFwKdfs+Pik5S26+nsqWfmYM2+Xi+wCRhtpdfI03LTy+mt4TU3T4n7fVpJv/7x8xzLmcUcXD2+OyYo6/uIasFH5GgfzCD5wYdYORWFAISO0bC2fVh7YdKKbAetuuvxBYA9RtBQsHvSVL2B34tICZ/uhMC+EaHIPnOlnMpmjB4QIPY0FuIQA2GR6s8DGsiu3P8uVlBxzkaksN5j09IhNwNho+EGjNT+ojxTvRooebxhEtsO+NyvLBn2awDLg2emOxkM1QZ4Y0ERsAiLOPYrK2OixtzHIs3oDDYFQzRGp8aDlSLDm3ofYlZwhB4pN5PsSmMLyZX/xF52jW5QQ4JXmnAnxKaYE5oOV+w4LqkrIhVdhKx9LuI1SyEzFcwQK7NG4OVXt/Xyzan/cGHWu1cNaFpjVdzfJ9wZV3jJ44zRTwWZ3KK6IuhnihvjMN/eMnoXK3tVo2VrpXwJwN/vTRUQBcOQpiAUK7mZ67vi61X3SQLLBdBj3G+48HS/fcbGfRSSTucXi4iD1uGapeii47k00HdfJZLZia6ZspnKg8Jo7eNpU6MxYHWhoFIg7szN9dExtPkDrk4Aluqin3UQyUDsuw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 65d1e0b3-a337-45fc-6f87-08dbced4637c X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:20.3561 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oj/E1OFLJ1AK0BMOzEx3bltyMYkbtllB4pHtcOFiY1hcZvujymPctOrSsoIpbqiz6aBy40fk8myzYzj8EYCOQftfKgOgVlDRWtGBrhj306c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 3cbf6bc021..a5548074fb 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 269fb4930e..cc7d438011 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; }; @@ -150,7 +151,6 @@ struct nfp_net_hw { uint16_t vxlan_ports[NFP_NET_N_VXLAN_PORTS]; uint8_t vxlan_usecnt[NFP_NET_N_VXLAN_PORTS]; - uint8_t *qcp_cfg; rte_spinlock_t reconfig_lock; uint32_t max_tx_queues; From patchwork Tue Oct 17 05:45:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132697 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 98C1A43186; Tue, 17 Oct 2023 07:47:07 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1AFC2410E3; Tue, 17 Oct 2023 07:46:30 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2111.outbound.protection.outlook.com [40.107.244.111]) by mails.dpdk.org (Postfix) with ESMTP id 82B60410D0 for ; Tue, 17 Oct 2023 07:46:25 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ckCN0XVgMzSTlX+TBDTg38CCRTJ4UZli9KkWiCRu04p5Nt5BuZuvA6bai16qFrZ2Y1vIlV+OdG+voEh3ASq4PfMfudsesO2mAqCEZLLhFBsdpr2c/TeTWZ0rNU0TvQKKZNhCtZjQOXgO5quLnN7aKhEP82xqpKHEUQBHOPdiGHJPMw5cz9OgbTSQD2an+43bJeaVLhQWHHbYCU8AwxxxsOeTC8lVfE8T8Wh0nm87/cLD0qSu2OS1zCgrlspbEdAt7nQtsnb41DdTA1BJp9TfUY5vS9yx4WKlmerQzHplaAmCw/rcctYbOJRiZynN6rg1bjyWI7awuJPif6MKb0Jd5w== 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=K6KMEy3jvtiufUJ0n7y7hQ3h3HmYrU2+bv1EUez3mlo=; b=hJLqsg0ahv1gvY0jsNs3Q741kG7e67PpRxGnusnZZS4PEBEWZ6mf+TtQt242IqxyRjLSGvLF4mdPN/446r2UNUauErmrGu5Cq/aEGJtAkb8BHEx45NjNRq2qasUHl4fgnFouwcA2Clyh7CkDZTb5luCBDIpJwmPZwsheMI4us0eKE6h0ghPEl76Zn985Bx7GDGVESv5Sr3WdOpMqYdWc5egYhA+IIwb8ZKeIA2SLbGSO8eUdYLtTCztxcyKNQcfYso7WaT8wX+t+Z+6dafX840YSAYfYpKBKU7sKohzhcl32RhPAkHCKNYoNzNmnFr+tgdgBCkSbTcpkYZw80eHn0g== 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=K6KMEy3jvtiufUJ0n7y7hQ3h3HmYrU2+bv1EUez3mlo=; b=ezQx3JWUMgXEkxrnynKEegbXBBZrEbGfRB0h0NXBcalegXv9nysF+JqdxSXiGqkgXbuU8sWfLzQ2nM6+2hSb40loLjWcQYR+uN2/doTspAsAo1nX1fqnRBW+oupN3pi8iBZmYVJC2NQIcuPIOmr88qbvXLOLqU1mLS67eUKyoio= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:23 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:23 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 07/25] net/nfp: extract the ctrl BAR data field Date: Tue, 17 Oct 2023 13:45:27 +0800 Message-Id: <20231017054545.1692509-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f2686ad-455b-4b67-116a-08dbced464f5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6Qs9WpD/xPB/YPb+bCYdGuLBJ1VRAuY+Q7Rca0qT4rlJno56/aSNPPcpjeMmibcSm17B6Ywwwz+BGtUrOwtlBtRqeczG75NzO/TV2Wi2G4wp4pcCOBaAY24zzTVjk7p6kP5KRFpifAQuhp3x3TcxZfnYKjhhwLdr5nzyc1nStrWS892Va7AhWeYFMQLzsuuVJPtbnzOaWkdYqz2o4pqzyFUy+4033XBlFloT+f1hr6pqeePDTI1RGB8UpAS2Ur1mvatlhm0ANqv63jpVlAsfz0hC6Q1XzwLdzc7zlxXlWGsNC9dJXnLY7Kv0J8RSrNmDyxLsCTJngAfwcBPK/bQijsNGPcheS+Svay7h6krERjXedAklT1TRiSm7QveQNuwQki34StayduZNSWP5rZubeUMjWZN8fgLy8nVXgVjryjRwKhbYS0AO+JsVybqWlB51IPKLpnXOYWdRO8kW8VgNxVXS5QHTAb68/d7V0YmF/+Pz3fj7s4CvoWNmT+pdsqp0YTE8Y7eS0tfU1jLfkRgbWJcJ/gUajNGGmPIjdWW6TzF06IyksRYiEjbNjDNX/qcDCvcg9czO0s+p1Ze7QHt/XNSeryj2INPhgJaUakLaNtOlBBjhMH974eAt7DDTkzVi7Za8wYGfYYrHOIHGbBaxu4ksyaNuFV/BZM86W3ycDs0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ct6/RNJ2hI5RMCYx6J+w/gs05wpfvprVu1fnxMvBpmabcyDIUkBWGroFme+EP7ZaCZtPp5VWyJqGeXElf4jzCfgiqJfO5oAgaXkKN1E+hQxnk2Ntw8oWqccSgNqzfic28adiGgeSR6bX/s+Pe+/RqOS1JXQyPIlCDgHhG6FLI1bO2MdWSExMpsERkfR61E9h2iBIM360gIDxbCO+BmN5LUxT77piF7H3AXCgXzjS4XqDu/kY1ctloJ//5TmEWAw6aSVGaI2q8rVT50ti8ODNpMOugIqPY+pGzu3GObR6dbU3CdSXjpL5Y01g5BfWEHgUqPmS6z6neHPjVdvQXwrRvPoH8WZDT6Wtzn0OEned9pzv+1lbKVKZS4fkBF90aKZKexrIJJd26Rv8fqrV5KIVh7VJsFP6HzBdcwjk4eOn+M0mttLPoXoH02AE2kE+Ut0d7Iw9UM5NYV8TXZmyYmYKI8cJ2YWJya52CUaWiFC/WVqmY+NDw9pDB+Rkn0FvST7iFej4zJMh3Z0ZeWrxdH6SSoLJs8NQrHU274K6ztq4edLDIDYrtl9cBtXSl+jFnVNQcZNI4oqI2DGGjBOYdrt44cqdV4Bg5a2iL5bUj6OkPRrOfnEiQVhgq7vCr3SLVet9vtJSsR37csu6KUaSOIPco+KwAJjiyItWe1aZqYDuu2lCWriiMdRHt/U75PLhoJPoCLlijwggSZcbOLDXU/cpKVgDh6B+cQ5YmxRS49xhLZIJ6rwRdJ64nW9dkfEtKIVYDXx/SPj0WMzahgJgJqWFo2V44F9VRx/i/M+pBSx6G+stjJK0EmuvB+/A9+22XAoL8Ds7jcbV80OIccG2vK3pS1rp7adR/IkiOWY9pBk/YwzKwnPNiOsrN11FjAk5NP3gwlUUqNfTvRyZrz265lF3gmmWiIjYZvdFTjAUVD2uE0c0HR0I+7sKS1IIRB4YlS1KeJVVekSbh4owNw+YOk1P0mjseOgoOuwZN6pEqg+wYzRh4tuc2d/60J5uzw7aDv3C/N8TIPawB/+9zck2gIukC/dYcQN7CdEHxIwWbJt8qpLkbUfvEgi6jDJ1Q5BDHKvpe//atYdUPExZd4c0YLtustOdt0fgFqgRFKOhDmeIXo0bHbfOFUCjV3xcc7l91VA/hKV6bBrrOItLOw8zXhWEa48kbsZNGKMdH2l0xZgjkkB0FpkldzU95S7eKDGxafC7l0aa3sieRA3jNWw4Wsd8lU6cyWn3x++AgKwZFo/PQdevJVPmn3ZAqc3qae0a39wqbMxIGzewiyAp5ZMzBRVxCzq/QA63O+fy0WujkgmFEJ5rSn+q7DrKbOME1zplnA6wKlGm2O4HahX/n4nbXTlAMsDlhD9zSPQXW9oKnKEYF8FtAP4chgaL7Jn6YmAW8oNsC+CfnIpbzRYB18yROKKDljGOS3FEIRaU93kU5MQrosxC6v9Jn8gpdycYEOp1yiGK+jUNbAsfbmv7i9ScQ6HQGG+N6UQyKgxRyQ1FA7mm2F2Aolx/HUhE9c2sujxoJEmIn6FoFWVWHBYM/VYgHPILCMqjbf3BUBExHgsUq+RZLBVba/xzv/D6D0e+bUe9o6Q13+gzUV9yxzFohZM2QXdLgA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5f2686ad-455b-4b67-116a-08dbced464f5 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:23.5196 (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: ed5ljKfK2rWmoyUEPfGmCfnd8Jlt4XmxsmuhS7rl0y1lLb67RAW1u/hh8ck45uSJNrz8AeCx7GC5d/mkwM/9k2eOkaZY05NFNs5taUbsP5w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 c758add734..28bdb8e214 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -351,7 +351,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) @@ -875,7 +875,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; @@ -893,9 +893,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 329589e90f..9ff1c297a4 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -507,16 +507,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); @@ -531,12 +531,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); @@ -574,7 +574,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 a5548074fb..283f5ee627 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 cc7d438011..2f02803ea4 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; }; @@ -141,7 +142,6 @@ struct nfp_net_hw { /** Current values for control */ uint32_t ctrl; - uint8_t *ctrl_bar; uint8_t *tx_bar; uint8_t *rx_bar; @@ -251,7 +251,7 @@ static inline uint8_t nn_cfg_readb(struct nfp_net_hw *hw, uint32_t off) { - return nn_readb(hw->ctrl_bar + off); + return nn_readb(hw->super.ctrl_bar + off); } static inline void @@ -259,14 +259,14 @@ nn_cfg_writeb(struct nfp_net_hw *hw, uint32_t off, uint8_t val) { - nn_writeb(val, hw->ctrl_bar + off); + nn_writeb(val, hw->super.ctrl_bar + off); } static inline uint16_t nn_cfg_readw(struct nfp_net_hw *hw, uint32_t off) { - return rte_le_to_cpu_16(nn_readw(hw->ctrl_bar + off)); + return rte_le_to_cpu_16(nn_readw(hw->super.ctrl_bar + off)); } static inline void @@ -274,14 +274,14 @@ nn_cfg_writew(struct nfp_net_hw *hw, uint32_t off, uint16_t val) { - nn_writew(rte_cpu_to_le_16(val), hw->ctrl_bar + off); + nn_writew(rte_cpu_to_le_16(val), hw->super.ctrl_bar + off); } static inline uint32_t nn_cfg_readl(struct nfp_net_hw *hw, uint32_t off) { - return rte_le_to_cpu_32(nn_readl(hw->ctrl_bar + off)); + return rte_le_to_cpu_32(nn_readl(hw->super.ctrl_bar + off)); } static inline void @@ -289,14 +289,14 @@ nn_cfg_writel(struct nfp_net_hw *hw, uint32_t off, uint32_t val) { - nn_writel(rte_cpu_to_le_32(val), hw->ctrl_bar + off); + nn_writel(rte_cpu_to_le_32(val), hw->super.ctrl_bar + off); } static inline uint64_t nn_cfg_readq(struct nfp_net_hw *hw, uint32_t off) { - return rte_le_to_cpu_64(nn_readq(hw->ctrl_bar + off)); + return rte_le_to_cpu_64(nn_readq(hw->super.ctrl_bar + off)); } static inline void @@ -304,7 +304,7 @@ nn_cfg_writeq(struct nfp_net_hw *hw, uint32_t off, uint64_t val) { - nn_writeq(rte_cpu_to_le_64(val), hw->ctrl_bar + off); + nn_writeq(rte_cpu_to_le_64(val), hw->super.ctrl_bar + off); } /** diff --git a/drivers/net/nfp/nfp_net_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c index b0a427c98e..d469896a64 100644 --- a/drivers/net/nfp/nfp_net_ctrl.c +++ b/drivers/net/nfp/nfp_net_ctrl.c @@ -36,8 +36,8 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) caps = &hw->tlv_caps; nfp_net_tlv_caps_reset(caps); - data = hw->ctrl_bar + NFP_NET_CFG_TLV_BASE; - end = hw->ctrl_bar + NFP_NET_CFG_BAR_SZ; + data = hw->super.ctrl_bar + NFP_NET_CFG_TLV_BASE; + end = hw->super.ctrl_bar + NFP_NET_CFG_BAR_SZ; hdr = rte_read32(data); if (hdr == 0) { @@ -46,7 +46,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) } for (; ; data += length) { - offset = data - hw->ctrl_bar; + offset = data - hw->super.ctrl_bar; if (data + NFP_NET_CFG_TLV_VALUE > end) { PMD_DRV_LOG(ERR, "Reached end of BAR without END TLV"); @@ -87,7 +87,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) caps->mbox_len = length; if (length != 0) - caps->mbox_off = data - hw->ctrl_bar; + caps->mbox_off = data - hw->super.ctrl_bar; else caps->mbox_off = 0; break; From patchwork Tue Oct 17 05:45:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132698 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 161CA43186; Tue, 17 Oct 2023 07:47:16 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 37E99410FD; Tue, 17 Oct 2023 07:46:32 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2138.outbound.protection.outlook.com [40.107.244.138]) by mails.dpdk.org (Postfix) with ESMTP id 6AB59410D0 for ; Tue, 17 Oct 2023 07:46:29 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kaWMp7Tko2Bx+YMD0d+4qOCsY/O2Q25pu+B4OSDuzPqkyKBDfIbjMVAPTYGS8Kc/s+uC7P4afFDwcyltPBeC9RRA3rSbv57Kxg/kz+HJHzEm2onnkbSCl8oPNsJCDVe+WLWm/G09C5PtYfhskPe3uyUE9RAPbYMvMQszBbC8tTzk9InrR8n3naITzKsruMVCgMAVSqTttsJCqPrxBbxME9Tmejqyuy2XeQ1qP5ehQh6O/sGqMsynf+JKS1nogJG5F9MtKLQPHdpuciDA0bimB6zAfPXiTO20LIzv1/dBpeLdphbXWcqhwMR3yncmSNTM2SE1yU/ZlNOYaDpWWuhqDA== 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=yuYwq+iND+ZUVKDl73PvI3zM6qMnE1r1sFsNgxy0v2A=; b=LbxUBQJ3oaQLysclY5gJCORi6puCwhWb5d133f1SaEBmcpGdkjEFerWNj8FxeMDD6kxCVi/tMa/mKLMYPJCgHKltBeWW3QsK1lVF8zXQdzCGTBazGUYZCzPlAtL1NUn99LYQsaJlsXs+iyRD1uNE/6mDaMqwf2eR0mkVmLeB0y+RNgu9A4hrVwqMBE2dGSVSZ7W1Bh+HyC+56crhL/naExHYwPjFXHOB9LjACbd6fE1jVI3jlf/dZ4tMFjBDD8iIPyO3JPcasg04Sv5jjWpvBQaRue5e18kL7/GEfndaCNsxhoLoaoitU+AWb0QG1Siqa5kK9RbraCpswV+J2GJ9Wg== 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=yuYwq+iND+ZUVKDl73PvI3zM6qMnE1r1sFsNgxy0v2A=; b=qf53G478sOs7elFJ9qiKOIez6TqmvjBufYk5mLab2AvZ5qADHMFzzKZBTbg85ATUxd1OhHudWg7phoZZY9gk0XKJd83qjLY3rxjMprHCh5mFf3Xugzy2gTCFUvP3aZxZnzALVu0/wugBHohkMBTAEv8o/Urp5TwrELFuTrbOxV8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:27 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:27 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 08/25] net/nfp: extract the ctrl data field Date: Tue, 17 Oct 2023 13:45:28 +0800 Message-Id: <20231017054545.1692509-9-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: ca2a84be-6d9d-4291-f818-08dbced466d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yIY95KagtPjjUsqGs7E8IL58Z/AW0740txYWDGApYXR2lUP4zUxSSEuuZYKz/jFwl5RyfI+DAo+6t9Q5rK6QZYKM+50qQMqdypp+r0HKyKkAQn/CxlgKvXjBDY7quYCYY78NZEALWKZq8qdxqGIS/mEp55giFoAtgBu/6DNCVqng9nMBjsm0t+ldFg+yzmgqzjmGEoMOstscbh7mT4kh405fzMMP5ptjAEu4eYymna8LToBEkZtPomBEPDBcheAaQUFmMO5/2HhNhh2Q+uSf2JsOKc12jm2QBNwK/puyZ0K1lVKtPPC/baGXxinBDD6+g0jdg2LvEW5EalEQYatmaA57IVXyocniG9UceBjiusCuCW3Yu+nIRSSQt3gIh3Ou93tN6IRe2iSNT1vIjpNLBRw0BgrsM+nlC50aoiq5fQosX9f5XDyZUqRiizXLe9ygVNyEjfhTCjjVz/Sg63yNhst/5BL+78SHGLAScDYFUCDEotL3LHJ6IbWxPNYpv4+C8i/FD/1dJnYzXNJa0Aa2Hyu63+qQKup67ePn/fiLwkXTWQZ21MuooD+RIpjl+mUqKDAIzAVb62hVtfCLBpTkXicctyrN3VHKmPMAOFJx1TLzzbLSN+uC4zNNyQUHbBiYfQAiA8+pW4TOdFLgLdBuh8QoYWkdjPlo+/VJKVMd1n8= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(30864003)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WudlrPmSKshsMDWKU0Z9kn8dpuhCnoizb+0wOXZLKXheML7CD/BoiAbsI0GlSXzb7gwr1dv96J3xR1sSB+Xu4YvhFJS1oxUp8QsZBUfPn6UxncvpvjL6u+IR3w9TSStLkhS0fJkE1JLKqJYOCVhI/EYzCXCW1uy+OCpN/PKXhSg9BrpTIygCo/OCv8is/hlcAVVIb+fNjXC/TOVTPpOu94yH3fDCMq2ZV6wjdxSNHvyK2VoznepNoSYUVucT6TiNB2nmKbmNWe699jxaYpwJE4T4UDEmeTSBRuMfDG5+raIGy70qS9nG9AGAiRETtEPp4IFB4TPYdwVjlPY6nZXIL70G2SydoGywIR2DUl/Q4Q4Pf+c73fCBY3SPJ5fTaHQVZfn2lMyS0ouZhpZFe4hlJS8sBrKzNnfXL3j5jNcEUz4ZgreSG8/pn86IZFZfiLZlNs+aUZiCZATQ4Yj14pixBROtB7Cow0bOqsC0QZxbz8wIikxWbx+q2/jwm8P8fDFD6pGKac9v3IP1/QovQFQdMbd+20Nco03+bhhtDsp/SdWI87YH3Dx+Qbg020/95APgaZwIwihbsNY8ScCJkIjgrvNuQk/ghxLtwbnBqKJYSUrxRk8d9WE1JxMUBSbZsaSsZwgNaWcTM5aH1N2PL0LvkuBypeqlUfi069Ex2UgmNIaTku9CZ0jdftmFQ9ta7vY0WI2JoHv/aph1rNf6Jfdm9I0iytESTCYBatBWnp4hGWt6PGyBHnDE1vzIj0bbBbgS9R7cBz7oy+iXR3gH7KysAC0/nLRxVHI5TtpG2lR6KIb1RvgB+p6WXOtZhjSHV9Bnm/LNKndMLjlsfa/v6Pw1+n7FiV39qXOaNDZyS38T34DI2E3SkwPaglt4tO2ZrGFykVOX6kX0qWSTWVlX2DYZEWw4TOUvau2xb7PJFtootou4IHheMQRpLK8JFZCuBSHUCl8x3T16mgLi85uNabkOeDZxYashB6iM6ABeskuZFTzPJa4m3v5j1Gu8RE6RLI4aNKDH/pkziztUMA1ZBYpSXImHANqLWIpB0kBM0OOvAnFiDwfTIteLz54LDc+Zipj8fDocaahNrvW3Yw8PRzgye9uiscBoZaczSEgPkQg0mqCuSQLRBv5EWwrA5YLj6q/m2kkgTWH+37gSfq7kx6tl4bYQTRkGG5BahCSAjXiNmhocvpZ89dntKru21i1Bjwcve+MrH6J7bs3bvxKPY49b/Y2Nsrmqf/aSN9I8Pe5xeuBcrFlWBEGgbh60djqnSnmowrvoiUZGBgKiLivyoGuDa7KMWFfvHhjPGAg/798av/zaMOKLSk8kFfRJqwdn2D5Kls8G+zl1p4c3++4E8iZx5DOuPC7IQi4RSKEII/HTw7/ugG2ciGowqramA1e7y931rFnUcLaxBKaN0jgVRJtllRmvliwgQ7bQyzCpKLNO63QkFkfGyzqarSF4IKDEuxQyaBWhXKWqD03EAjlC8NWX/6i5JVfGykisCOWi7aagDB+mEApd4E3AQbIoN539i7zhgONKT2bXaYnUyQsMaAMxN3BNdNk+ekadvuUNsS969Ttur4wiPLyT11Hh6k8Clc08bmQ6MCjfNmczAWw1beNwUw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ca2a84be-6d9d-4291-f818-08dbced466d8 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:27.3255 (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: glNp/pO3DAlJRQ35JfAfp7ISWgm0n4WCFVO6BsXV7lETdAl+z1vdNHCXcVfUBSKsvNGyC3yhWaxnWqZFSD/IhF59YvEK+6JO87+Ws4fB/y4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 | 2 +- drivers/net/nfp/nfp_ethdev_vf.c | 2 +- drivers/net/nfp/nfp_net_common.c | 46 ++++++++++++++--------------- drivers/net/nfp/nfp_net_common.h | 4 +-- drivers/net/nfp/nfp_rxtx.c | 12 ++++---- 8 files changed, 38 insertions(+), 40 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 28bdb8e214..2aa0d9939e 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); @@ -723,7 +723,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 e9a16371bc..9f03b56c0c 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->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 533099278d..bc027210af 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->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 9ff1c297a4..ec9f6041fd 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -167,7 +167,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 283f5ee627..25b8e3a613 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 2f02803ea4..375e26bfc2 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -116,6 +116,7 @@ struct nfp_hw { uint8_t *ctrl_bar; uint8_t *qcp_cfg; uint32_t cap; + uint32_t ctrl; /**< Current values for control */ }; struct nfp_net_hw { @@ -139,9 +140,6 @@ struct nfp_net_hw { /** NFP ASIC params */ const struct nfp_dev_info *dev_info; - /** Current values for control */ - uint32_t ctrl; - uint8_t *tx_bar; uint8_t *rx_bar; diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index a0c7e0e9b5..a9dd464a6a 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -143,7 +143,7 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXCSUM) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXCSUM) == 0) return; /* If IPv4 and IP checksum error, fail */ @@ -307,7 +307,7 @@ nfp_net_parse_meta_hash(const struct nfp_meta_parsed *meta, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return; mbuf->hash.rss = meta->hash; @@ -339,7 +339,7 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, struct nfp_net_hw *hw = rxq->hw; /* Skip if firmware don't support setting vlan. */ - if ((hw->ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) + if ((hw->super.ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) return; /* @@ -347,12 +347,12 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, * 1. Using the metadata when NFP_NET_CFG_CTRL_RXVLAN_V2 is set, * 2. Using the descriptor when NFP_NET_CFG_CTRL_RXVLAN is set. */ - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { if (meta->vlan_layer > 0 && meta->vlan[0].offload != 0) { mb->vlan_tci = rte_cpu_to_le_32(meta->vlan[0].tci); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; } - } else if ((hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { + } else if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { if ((rxd->rxd.flags & PCIE_DESC_RX_VLAN) != 0) { mb->vlan_tci = rte_cpu_to_le_32(rxd->rxd.offload_info); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; @@ -385,7 +385,7 @@ nfp_net_parse_meta_qinq(const struct nfp_meta_parsed *meta, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || (hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) return; From patchwork Tue Oct 17 05:45:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132699 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 4197B43186; Tue, 17 Oct 2023 07:47:25 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A7C3141144; Tue, 17 Oct 2023 07:46:35 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2096.outbound.protection.outlook.com [40.107.244.96]) by mails.dpdk.org (Postfix) with ESMTP id 894C740ED2 for ; Tue, 17 Oct 2023 07:46:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cDCtTEZPAltNIkeKoaby4ChzxA7SOcpX3Lv4vugKpI/5MQEx0+F/ESGDbmPXCZiEKw9wJsDyFnesWxHSaIK3eI+thDBVHMIaUJg2x/9SyITGRC9WmKiY4fwUdzRyeG6RuZaJ5ft/Htux7/a9Q8Z3VE+45+BhTQDFB1PppwLYoF2PSAlgC4WVB20SBC78Rn/4mdaEibQjwaBW9rxZSIs7aZN2PPQwPj07njS/Kcvj95i+sx2RXo0tFyy04ZhNuSU2A7WkGrLLBz0zXwIH0QcUJik09UYduRap3dXdyvy95mp3X1BKWlRtVyDqHp7h2X+1kcUd/f5AYzsSQv7IeUKrtA== 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=/IkqEy5YaFqlFi5U31eiN5XkY5YdE0aZGaKCaRV7f9A=; b=LIZnf50FTtVCqiykbd64ZU1KNF5JREYhDY9MZzyH3J0/n9TbmGjjCtAcckhThNhE8JqKbvfB3UCGdrKv6by2xk5tYmyVl38PUv2GvFSN75/GIlPzIPrBPXCjq5TlEEZJJtoAzziPPHW69P1zFLj7tU6H8t7e4BRyYRC05+rmHz1gjJW4L03nywWocBdnJGwmPcHiYH5YbTlaE+n+ozVMamqlas4+hq2aFalb5FviwLQVOZenFiWERAkXAlZNsKirX0qYuoVDrNwdZ33yNjZROanNdSRLyS4byXRlnMKAlVcZzwTi0QTBkSGeN8isew5yWpWNvEvZoLpcSAm24U/WhQ== 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=/IkqEy5YaFqlFi5U31eiN5XkY5YdE0aZGaKCaRV7f9A=; b=VILzV3/+FXI54JagF74xDUMOGLbxItC4bSAM8Mm6o7GQ59Xa2UCE325boMJbRkcrc9Q2tvZfXMUcfnrcI7jtEkzhAY06yqXGgKCZXODfpH9x2P2WBEiYjdaKX0DfK3YnqFPhF+pv1BzTxjlIFeup+uyAU5YTUajOciZLzx0vl58= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:31 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:31 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 09/25] net/nfp: change the parameter of APIs Date: Tue, 17 Oct 2023 13:45:29 +0800 Message-Id: <20231017054545.1692509-10-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 52889de3-02e8-42aa-0284-08dbced468e3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zL/Z9jGc6WHj2BrvWqMtKGiAcs6ia6Ca6UPkjhUbXCzXKEOnfoXWFjVEISOOd1VKahVNlu5CLyKL6vf4L4SZyGLdtWyjTyTn+DqKqBo4qv1iAOiL4BYpDQZYGZPKkYGJ2+jSy4iI4Z8rgTe4VaG8ruG+18bBWKAa3o9z2n6RYtecUe/C4t8puzO+aZi9eUx3F4zL1qcuow1oVvhs5Qnn3dVQSSzrbuuauxKffdEfF26EDr+76ka4qcFh/yAOoUhiJzHrhKU4FvoE1hO7lAsUoUV7AMMUnggKygcjQe6uClr4g469qMRjcgail1cnlxw8iiN+b1KKSrukH6czSjUzM3Db3Q+2GWMO0EqBaVuqXL5WekHYE69DoS+QsTUHQj1XobkAPW/IBbUPXwhLdEWiS1vlfiE2wC0yIp/GSWL6HSmpWdkL4Sv5y906duAcppyZ8G4vpxVAgEWESiLDJMHlu3vZmZ5pcm2MbMTErpCYAXsK6Iy5Geb6NSB9mH1XzLwfoZIRTHXoWiEyRj05KTLlWR42zkex5Q4oyn1GCwmo+CpsqeB9jdux5sPV8D+pxNO/IXKcpIwbEEFuyWDNrptXGuV12FoJpyvOF1WbXYUASYZLvkzJei06oB0oy+8C7RtMzK0/beNiwIGKYu0l9leQCN84B5Xy/2GblL/l83LZ6nw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(30864003)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: v9dT43dt1GAe/MMszDrFusj7qprUX6kLj3Kob5VHs40B9khWKFUJH4vTw6gyeb/DlrcO3HLoczoEjNQHpWHeqsOkoP/L0ODqhxtLBDAaJq6MZNJWK3wovt1+KjrfAmI8RlbXRy6ukPLtB2dMb/D9MZU8VuFU/tuAG2dofJ+qwQX62UQpPgjfpSDWNvekijqBjFNW8tO7hm8WwiH1/gu+WVpH1RfcwWrnAPgON7hBYXd5+R4IM92aufQob2Y8aTzYHUVhPYFE9LMhaE5ro9pdFobh2bPapFLUXpZ58f3MyHzkBpsEgBElUJsf/3+oZmUqZ0y2eseIo84GjMFRQeCZSmYlgChhgDepCXaHKyVKEtVWBcraKlG7dXDcQZmx1xZepeRt/H84EmNOe26nWDUU3MFkjqVd+vUz1GmK5MrjNuyHJo5GthMKvZXxYniEWoTc3HvcocCh2AC6MhsBtRI5AfDGn4VO8+iof5ZJ/jKbfvDT2wU77/EfBuiF4ZZrBJHrJGbO8rLfm2UTrpKhmfJjKDdfxx95h9s99uU/g1CHYQX3ZLmmdfruqJVk0YzihqUDNGGrkKcGUYDoqU9tla8I1GtXznXMJeknuGl7PnE2JQn5GC5UDkZV3egn3L9JaKeLd9oi01t3Vn+AkLasGGOH2Nsq8CSLb1gl588QYvFqJUh56p/+6kUqPhatpP2xQN9O7/Z0GHx7dvBRywQGkClPBemPzyfJeFcjM6ebOrLHIerFOp7ArBwpFMLlkRYCOvZetW6OBy7juiJ63rwfNn8hWgAvcjqqSQ/p470Trvl/7y0GcsbiwjWwo7IFpoZNE/+yJaxFHX179O75zSsjQzrcVvGxJRb9Xb6A1SN5thpUjfrvaRK4cYLrh6M2aCtUcctR7LNALZxatOGLW0cX/3qJv6vc6nDANV9QiabazwDZpEQ03vwi6EY4vFCNzGzPDtxbHnOiKLpABnDH/nwqJjD3X9YPgzI/vy64CdA62vPiuDvBebtMDjCQVd0wxG+51ELS5M2ghiBa4rbINZCis4Lr6cGsujniLY5cxHXtBqQ/3W2ltdlAIzf29m9K2kyFKvUSmnqlD5Oe5PHXUubHo+E49JCguLnyz3xmf/HMzQedke4KKOCkdQ5O7RCYKNckANjTLOEp55ZImST9H7Tq2IueVkp3c+GfrPA+VZ5FJDHA97AD3m6yVisvDk0MSh8Z+RM01AognygPPrWxZSiBrDjMbRsD+3rbZkgkNUfWsNBXnkHuCqjdumsAF1UN4u/bwkbLoMR5PzX6RB2xrUxKFEvbTQzGSfI6nlggdlDs3BHgptsHY3wvlUsML1npGsaxv7+uTMUlUk2fkujwufCV89rj7Y+n7kSvPMmbCpY9WKSVR5T9jfKDTpOcnAju2DJ11QF+gquaT5NCvGBwXfv3+7Xl3EUS9ILZMD+S2qvlgLgEiFYMnu7v9XIPJcdPpUGL9fr/6oGeHKs464bEgRcMp4OJGq7vril1lMagVPFz9FBCU9LruYPugg696H6cxS7F2TAKf5Dn7lSuw3U/eeEea65qXoqoD5WIAqKOyaK0YZ1AsbLrAzbGYolS87EMa+Yss4I6JrgCvFUuKesPD8Pt7XtOOA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52889de3-02e8-42aa-0284-08dbced468e3 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:30.9656 (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: cH3V0jxHeJdSXqKfTCETjm398C/0PT4P5qbTGnsp9twBaxdxzXhZrKU3XIHYOi8JHjSCAEFAmCa+T7TLV9Ax7wLWBaJKPcHt/DHA7ZmsOM4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 2aa0d9939e..0fc1342740 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); rte_eth_dev_release_port(dev); @@ -358,9 +358,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; @@ -545,8 +545,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); @@ -610,8 +610,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 9f03b56c0c..68a841b69e 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 bc027210af..cef27b0d92 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 ec9f6041fd..6a4455e50f 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -284,7 +284,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; rte_eth_dev_release_port(dev); @@ -566,8 +566,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; @@ -624,7 +624,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 af85e8575c..db3b7492e1 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 25b8e3a613..4f830f2a2a 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->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->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 375e26bfc2..6576769214 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -246,63 +246,63 @@ nn_writeq(uint64_t val, } static inline uint8_t -nn_cfg_readb(struct nfp_net_hw *hw, +nn_cfg_readb(struct nfp_hw *hw, uint32_t off) { - return nn_readb(hw->super.ctrl_bar + off); + return nn_readb(hw->ctrl_bar + off); } static inline void -nn_cfg_writeb(struct nfp_net_hw *hw, +nn_cfg_writeb(struct nfp_hw *hw, uint32_t off, uint8_t val) { - nn_writeb(val, hw->super.ctrl_bar + off); + nn_writeb(val, hw->ctrl_bar + off); } static inline uint16_t -nn_cfg_readw(struct nfp_net_hw *hw, +nn_cfg_readw(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_16(nn_readw(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_16(nn_readw(hw->ctrl_bar + off)); } static inline void -nn_cfg_writew(struct nfp_net_hw *hw, +nn_cfg_writew(struct nfp_hw *hw, uint32_t off, uint16_t val) { - nn_writew(rte_cpu_to_le_16(val), hw->super.ctrl_bar + off); + nn_writew(rte_cpu_to_le_16(val), hw->ctrl_bar + off); } static inline uint32_t -nn_cfg_readl(struct nfp_net_hw *hw, +nn_cfg_readl(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_32(nn_readl(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_32(nn_readl(hw->ctrl_bar + off)); } static inline void -nn_cfg_writel(struct nfp_net_hw *hw, +nn_cfg_writel(struct nfp_hw *hw, uint32_t off, uint32_t val) { - nn_writel(rte_cpu_to_le_32(val), hw->super.ctrl_bar + off); + nn_writel(rte_cpu_to_le_32(val), hw->ctrl_bar + off); } static inline uint64_t -nn_cfg_readq(struct nfp_net_hw *hw, +nn_cfg_readq(struct nfp_hw *hw, uint32_t off) { - return rte_le_to_cpu_64(nn_readq(hw->super.ctrl_bar + off)); + return rte_le_to_cpu_64(nn_readq(hw->ctrl_bar + off)); } static inline void -nn_cfg_writeq(struct nfp_net_hw *hw, +nn_cfg_writeq(struct nfp_hw *hw, uint32_t off, uint64_t val) { - nn_writeq(rte_cpu_to_le_64(val), hw->super.ctrl_bar + off); + nn_writeq(rte_cpu_to_le_64(val), hw->ctrl_bar + off); } /** diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index a9dd464a6a..f17cc13cc1 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -925,8 +925,8 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev, * Telling the HW about the physical address of the RX ring and number * of descriptors in log2 format. */ - nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); - nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); + nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma); + nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc)); return 0; } From patchwork Tue Oct 17 05:45:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132700 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 95A2443186; Tue, 17 Oct 2023 07:47:34 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 20B3641151; Tue, 17 Oct 2023 07:46:39 +0200 (CEST) Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2094.outbound.protection.outlook.com [40.107.100.94]) by mails.dpdk.org (Postfix) with ESMTP id C64D941151 for ; Tue, 17 Oct 2023 07:46:37 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RkJjPyDWJmzBXgS380cPH1LbgVhsUujmfelSg2YdMqjEJJH5/+NozqY2V3pjkbxTD0MOH9s2oe9IJLCLO1Qf+ZOg4NxUGCpwLYLID5AZZSC2ueIYfeRouSYAgtN7LPg0sxc+HOaARh+aqc6FzU1iGBlCvk6961hXuvlBdOYBwmdd2cif/PxnJaIrvNr5i/2Vhoyz2bExyIBtXsFoy/CRJjbWviu5typ12KZ0PgtvVcPww4l6AIf+qNeG1CWUcVnR2ZWv+6fAcvVNtcoJx4X6NKi4M0k2RIS07sI85u9oqZsZF7LpVxnWvObhB9KX1o0YDvyeUknAdEaW7b48qwhZWg== 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=cXI8f+QjUf34NnydXs19wBpplD3yjgudUgFTkCGg9Ec=; b=X55wR+SHBYYZmwHhcVLxdGvX73yVs43PzG+nqwjSpTneBGMbouA5gy+W4w0XWcAN+ycsWDrtJcLMLIIalcN8E3wVyZlMt2kTeUlIOrh4jz29inf8k/gTL3MsRvJeMQp2dRYvmr37Bjt3/lbMiPJVhBEodiOK+XiLCW85nUXv8DWYJkgit1r5vYeAGOa4PkF7DqF3+DzKpGMOwZmfD1dH9j4ApYFmyLB+palA+cy5vQ02w6AD50AzLEZQBYEKwSC7BhEeEQlKdHS1yNdlj0aWvwvyWpvOVMLlAfGWj+Ox3Faj21Uid9UDjsGhUdodSvzr/NT1BZKghGeR/vbu/KBGNg== 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=cXI8f+QjUf34NnydXs19wBpplD3yjgudUgFTkCGg9Ec=; b=BYm6ArF8Er+qZ9UXtvFkoheRyEcoXnnayMRxkKGeaWYEvhDrsK1n7RF2usP7aZ4DSMNRZRZxAKDFbCFQpG4OK+125uYy/0jbfqwIYwKL8JuNjFPV5VTCqA9aiG/YRYqhbYePz2n0ycZlFP/sCE4QlknNu71tcwzFkMfs1IsQPsY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:34 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:34 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 10/25] net/nfp: change the parameter of reconfig Date: Tue, 17 Oct 2023 13:45:30 +0800 Message-Id: <20231017054545.1692509-11-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 7d24d04b-8e24-42f8-a217-08dbced46b47 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CaLsRxhrdGzH9T+c67d/G4yLAQKnENh2qYZLbebGdVYXah/tFr3j7hEWBTe2afZ+YJ2EQoSVzkBF3POtyWQAZEfF8S0LLAeYDVVxdlhCidPRwsXZiPm6uwAe/IdsPhwJbR8zNXGJZttclNWyx5Xi8rQODJfkNzjJZ1emFfJcbF92xrLUQju7BRhaowq5jK35FVtZhGu4roBLEBVejC8gn536FFVZTNeWRFTXoS4Cp1WDCsevGSUY6+8SgBIoa7rqVF26GaeUx8g2WI4k6oSaPuIxJLihaZs/e+xmlRRzkR5RX8x6W0eIxcOT3t0t1sXDet0ROfuqgM0BpgVmHjfo72X8gSanDMcWpb03Ro1nUYoFk7j3bSGVDkF2NqZ8Z89Fm/LxhGIAPQYBSJszmZFhEzva+psiq/EX3yHmkLK/p/eCbzKbKNQ4odF7t2+GoklU9PgkmhNCxacU5uMmfGowoCgoGrLwyY4o0ztVjtaROQkLOm3xkPUc+GXZwquUlveieZCwmdaVWnOSFZQmeelHrqYeKyXJo2YRUAECAc89aB72j4NylYRiml0t9UhLogk5aHv6CsvFF0n1JyXRmQQgFlW2YnlzSYOLW3TxOpa3Gku5kTO6GMmTWULX7mVYYJor5ADdBDPQDHGzfHaAuP76ywxz0kPlcAtSftlZO5z6QWY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(30864003)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BePKJ+hzdMiPqjHlVJ/Wq246CzlAMPx04tp97uQin34ldDC3y5EJhy6ClkDMyOmZv63kkn66Vi2JiaOogMIIkje3ID06bty3sXLZRz92rFM8+LSA4RqIV/23BEmNvM4EL5X3k971XwBSUWtFy1ICe/+dos1eyIQr6BkNSAnl/X7bUJwoBvMXvtilOwtUIerCmGaYoCC9EKyCG+iZOx/gerYbdZsptnPRRPkWIUCZBJK6I6EaVcn6zAyxoCB6aXtgT4/gNyvqtXLYJigv9rlmfaY0l1IaXnmyn9fm9vF7TVpJZmjYdxrv4Vy2ObzKMJ8iflvr7n9g0z7ZUnx5CC2jwF+a79v+UAmGGoSsRDJdnhNYzuVNG0IepPFQdlZ5xk0Kb6Kt/mxsPCYqRNKmOvH/kFyBmr7lhy2wcxqXRvZfxB7cP9YJDy3cwM1EjwOXkqgpDxyRXMZzFpH30ZXbgVxTvSHjbaAVwj+6UN6eUvSNw8Wn8jMokBxi44zr3tEogENag1IJAZmmdRy6ROS3DgkgVRoYhf7Teb1aijaR3z6myTLLDBztKfmmtYuB3AkwNh+sVsa0813kd9JTYAljRKcwu1B8IWC6DwY87LN+FlhgcRVD280jHL4CZEqNZRbysvgAz2emHa3DQ2D2knAUjXYzpRbRTNtrxXcpFza+6uWj+uPKObV0pIhFIZ6DidIasqk7tj1XqBUTksp3YKxlka0bEkGevWZXy9PK7rK09lRWK9M3YG4J7kS1auQKn+vgXcoaXt8Np4uqFL7ajk89Tx7hMOlBnqLJs1wGwFxEHOzRdai6Cjb82hU8RoYoe8eGnCv8UbcW+/PZyvRxr0+YOrTuy4jOSWpDj/xhBQalN5TUz4E6n61M6WANOn+N3uJzRYxvR6BZMNRo5NFTT9P8SSo5784z1+S4+b7Sq4igphof9S9ca1VrTuECRhdX5lMX2cEcrFN1yairEkbrtKA7eDlNtHhrYAaTipnQ4oTKswW/kiaWGcs1iCm1hEPgvXAaeFBccgJH2Bqzfo9s1gMzWZeQ0Iwf2jPyZMMTRkoZu3+D9qAKwZ+FFzwimtLw1ZzS6S6FLwZT2tWGhbwIB+udTomwv8iqU5vzzjeER04BOlQi+7Klp28vrg/kzfreUU6LJom+FblRgGxi32pDhracTFqA/crrxQqxwlWuQjjh1ejCxMbnkLck5k2RRZbuHxwId5ocj6Us0nY6XAhGLEnNZD9Xs+Ht8gZI7xwVWcnr4Gdl5mgTzbGIHvbTyey0dTQQmAbjM6y1gu/sh/ycXnvT/2wbfqs4xRONFx3yTE8kqNi/zbgThXksPynSuJCojop7YfO5iiWuBA6JVTwlQkIy2qEfD/E/g8J6PKIs3JITHSYE0MrHePqgdRck2mf2WdipbqeZhYbgNps1znhhVo6/39CrNLXPYVbag2uv0q9AYzySdLokuHuKuiD9tF3f1dcnXLOErPgIYNolBuF9kc+DdTki/CeXczp28FKbTGPv9TUsOzo2FCfam3QQ5lpRkp+Aewo9nZq7SBzdRwHH9PEpl2KDpvlipei9o0ssepYVU2ehYyqXE/Recgsb2swyin6DWYG7TsAkwKUEpaAETlrjQWSHvg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d24d04b-8e24-42f8-a217-08dbced46b47 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:34.8395 (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: quFDrp1upNYZTXyU82c9JpytBmvNza7K4cgv1w6dCBSGL3Nsa9inqcLUUaFGnRx3RQMfgo2PC6G9DEf/nv4oDP7C4ZOYUKIdyEkVJcqscX0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 | 32 +++--- drivers/net/nfp/nfp_ethdev_vf.c | 20 ++-- drivers/net/nfp/nfp_net_common.c | 155 +++++++++++++++------------- drivers/net/nfp/nfp_net_common.h | 5 +- 5 files changed, 144 insertions(+), 118 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 0fc1342740..a68b63f4ee 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); @@ -376,7 +380,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; } @@ -692,14 +696,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); @@ -708,7 +714,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 | @@ -717,13 +723,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 6a4455e50f..2f8df1c936 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->cap_ext; + cap_extend = net_hw->cap_ext; if ((cap_extend & NFP_NET_CFG_CTRL_PKT_TYPE) != 0) ctrl_extend = NFP_NET_CFG_CTRL_PKT_TYPE; @@ -149,7 +151,7 @@ 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_net_ext_reconfig(net_hw, ctrl_extend, update) != 0) return -EIO; /* @@ -163,11 +165,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; @@ -586,7 +588,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 4f830f2a2a..94d9072740 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,12 +271,12 @@ 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); @@ -313,16 +313,16 @@ nfp_net_ext_reconfig(struct nfp_net_hw *hw, { int ret; - rte_spinlock_lock(&hw->reconfig_lock); + rte_spinlock_lock(&hw->super.reconfig_lock); nn_cfg_writel(&hw->super, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); nn_cfg_writel(&hw->super, NFP_NET_CFG_UPDATE, update); rte_wmb(); - ret = __nfp_net_reconfig(hw, update); + ret = nfp_reconfig_real(&hw->super, update); - rte_spinlock_unlock(&hw->reconfig_lock); + rte_spinlock_unlock(&hw->super.reconfig_lock); if (ret != 0) { PMD_DRV_LOG(ERR, "Error nft net ext reconfig: ctrl_ext=%#08x update=%#08x", @@ -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 6576769214..02ec854498 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -117,6 +117,7 @@ struct nfp_hw { uint8_t *qcp_cfg; uint32_t cap; uint32_t ctrl; /**< Current values for control */ + rte_spinlock_t reconfig_lock; }; struct nfp_net_hw { @@ -149,8 +150,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; @@ -367,7 +366,7 @@ 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_reconfig(struct nfp_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_net_mbox_reconfig(struct nfp_net_hw *hw, uint32_t mbox_cmd); int nfp_net_configure(struct rte_eth_dev *dev); From patchwork Tue Oct 17 05:45:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132701 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 2B9D243186; Tue, 17 Oct 2023 07:47:43 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C36FB427E1; Tue, 17 Oct 2023 07:46:41 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2095.outbound.protection.outlook.com [40.107.244.95]) by mails.dpdk.org (Postfix) with ESMTP id A946440DFD for ; Tue, 17 Oct 2023 07:46:39 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GjuqZeqDl0y0Jb0dmo3hI8bRFzYSba0TnYeRDHn3NkMznnrto/NVpBvfz7ESxmsAarheWKkbhmmVizk4VSrcjlj1Px9n85v2xAPwlqW/SLxNYHNztTb86x9Eso8vVcAeOW20kVpNJ/BCBC13VD59eU7H0z9Ka02e+AHS87+CgYCbCKk93UHkcCrRLZgxn3y3qn/wqs9+QvWhab/k+XLNUwnNmZr8AZoW7momQb1H+m46hqxHRxdpbP9eyL1n6vdiFyv5CkJyPLOC9LmZMfwejULKPlojwOnZLzy6FETsxscxynKnwN2i8qJbT/t6Wu510Op6fJdBzyr3je6ZLPiOXA== 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=3eGbDPhqLLIKbz2eLGD1WCZsDHcX8F9pMDKetA7y6Yg=; b=FDQI7pBrTl82l2wSc29dmXmIfKGUu9O9rdim9qVsi9jXOZTvCKdj1+QiLthUomyW9KQMgYG+KATlfkTTr7lcb9e7kuxRBeLOhbA0s2T2OHzjVDQAbNjz3qFhNFvNSx8jEPCiA0Odw07ziGLzK6Qjc0Luk0wLgzZh/7GfF7v+dWsHzZkKUtD8OIj1ZyrJktC8VOoKT8Dv2qgPRVAF7sJeEEIejlC/ux/eeWooMRd2k8moU5+rDx5JQYwBE/v/N8YyULf2Usxmm5EUQ84VFQ9KAPzqbOEIDGvESc7nUBmY8liKF1WdwfyDaGkCoqdWRqlAcb+RGqCva4O5GbaMNwthyQ== 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=3eGbDPhqLLIKbz2eLGD1WCZsDHcX8F9pMDKetA7y6Yg=; b=px6Lg//qCELxLuCb8wRDDcZaOXlFRrIJZmeLlJAFilyuc//2tFEh9gFNbLfLKa/By6fRxpmumPslKM8KIMPlospk6FVHuwlQ7fW2wc0bJjY+o/9WdEuMXUAKkQd9zbJZ8Xwwjt9MgNLfGDQm6EhjomUF49IYOkoCDo1jwQkZR3g= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:37 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:37 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 11/25] net/nfp: extract the MAC address data field Date: Tue, 17 Oct 2023 13:45:31 +0800 Message-Id: <20231017054545.1692509-12-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ed0d223-fbbf-49c4-0ed4-08dbced46d54 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KvpSuyLAaCn0WzOHeUXxmxNHLkFi58qmVccPy6M5Xv7IUgsNeOaRLM2m5QAqq+Mr+LrtCIBmXXcaWv9iAzsiaimPaz+KNNhKhl/gBKMKIyRZhMifDCSe5b3eLRHsZygpdBavuYjQi5fqE8BpdNxMpTar6pWGIinqsB20D/KT1Qopz3uEuElTOc70/bhhb3QjM8/TcfMAdWyZtSLeSnN6csGerBArVtw3Z++1Wy0tA7QEg4FqYSGKOFNY/vEywxWYfgZqSSuyE1eQcweTAZdJK6BnAd4vp+jsML3fno5QPzBBBwx5t2xznxQp1pofyWw5joBcm9yMa6fUMDTO+TYziVCb9x3I+32pkjSGeNTiIWSv97GPOrhiMIL9nZgSKGwNWSAiKhcP/APGYXQn1qlrkQZTbdxriGmf3WgGTAHDhCaf96tdqzS6iUL79tWbIf4hI+0YYX9prj4pcvWHLLiSVj7Kg5U7cweAugQzrgLQNd3JBS1JLD7kVwXSUFSu3Pi1MlEGSxSKDRsHLKMfylFbwdw/VSjIBuXcysQ+0UwOCRVb4Ln38FRvPhXNyXOuWBhLtDko2vqh6c5q9NuteciQQGnuBwKxtm7bvLGnsgfkp6VuxUHLUpBRTd3H+FFmS2SU6dWqG88zrRBNQ3CkWOCB6EqxD4YbzYqpPigQNlDV4qI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /ty5huAFAq5iRngRSf17cCt9rSQCinW/wjQenhWuMS1WaDydOnVcYs4DPSF9IQFLb4N5KJ0yPXrj6a8pazISUv/U2SOcMyEKMszhV5Lk9D8NScUoge0LbjsKHTWgD3h6hIpk2RfI6EwadFhhGnJrYNEuDNDVyRPj3JQErFv8hFwdydM4ux0QOs4ogAaHegZV+rIYUjp+c7uUNut9MyxMPd9EmBtRXkzPqWSY64eDPW09JB7N/sRZZ9UFZM7jUUCyH5z35Bjev8PkXbX57foidkEIpHtSspshEmZedLqT6DTeWzsPtCYPKc3XQCmR21cswCYosZavRJ7QZpnySQENER1wsr1HZV/PnY3lFFcBT2rEMUW85e209rMX7W0MoY6eZECRImTzJZUJKqI8Q983ruGdeMkLz3Z0wcdCZlJRwn60ptjCjjmxyR4fpV0cxEwIwYoNNsUyFMNGJwDBXEXlPuaFsgIfsjBgdvPyrHIfJsNnqlGI3t7Y8o4AApyCFOW6hGzOkEHyFd/mh7S/S6ZrKfFVEOIhlQwoJuxYumWHAKXoK2TAIu/St60OJtkan0WQCEt4YNMGCUFslQOGU82kTWbEmzCriLHFykqVbqfMYwm2BMWZcn6j8kh+7B9CTg/DD+WWRmgL/BE5il6o4Zx+tdWMgL+mz0bMavaMHvBcEq+SItl1AiPd1ISLj0fpT8h/xJN1P6kWvc/P3maP9TlgvcPeQgxU6J56Sv5mhuJoTbXLtCKIPLR44Crqsalkco4KC5ym07dHxFjXx2lW9uBAcyiftyXBWJILjnZF16qYMwb734c8rYgq5b+4e6RcTpZz03aeIXnE9n5FRVUMxsbsxFD8hLJYlbTviFZhTjS6mKa22PqCF/p74HtD9BSbc8s1AMFDZs4H2qsD9G4CorG7eyNV1wOx7UFJ8G7+z4owdRZpShx6VS2U+OaNbyr78wy5FFw/gDjuJP5sD75vQCOGvlELvL2lFlJv2E2D8OhE9NLv3bvClDQDPBHVl3fi1pzxKZ9UmhDnraj2PNQnG15k+mxRy2NQWKGTGuR8ZBFnAOTgW77R7FUG7gnKDmI+QKBp1hFUx7f6Y/yzkNbWqTFZqFZREw/yc+Rhz49/WEjjN08BGR/0IQdXtnnNeQgF51zwldxkDf7Gc8zdj9hq5rJSQRHKc6hjOx9GpDY6h3IEbYYx3Zg7ruraKuwYyYMizMVCv80zBOv3ny9fqAc//QMys5lc89hwy5DOXQQhhfo4dCQTzp7ADllV6SPOMi6aU73BEjdckBLiiOKO4jN6i8+iseGu2I5SFwRwW/B22MrG6IyOr5dyvqDrwSvdZQ8ECEsbCaNCfW9uKGFbR6Xc4eHtGMw8Qrg7w2R3aH8AQoJSBkcm81RVP8XOsGMLcSW0N2Qe9tnyc5jVCpg6dMUouWkyC6P0GBG9xPVhsAZ/pdOwDOC7Efm3vweJi33o6nCQUWETtjTfRBficN3JM3ErhVtFPjy/QZvX1H5/DSwV6sAAViVXeUiF7IRYg2zztlp89l7vpjwyvYIBAtEf5oZXmYFR6qf77Us54iUkG+3sz6rUplDT7IEV3Rg6bmZk1rl1louqaNvHBaI51+QcrYtg/ZnadQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ed0d223-fbbf-49c4-0ed4-08dbced46d54 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:37.5648 (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: PLtawgrVzEVDEJteQDXpiSXTfHmw2spx4xpfvRMNaU2pONz75yaxCh2W6lUV62LvA9nN0jJ2hWxZGCxvmDfCUSh5swur3J2OudiFSOX1byU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 2f8df1c936..afa3a37763 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); @@ -598,18 +598,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; @@ -620,7 +620,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 94d9072740..cd199b1d4e 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 02ec854498..02a5ffefd8 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -118,6 +118,7 @@ struct nfp_hw { uint32_t cap; uint32_t ctrl; /**< Current values for control */ rte_spinlock_t reconfig_lock; + struct rte_ether_addr mac_addr; }; struct nfp_net_hw { @@ -158,8 +159,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; @@ -375,7 +374,7 @@ void nfp_net_log_device_information(const struct nfp_net_hw *hw); void nfp_net_enable_queues(struct rte_eth_dev *dev); void nfp_net_disable_queues(struct rte_eth_dev *dev); void nfp_net_params_setup(struct nfp_net_hw *hw); -void nfp_net_write_mac(struct nfp_net_hw *hw, uint8_t *mac); +void nfp_net_write_mac(struct nfp_hw *hw, uint8_t *mac); int nfp_net_set_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr); int nfp_configure_rx_interrupt(struct rte_eth_dev *dev, struct rte_intr_handle *intr_handle); From patchwork Tue Oct 17 05:45:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132702 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 4C04F43186; Tue, 17 Oct 2023 07:47:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 27ADB42670; Tue, 17 Oct 2023 07:46:47 +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 0806D42670 for ; Tue, 17 Oct 2023 07:46:45 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G0EemSBawP09PiUHqjdKStC9KU7qrW6IIf4edjfBlfVpU1NmEHTBkIjOSeOKjThOO24RFs+QfCms0qRG0w5zmBvTVyvZnC5Djzwrdc5n3t2i6vt/fnMEvaOZTMkmfb8dwFmfBZA2GfVx3GluSIgPmaI3jR0RUeTc6GQq5w5IHJHarXtGFKOYgHS3X5MPgu8g+ozacqdJEtBSypZpRt64otJyhTKXJ09vCYcVsuIlcdcGIXaYGPmVYq+/LPzu5PYdUmM4UCbwWU8nltNpAGgbROcFUX052kAzNFcHFdm/1+EJQL6ifqbDa1flzFsl5iOgLSFGTjHO2ACTwcHBtlM9Iw== 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=HciK6RIadZXbbJtVWORgZGZ8KDEgh1EKjYG2DV8MYbw=; b=ZM5AR/9G8fcrT8A701GgcpR4aQR5dp9PX66WWJkYDUdiaWVf7dJK8kTPQ8uQPn8HJaUWExqgM1/VD0bOv+Dsa9qzMIXQqxOXsDVAMkoXPaScoFsLesQ+rmKhLcnIvSa0ZYAvjr0ykKuZInFhEFld7lgkpp68dZjnj/3piT/m1wKDlpIlqC4ZKjIIz/d+AYh8V6I/fnPv/8xmYNOKIdf6n/RDpzMwV3Zi8B099D218czGA00oEl1p1ER8DAPTW5+vLHxfX9oZGmfzNxWSgXj4SGSEaworffcejLry5w9wzJxTN9ZnSfgVAp/7rdeTRhRVtcxILMW7VOniAoVkabqLqw== 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=HciK6RIadZXbbJtVWORgZGZ8KDEgh1EKjYG2DV8MYbw=; b=LLoPPBgJkKgZTxefdJt1jz2/AJaU8tZc5GhZlqYyaJEwOwFUIRTE5m5MMlZ/132ZOarD4VrgKA4OrD5mSqGCVzTJk3WtgoEbw6j831ZT+6Knnaw76N5JFBoJOPReWUqto1IVhEBtBhjCFxKB1ong1CSHviA4jyrkRFObDZYnAVM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:41 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:41 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 12/25] net/nfp: rename parameter in related logic Date: Tue, 17 Oct 2023 13:45:32 +0800 Message-Id: <20231017054545.1692509-13-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 211f274b-f2f9-4b4f-d4ce-08dbced46ef2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6fPsMQw54GQIMwcuL7R9yO9vLPjL+ZDTLXs9n3+UCNk4wlWB5REDFSFc7lQ3RX5p6aX8KWZkmLtbNOEAwCE4j+cGS1FC3l6Gkq1s8zzJceDB0MFR3FeSq4cWVA3PxcuaHFeHJ9103oG+IhKy0E298cfcc/XpvZoIBhi0x+UamwIH0jsvAfDgdO3l4UYgLp68z9EeQTLv9ULkCZFMryrJsLkVtRjL+FiAKshtTICjSIQXQqeCqlJgjoMO7co5k7g/sf62Bk/V+CpA1BCLSO5+FAGMY9s3osaMLNdiNK+uWnaKrwQ2q7cVM9HuYtd+zHFmrgbXkZTs8+ZIFfbC8oYGyam7VUtepIz5Hj2ikgOd9PY2Sv9upKooDPSz0XVWw39k8LPSu6JAYCIC2lDRoNBRsfBVr1F4kv5BjMGTaEqqjD/gZvCpEitGitqoiMKbpk7yYMManfIjZvZpwnaB0cdWLn6G+OTF0uWznVjB+asTqJ9BV6wTJszDHR/Fp9kfqOng2ayTHao88kOMEMYeUVvd4TZ1tCeJ4zwGvgJ2+i3Lm6F1AuMavS7OOyeb0ZlRZWV1JU3RYYL6cQDaIq1lm2t0MtA5rOHU0w5TqZo3gcMx7qsXBN6SLHuEaQp5bwRCbYMbpPkrW73KESjb6bL99tonvZk6Ke0KUwuvyP11K3NmTP4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(30864003)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uGkK8KS5OJMlDq6D4PT3pscYk/Ph/3ExqdwVE6xT/axI8IQDN5XV29hh+enRJE9D90L49bOqbwJ6iDdnO+vrwAkpleqQ2+Hfl07bfBkctmMpUIsYM/cPAjwO3DmPzRnhsFH/EmgHtWznfI8VLsVOQ40Hlgkou9MHbDMQ/+5Xjw7t/xpOG07+9o9wxLNtIFEjhquNvQsWyB2u+ktQ/fFS1LVkd8LuhihcCG1wvuGDtDro/9Js+yw5IMa7H7DqeiqqG06A1KmI9KX7s4d41SbxbASyrmExZIHVRxhpO9DutQZpnKV5qrm6nv4EOICAER/x3s2+/wMkJPGxbPkomiP4jKDnv0c81KEQHM+rzQE8nbSn/ls6hIqOMqiJW+YKZXufvbY56xtGcEk513l+1IR4Kuf9zodJAU1WziwXWOghNCYiAnpCybI2jJSPIAMymR+/sRuJC/WG4/ciuNCd+kJSpBTKKW8KQonZi3PadAB33ZKx+AGIyTXORiCPgGo7lx2WAk4gHPNC6RBEASrCqbZ0tLNmtBoxCB8ooG+ECLtecZDXf8r7eWBnaJXa50LKJH9n8I07d83PUNx4Tbzcs5Fi83pkyRC0xvUFxURk0A4f5689kbgNC8jatD7zIQa8JFTyALd8E9eHrGlfqQBBVgdjMHKlQJjM/mrGDPgRMrrDGnHCpIZqbm6I3U4TK0EHsrELWeK1mrT4zXBGEPMdu2Ovt2lYZSjg0eJXKqOhcsYNSEnHr1xxrSbl0sS3sjm+QfEqEdtPheufWlRzpGK3iSOTJ+TqAXxJ3ag8l7EqgA4MWpHBbzqQnjmGupCAvOn0bK4sR6qQR+0QX48xb+Roi2gXiYtUu+aAnbB2a8ird7lA9GlVG2xCgI4FbwA3kbEKymovv1s+c3E+bvuyMldvY9tXpu4tYzgA/vaEtzzg5az3ENOtHoI2bI8KnyWY/I7KmvcE3qB32brX9VDFZDV6DYToR0zYhy2vUB+GfiDrJmfhIBmgZ+lQKFQWyLVqrjmhf2Ct8nAVpZ0Ms260aWh+PfkWX+/EX14zCMvjYQ122o0nClJHPnjT5N7BsuhG46yJVMXJ6hHNsIq0agRMU57U/4H/tNqZeW+nSDO6jr7PpEVpkWzXdYQutY4GdE4V2uu9wq608oJID8oV2TlK+TntbX2g7PxNjLGxEEGNC1vzTjS294k/JbsO7TbkzI6ukhvas5a0x8hhpu6vzdFNnwfpjKfyl/PCXW86MSClcgxiyrmoVnbzEDFK6tl6iqhk+8MUmoKNN+P032ycbVNS3JtuPFAUloNNqKj5auSfMHcHvHr/Pefo8239Wwq3CPNisxjeP9B7eYIzjsCWtU0vF0ps8TQ/49pSBs/WJ7KEx44BvF7dfN8rmyz68MLISYrPZ6g6q8+AVi9Pou2eg2ISOz2M/dA5fbvoPy2OuhnMyCdUqkI1BuWbIXtjDve7FwGRrddf5KvoVQzmjouc07R5wixfYg0XWFbnwF3MN4gEhNWgntqZMQtMGQP9daGSV97bO0Ed4ZMvR6m7yC+z3cRr0m59XZ/pJuJ9cb+qJr47gCS1UgnhF4DmUPo+u6jGxJ625CbES0vKquu2mVlpyQwA/1hZRRD8yQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 211f274b-f2f9-4b4f-d4ce-08dbced46ef2 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:41.7610 (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: 4KeXbQhSl2AbKbtZao5sKDp0XET6wVLitBGpsmeUlLC/0Cc0McmoRglBTkCTUM6qsKdUIxfIsPh7Tuq7iUVnQrnHVL3RfDNa9+B09BWyFmY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 | 116 ++++++++++++++++------------ drivers/net/nfp/nfp_net_ctrl.c | 14 ++-- drivers/net/nfp/nfp_rxtx.c | 16 ++-- 7 files changed, 200 insertions(+), 184 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index a68b63f4ee..89982b502c 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 afa3a37763..c6147ef01e 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -478,11 +478,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); @@ -502,46 +502,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; @@ -557,38 +558,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); @@ -598,20 +599,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; @@ -620,13 +620,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 db3b7492e1..37ea60884d 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->cap_ext; + cap_extend = net_hw->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->cap_ext; + cap_extend = net_hw->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 cd199b1d4e..22222a9773 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -295,7 +295,7 @@ nfp_reconfig(struct nfp_hw *hw, * 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 + * @param net_hw * Device to reconfigure. * @param ctrl_ext * The value for the first word of extend ctrl field in the BAR config. @@ -307,22 +307,22 @@ nfp_reconfig(struct nfp_hw *hw, * - (-EIO) if I/O err and fail to reconfigure the device. */ int -nfp_net_ext_reconfig(struct nfp_net_hw *hw, +nfp_net_ext_reconfig(struct nfp_net_hw *net_hw, uint32_t ctrl_ext, uint32_t update) { int ret; - rte_spinlock_lock(&hw->super.reconfig_lock); + rte_spinlock_lock(&net_hw->super.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(&net_hw->super, NFP_NET_CFG_CTRL_WORD1, ctrl_ext); + nn_cfg_writel(&net_hw->super, NFP_NET_CFG_UPDATE, update); rte_wmb(); - ret = nfp_reconfig_real(&hw->super, update); + ret = nfp_reconfig_real(&net_hw->super, update); - 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 ext reconfig: ctrl_ext=%#08x update=%#08x", @@ -336,7 +336,7 @@ nfp_net_ext_reconfig(struct nfp_net_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_net_ext_reconfig(struct nfp_net_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->cap_ext; @@ -1292,7 +1297,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) .nb_mtu_seg_max = NFP_TX_MAX_MTU_SEG, }; - if ((hw->super.cap & NFP_NET_CFG_CTRL_RSS_ANY) != 0) { + if ((cap & NFP_NET_CFG_CTRL_RSS_ANY) != 0) { dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_RSS_HASH; dev_info->flow_type_rss_offloads = RTE_ETH_RSS_IPV4 | @@ -1615,9 +1620,11 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, uint8_t mask; uint32_t reta; uint16_t shift; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) { PMD_DRV_LOG(ERR, "The size of hash lookup table configured (%hu)" @@ -1642,7 +1649,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, /* If all 4 entries were set, don't need read RETA register */ if (mask != 0xF) - reta = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_ITBL + i); + reta = nn_cfg_readl(hw, NFP_NET_CFG_RSS_ITBL + i); for (j = 0; j < 4; j++) { if ((mask & (0x1 << j)) == 0) @@ -1655,7 +1662,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev, reta |= reta_conf[idx].reta[shift + j] << (8 * j); } - nn_cfg_writel(&hw->super, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift, reta); + nn_cfg_writel(hw, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift, reta); } return 0; @@ -1702,10 +1709,13 @@ nfp_net_reta_query(struct rte_eth_dev *dev, uint8_t mask; uint32_t reta; uint16_t shift; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; + + if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) { @@ -1728,7 +1738,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev, if (mask == 0) continue; - reta = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift); + reta = nn_cfg_readl(hw, NFP_NET_CFG_RSS_ITBL + (idx * 64) + shift); for (j = 0; j < 4; j++) { if ((mask & (0x1 << j)) == 0) continue; @@ -1748,15 +1758,17 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, uint8_t i; uint8_t key; uint64_t rss_hf; - struct nfp_net_hw *hw; + struct nfp_hw *hw; + struct nfp_net_hw *net_hw; uint32_t cfg_rss_ctrl = 0; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; /* Writing the key byte by byte */ for (i = 0; i < rss_conf->rss_key_len; i++) { memcpy(&key, &rss_conf->rss_key[i], 1); - nn_cfg_writeb(&hw->super, NFP_NET_CFG_RSS_KEY + i, key); + nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY + i, key); } rss_hf = rss_conf->rss_hf; @@ -1789,10 +1801,10 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ; /* Configuring where to apply the RSS hash */ - nn_cfg_writel(&hw->super, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); + nn_cfg_writel(hw, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); /* Writing the key size */ - nn_cfg_writeb(&hw->super, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len); + nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len); return 0; } @@ -1843,16 +1855,18 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, uint8_t i; uint8_t key; uint64_t rss_hf; + struct nfp_hw *hw; uint32_t cfg_rss_ctrl; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + hw = &net_hw->super; - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; rss_hf = rss_conf->rss_hf; - cfg_rss_ctrl = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_CTRL); + cfg_rss_ctrl = nn_cfg_readl(hw, NFP_NET_CFG_RSS_CTRL); if ((cfg_rss_ctrl & NFP_NET_CFG_RSS_IPV4) != 0) rss_hf |= RTE_ETH_RSS_IPV4; @@ -1882,11 +1896,11 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, rss_conf->rss_hf = rss_hf; /* Reading the key size */ - rss_conf->rss_key_len = nn_cfg_readl(&hw->super, NFP_NET_CFG_RSS_KEY_SZ); + rss_conf->rss_key_len = nn_cfg_readl(hw, NFP_NET_CFG_RSS_KEY_SZ); /* Reading the key byte a byte */ for (i = 0; i < rss_conf->rss_key_len; i++) { - key = nn_cfg_readb(&hw->super, NFP_NET_CFG_RSS_KEY + i); + key = nn_cfg_readb(hw, NFP_NET_CFG_RSS_KEY + i); memcpy(&rss_conf->rss_key[i], &key, 1); } diff --git a/drivers/net/nfp/nfp_net_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c index d469896a64..8848fa38fe 100644 --- a/drivers/net/nfp/nfp_net_ctrl.c +++ b/drivers/net/nfp/nfp_net_ctrl.c @@ -29,15 +29,15 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) uint32_t length; uint32_t offset; uint32_t tlv_type; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; struct nfp_net_tlv_caps *caps; - hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - caps = &hw->tlv_caps; + net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + caps = &net_hw->tlv_caps; nfp_net_tlv_caps_reset(caps); - data = hw->super.ctrl_bar + NFP_NET_CFG_TLV_BASE; - end = hw->super.ctrl_bar + NFP_NET_CFG_BAR_SZ; + data = net_hw->super.ctrl_bar + NFP_NET_CFG_TLV_BASE; + end = net_hw->super.ctrl_bar + NFP_NET_CFG_BAR_SZ; hdr = rte_read32(data); if (hdr == 0) { @@ -46,7 +46,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) } for (; ; data += length) { - offset = data - hw->super.ctrl_bar; + offset = data - net_hw->super.ctrl_bar; if (data + NFP_NET_CFG_TLV_VALUE > end) { PMD_DRV_LOG(ERR, "Reached end of BAR without END TLV"); @@ -87,7 +87,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev) caps->mbox_len = length; if (length != 0) - caps->mbox_off = data - hw->super.ctrl_bar; + caps->mbox_off = data - net_hw->super.ctrl_bar; else caps->mbox_off = 0; break; diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index f17cc13cc1..fc94e5f0b9 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -336,10 +336,10 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, struct nfp_net_rxq *rxq, struct rte_mbuf *mb) { - struct nfp_net_hw *hw = rxq->hw; + uint32_t ctrl = rxq->hw->super.ctrl; - /* Skip if firmware don't support setting vlan. */ - if ((hw->super.ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) + /* Skip if hardware don't support setting vlan. */ + if ((ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) return; /* @@ -347,12 +347,12 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, * 1. Using the metadata when NFP_NET_CFG_CTRL_RXVLAN_V2 is set, * 2. Using the descriptor when NFP_NET_CFG_CTRL_RXVLAN is set. */ - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { + if ((ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { if (meta->vlan_layer > 0 && meta->vlan[0].offload != 0) { mb->vlan_tci = rte_cpu_to_le_32(meta->vlan[0].tci); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; } - } else if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { + } else if ((ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { if ((rxd->rxd.flags & PCIE_DESC_RX_VLAN) != 0) { mb->vlan_tci = rte_cpu_to_le_32(rxd->rxd.offload_info); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; @@ -383,10 +383,10 @@ nfp_net_parse_meta_qinq(const struct nfp_meta_parsed *meta, struct nfp_net_rxq *rxq, struct rte_mbuf *mb) { - struct nfp_net_hw *hw = rxq->hw; + struct nfp_hw *hw = &rxq->hw->super; - if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || - (hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) + if ((hw->ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || + (hw->cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) return; if (meta->vlan_layer < NFP_META_MAX_VLANS) From patchwork Tue Oct 17 05:45:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132703 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 2CAA043186; Tue, 17 Oct 2023 07:47:58 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B207140EE7; Tue, 17 Oct 2023 07:46:51 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2099.outbound.protection.outlook.com [40.107.244.99]) by mails.dpdk.org (Postfix) with ESMTP id 50476410FB for ; Tue, 17 Oct 2023 07:46:50 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bkkzpbNXvRQ+2dIGhuKSwnwfarC86ZInjwKhWpBKa4p7QNDDqGH15S80hvJ5cS85VXr14FkJuAEr04KKoq0izqMlZsagnEKWDqafKB9CK6b/fJ/JS+PPYXIoxryN71Sz7AaXv1Q0HVLiYBt7WOy2nvLxv8LIsZLSkGQt05gdvMxrlihJ3eWULXgt2bJn91BSdQIDTg8pgVF8/QWj+pSdrSrX/eFlePy73aXLxeyD4zD2DovSrs07vVGFpNCxQh/szM5qqG+8W5rX/b4+doeZCNEWNVL6xW59sYpllLs9jxBzZ/Y84xCvD8OqOJhuLmGrmw75BsKvQMeQMBhRwXk8Sg== 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=NDWAkIF6t6zzepsGDvyDtnTUqqMCIS7ZO7HBj46rsQ0313Ht0y7o1QbovpJteDjU7Bzt+jfD/Q6Spd6vmv8XZKOHN4l4FEWyElRiSfO5+9ObcboL7UFaC2WsCImTM+rRz1Mh4EIKH31/NrdVr3joFUyshoSORQDPCwUnGWrHe9ohfgeq5fh+i0+jRTAFC34hph+1QAXJyaRYfnhHzhRtnNavz8dhzVsW44gon03GjvuiT1rQA0AmtCaosdG7I3Nc1RSlimnBKPrKV+Pwz/dhkVdqW+kKp+IQ77vHi6Wkgiu1VG7DPEyuk52vQ+y8rC99wV5Zpy/rnoDAEY7ecf+Bwg== 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=g6jNHpFZTrvPzowctaO5R4F1BwnFErbRuqFx5D8fg0nuyY59c4VElEVcfV5TDWATr6hcgRetO44v/l3MfA+asivAKU/abxfplmWgFngAFz4G6YRcyIg67vd25TgXDM3w+1+E5neV3ZhXunxsXZQ98J0rwuj01NKcaWhsZUYpiL0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:47 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:47 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 13/25] drivers: add the common ctrl module Date: Tue, 17 Oct 2023 13:45:33 +0800 Message-Id: <20231017054545.1692509-14-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 8307c350-a973-483e-2fe3-08dbced471b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AeGE6j0xl5vvKQyvfpgzdIT/a3ogLbdB2Pb3G0Vyy+qekkszpnNfOyx0DZJe2lDt8Yr8YqqJzj2k4jTbkoO3bmmGIiwtViPmkU/78GvXBRT+hthMwbgs46WO/Sqgrx4aK09fWlpGfQYJgTASZqVWdCkHB/2t+3b0asdWBJIIyBN+e9Y3untsialUNLx7eqNCYP4XhxU40QQyditPVFRIRkEzoe5w9BCjXSykrYG8InoHtUsXxtwQccrAeKkatz+tK1gCupcy2MegxZ35FtPKRYpazxD3FowvWxQvgN7htn74nkMXlrUYls9AL8+iXsHBwrPc1VKs92c/jajpgNs/duJ/Fk5M1DOXhEcsRLPmfxKWIvEw8GYW1oSWJTmuOnPTp1uHYbfh53HpQdegic4OFXvxoNkZqzLiOaIbtvugROZJNiYPzM4mfGY/AQXWfo03500/3mnC6e5hF7NJsEAs1kycn6Vq9xA8z4O7ZEGKu3d0AFWYf7kU7R3bxHFLHfVtdzHq3DEpC5ZnqKkW3OmiJgEf4B6JGJ5H5FOtOf/esMS39jaEifL1qIajol7ilG52xlZFPesTx+N1jAKDdwk2zmGWiNT4d7OJTJTZC3Ry6KakMtBsBAUCDwahDmW43um8q90wIybySFVTv2hKeajwJKHqnTqkNnHd1qLrUmNjb4s= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(30864003)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zEIQHhmjb9drqj3VwG3JHu/zpQOiuqF1qe6rOoioNBFBzSBqYjYlXqXn4vg1VfksQSf6ZTRGNyR0RXS8awHQ7B9Ce9EyR7mI6eVAsa2+0F6avdhpv1oi008O7+TMvb0KwlSregX3yewIcAtBsUY4PV5lAHn9aY+em+TCTn4ZABsF2YcMJ8qJ507xLfMv2ueSf1TfanwYzMMJiij0AvMavFVd9zbhRiuma8uHSolhEG9mZsotcGTpCvrC25f4CDbARCS+LVLQ1NtmZeGUaQQeI/K1ukAFZ1Grl0AgIuUKZF5AOwdPysj6pngyEsWtTVmj3HOTRJQM1zA/Cr4J4fc4WyD5uYX47Zcs4RJdlbW55SLIeOnyYCjGzU+o5aPqwD94ygk76iFoTMcubv6r0X+ZFReChPXZ5DUdGbCE5E03Um49C7ejzSU/MKb5KE8jbF1wwoK34KAQ9qzg+PUOdO2PYOmN7pXIwKa67Fty0sDUJMZY2O8mV6toqs2zgRhU/IK3iyNeQdSUHmWZMezNfR89wYfMpGFZIl/LBGLJG9me3NBudU/UPLhN2HvIfsra0dd2sXXkiwiBaZ/FREONPwXt7VWAdEiK9DmDUwYlRiad5WkYBnLirKHYnnqWI6GhPJsQHNWrcgeyJK+0x8M7YIbfMkzEm/3D8t11kT9q5c7awjt89LdHMAldwoB8ssnd3chlERPev3HQEK6Ic3yGbXEr5OpaSGRLXUa7tqcc4Igyt0M3NS0mC4na6l3rt4NIhuPihxUhnf2wl1j9bDay6s4YQ9dVmQC08bQBnj2sAlX4m3EZyzSYn3rBIQZDiopzMarXOHps/e1fa7o5IYdaKl7gLnyy1im66tCGNWSM8kHrRxOITMm/dlnQ1rP08h1yamf0MhYGCCqV7VCnxyvwXNTitpyWG8ZbNwezafzoj6e+4JaRHeGwhUauaniV+DOtCFEIC6/P1KvWry3gFRuXCoSQyrvutZVcsB1lBzezc4WaOfPMYUA07wtbKUuHnJh3f241+CgwBmS6OkU/MSKSif+5AqjCAy7c5lviusHO//GeoDztc6KvJyLUHUYGpGeYRelcTgqGVDewt7san7yGjT6z7EhjdJJ001aL0NmfbmALVP9NM8fnO0towE8SjyjBLFItyrQHfd5vdQYbNIvp8QKaKuMdGD9Dk0+vi7utvm5vnsgMrZ3mrVWPP/3qnLavevOdDEfGnM+SPB0oSi/F21mFm4KImqD5nzWKMDiO/KMkDZwzhqoVClByWiaPJzct3DPAeJBmNF0nYmHR+Hp5RxLgK5UaIKb3jlib7l2OG8//HjrcfPS6WhrFcCkIzrd5WvObOHivZYU5R+P8nf2oiaskz9qxz2TOy615350MVjBabA+t3zMAmWR0x+ujZ3pjN7nbNIu2zqyF60EjlVPRtpCSXL2GVlXX2lx8MCCQVS7IXUErP9nuQfHhodNI/CfmCq8KICR+EyKiUgNzq5ux/EPvvfivCDkX7u066yDBF9MfnzbCYA0mNlYMaguDKEZO7os0Kjfq1wzMLunsNXw0fy5M/G3ARm/lnVUqqrlp50nlwUuHJKJx42wsnz+AAU3ICmItq2GRB8OWsFrbLt9JFdzU7A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8307c350-a973-483e-2fe3-08dbced471b9 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:47.2954 (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: +TMmgfzToXVmn+B3WvKSnhL+q8M2+GFrpSq4F1ZPID6CXa1ngMWNUnW90tXozK2nK6zLOqWC1yHoDR1N+sl4ZFLNAroL/0dW2vMs+VtmGbI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add the common ctrl module. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_ctrl.h | 374 +++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_ctrl.h | 365 +------------------------- 2 files changed, 375 insertions(+), 364 deletions(-) create mode 100644 drivers/common/nfp/nfp_common_ctrl.h diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h new file mode 100644 index 0000000000..3c8cd916cf --- /dev/null +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -0,0 +1,374 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_COMMON_CTRL_H__ +#define __NFP_COMMON_CTRL_H__ + +/* + * Configuration BAR size. + * + * On the NFP6000, due to THB-350, the configuration BAR is 32K in size. + */ +#define NFP_NET_CFG_BAR_SZ (32 * 1024) + +/* Offset in Freelist buffer where packet starts on RX */ +#define NFP_NET_RX_OFFSET 32 + +/* Working with metadata api (NFD version > 3.0) */ +#define NFP_NET_META_FIELD_SIZE 4 +#define NFP_NET_META_FIELD_MASK ((1 << NFP_NET_META_FIELD_SIZE) - 1) +#define NFP_NET_META_HEADER_SIZE 4 +#define NFP_NET_META_NFDK_LENGTH 8 + +/* Working with metadata vlan api (NFD version >= 2.0) */ +#define NFP_NET_META_VLAN_INFO 16 +#define NFP_NET_META_VLAN_OFFLOAD 31 +#define NFP_NET_META_VLAN_TPID 3 +#define NFP_NET_META_VLAN_MASK ((1 << NFP_NET_META_VLAN_INFO) - 1) +#define NFP_NET_META_VLAN_TPID_MASK ((1 << NFP_NET_META_VLAN_TPID) - 1) +#define NFP_NET_META_TPID(d) (((d) >> NFP_NET_META_VLAN_INFO) & \ + NFP_NET_META_VLAN_TPID_MASK) + +/* Prepend field types */ +#define NFP_NET_META_HASH 1 /* Next field carries hash type */ +#define NFP_NET_META_VLAN 4 +#define NFP_NET_META_PORTID 5 +#define NFP_NET_META_IPSEC 9 + +#define NFP_META_PORT_ID_CTRL ~0U + +/* Hash type prepended when a RSS hash was computed */ +#define NFP_NET_RSS_NONE 0 +#define NFP_NET_RSS_IPV4 1 +#define NFP_NET_RSS_IPV6 2 +#define NFP_NET_RSS_IPV6_EX 3 +#define NFP_NET_RSS_IPV4_TCP 4 +#define NFP_NET_RSS_IPV6_TCP 5 +#define NFP_NET_RSS_IPV6_EX_TCP 6 +#define NFP_NET_RSS_IPV4_UDP 7 +#define NFP_NET_RSS_IPV6_UDP 8 +#define NFP_NET_RSS_IPV6_EX_UDP 9 +#define NFP_NET_RSS_IPV4_SCTP 10 +#define NFP_NET_RSS_IPV6_SCTP 11 + +/* + * @NFP_NET_TXR_MAX: Maximum number of TX rings + * @NFP_NET_TXR_MASK: Mask for TX rings + * @NFP_NET_RXR_MAX: Maximum number of RX rings + * @NFP_NET_RXR_MASK: Mask for RX rings + */ +#define NFP_NET_TXR_MAX 64 +#define NFP_NET_TXR_MASK (NFP_NET_TXR_MAX - 1) +#define NFP_NET_RXR_MAX 64 +#define NFP_NET_RXR_MASK (NFP_NET_RXR_MAX - 1) + +/* + * Read/Write config words (0x0000 - 0x002c) + * @NFP_NET_CFG_CTRL: Global control + * @NFP_NET_CFG_UPDATE: Indicate which fields are updated + * @NFP_NET_CFG_TXRS_ENABLE: Bitmask of enabled TX rings + * @NFP_NET_CFG_RXRS_ENABLE: Bitmask of enabled RX rings + * @NFP_NET_CFG_MTU: Set MTU size + * @NFP_NET_CFG_FLBUFSZ: Set freelist buffer size (must be larger than MTU) + * @NFP_NET_CFG_EXN: MSI-X table entry for exceptions + * @NFP_NET_CFG_LSC: MSI-X table entry for link state changes + * @NFP_NET_CFG_MACADDR: MAC address + * + * TODO: + * - define Error details in UPDATE + */ +#define NFP_NET_CFG_CTRL 0x0000 +#define NFP_NET_CFG_CTRL_ENABLE (0x1 << 0) /* Global enable */ +#define NFP_NET_CFG_CTRL_PROMISC (0x1 << 1) /* Enable Promisc mode */ +#define NFP_NET_CFG_CTRL_L2BC (0x1 << 2) /* Allow L2 Broadcast */ +#define NFP_NET_CFG_CTRL_L2MC (0x1 << 3) /* Allow L2 Multicast */ +#define NFP_NET_CFG_CTRL_RXCSUM (0x1 << 4) /* Enable RX Checksum */ +#define NFP_NET_CFG_CTRL_TXCSUM (0x1 << 5) /* Enable TX Checksum */ +#define NFP_NET_CFG_CTRL_RXVLAN (0x1 << 6) /* Enable VLAN strip */ +#define NFP_NET_CFG_CTRL_TXVLAN (0x1 << 7) /* Enable VLAN insert */ +#define NFP_NET_CFG_CTRL_SCATTER (0x1 << 8) /* Scatter DMA */ +#define NFP_NET_CFG_CTRL_GATHER (0x1 << 9) /* Gather DMA */ +#define NFP_NET_CFG_CTRL_LSO (0x1 << 10) /* LSO/TSO */ +#define NFP_NET_CFG_CTRL_RXQINQ (0x1 << 13) /* Enable QINQ strip */ +#define NFP_NET_CFG_CTRL_RXVLAN_V2 (0x1 << 15) /* Enable VLAN strip with metadata */ +#define NFP_NET_CFG_CTRL_RINGCFG (0x1 << 16) /* Ring runtime changes */ +#define NFP_NET_CFG_CTRL_RSS (0x1 << 17) /* RSS */ +#define NFP_NET_CFG_CTRL_IRQMOD (0x1 << 18) /* Interrupt moderation */ +#define NFP_NET_CFG_CTRL_RINGPRIO (0x1 << 19) /* Ring priorities */ +#define NFP_NET_CFG_CTRL_MSIXAUTO (0x1 << 20) /* MSI-X auto-masking */ +#define NFP_NET_CFG_CTRL_TXRWB (0x1 << 21) /* Write-back of TX ring */ +#define NFP_NET_CFG_CTRL_L2SWITCH (0x1 << 22) /* L2 Switch */ +#define NFP_NET_CFG_CTRL_TXVLAN_V2 (0x1 << 23) /* Enable VLAN insert with metadata */ +#define NFP_NET_CFG_CTRL_VXLAN (0x1 << 24) /* Enable VXLAN */ +#define NFP_NET_CFG_CTRL_NVGRE (0x1 << 25) /* Enable NVGRE */ +#define NFP_NET_CFG_CTRL_MSIX_TX_OFF (0x1 << 26) /* Disable MSIX for TX */ +#define NFP_NET_CFG_CTRL_LSO2 (0x1 << 28) /* LSO/TSO (version 2) */ +#define NFP_NET_CFG_CTRL_RSS2 (0x1 << 29) /* RSS (version 2) */ +#define NFP_NET_CFG_CTRL_CSUM_COMPLETE (0x1 << 30) /* Checksum complete */ +#define NFP_NET_CFG_CTRL_LIVE_ADDR (0x1U << 31) /* Live MAC addr change */ +#define NFP_NET_CFG_UPDATE 0x0004 +#define NFP_NET_CFG_UPDATE_GEN (0x1 << 0) /* General update */ +#define NFP_NET_CFG_UPDATE_RING (0x1 << 1) /* Ring config change */ +#define NFP_NET_CFG_UPDATE_RSS (0x1 << 2) /* RSS config change */ +#define NFP_NET_CFG_UPDATE_TXRPRIO (0x1 << 3) /* TX Ring prio change */ +#define NFP_NET_CFG_UPDATE_RXRPRIO (0x1 << 4) /* RX Ring prio change */ +#define NFP_NET_CFG_UPDATE_MSIX (0x1 << 5) /* MSI-X change */ +#define NFP_NET_CFG_UPDATE_L2SWITCH (0x1 << 6) /* Switch changes */ +#define NFP_NET_CFG_UPDATE_RESET (0x1 << 7) /* Update due to FLR */ +#define NFP_NET_CFG_UPDATE_IRQMOD (0x1 << 8) /* IRQ mod change */ +#define NFP_NET_CFG_UPDATE_VXLAN (0x1 << 9) /* VXLAN port change */ +#define NFP_NET_CFG_UPDATE_MACADDR (0x1 << 11) /* MAC address change */ +#define NFP_NET_CFG_UPDATE_MBOX (0x1 << 12) /* Mailbox update */ +#define NFP_NET_CFG_UPDATE_ERR (0x1U << 31) /* A error occurred */ +#define NFP_NET_CFG_TXRS_ENABLE 0x0008 +#define NFP_NET_CFG_RXRS_ENABLE 0x0010 +#define NFP_NET_CFG_MTU 0x0018 +#define NFP_NET_CFG_FLBUFSZ 0x001c +#define NFP_NET_CFG_EXN 0x001f +#define NFP_NET_CFG_LSC 0x0020 +#define NFP_NET_CFG_MACADDR 0x0024 + +#define NFP_NET_CFG_CTRL_LSO_ANY (NFP_NET_CFG_CTRL_LSO | NFP_NET_CFG_CTRL_LSO2) +#define NFP_NET_CFG_CTRL_RSS_ANY (NFP_NET_CFG_CTRL_RSS | NFP_NET_CFG_CTRL_RSS2) + +#define NFP_NET_CFG_CTRL_CHAIN_META (NFP_NET_CFG_CTRL_RSS2 | \ + NFP_NET_CFG_CTRL_CSUM_COMPLETE) + +/* Version number helper defines */ +struct nfp_net_fw_ver { + uint8_t minor; + uint8_t major; + uint8_t class; + /** + * This byte can be extended for more use. + * BIT0: NFD dp type, refer NFP_NET_CFG_VERSION_DP_NFDx + * BIT[7:1]: reserved + */ + uint8_t extend; +}; + +/* + * Read-only words (0x0030 - 0x0050): + * @NFP_NET_CFG_VERSION: Firmware version number + * @NFP_NET_CFG_STS: Status + * @NFP_NET_CFG_CAP: Capabilities (same bits as @NFP_NET_CFG_CTRL) + * @NFP_NET_MAX_TXRINGS: Maximum number of TX rings + * @NFP_NET_MAX_RXRINGS: Maximum number of RX rings + * @NFP_NET_MAX_MTU: Maximum support MTU + * @NFP_NET_CFG_START_TXQ: Start Queue Control Queue to use for TX (PF only) + * @NFP_NET_CFG_START_RXQ: Start Queue Control Queue to use for RX (PF only) + * + * TODO: + * - define more STS bits + */ +#define NFP_NET_CFG_VERSION 0x0030 +#define NFP_NET_CFG_VERSION_DP_NFD3 0 +#define NFP_NET_CFG_VERSION_DP_NFDK 1 +#define NFP_NET_CFG_STS 0x0034 +#define NFP_NET_CFG_STS_LINK (0x1 << 0) /* Link up or down */ +/* Link rate */ +#define NFP_NET_CFG_STS_LINK_RATE_SHIFT 1 +#define NFP_NET_CFG_STS_LINK_RATE_MASK 0xF +#define NFP_NET_CFG_STS_LINK_RATE_UNSUPPORTED 0 +#define NFP_NET_CFG_STS_LINK_RATE_UNKNOWN 1 +#define NFP_NET_CFG_STS_LINK_RATE_1G 2 +#define NFP_NET_CFG_STS_LINK_RATE_10G 3 +#define NFP_NET_CFG_STS_LINK_RATE_25G 4 +#define NFP_NET_CFG_STS_LINK_RATE_40G 5 +#define NFP_NET_CFG_STS_LINK_RATE_50G 6 +#define NFP_NET_CFG_STS_LINK_RATE_100G 7 + +/* + * NSP Link rate is a 16-bit word. It is no longer determined by + * firmware, instead it is read from the nfp_eth_table of the + * associated pf_dev and written to the NFP_NET_CFG_STS_NSP_LINK_RATE + * address by the PMD each time the port is reconfigured. + */ +#define NFP_NET_CFG_STS_NSP_LINK_RATE 0x0036 + +#define NFP_NET_CFG_CAP 0x0038 +#define NFP_NET_CFG_MAX_TXRINGS 0x003c +#define NFP_NET_CFG_MAX_RXRINGS 0x0040 +#define NFP_NET_CFG_MAX_MTU 0x0044 +/* Next two words are being used by VFs for solving THB350 issue */ +#define NFP_NET_CFG_START_TXQ 0x0048 +#define NFP_NET_CFG_START_RXQ 0x004c + +/* + * NFP-3200 workaround (0x0050 - 0x0058) + * @NFP_NET_CFG_SPARE_ADDR: DMA address for ME code to use (e.g. YDS-155 fix) + */ +#define NFP_NET_CFG_SPARE_ADDR 0x0050 +/* + * NFP6000/NFP4000 - Prepend configuration + */ +#define NFP_NET_CFG_RX_OFFSET 0x0050 +#define NFP_NET_CFG_RX_OFFSET_DYNAMIC 0 /* Prepend mode */ + +/* Start anchor of the TLV area */ +#define NFP_NET_CFG_TLV_BASE 0x0058 + +/** + * Reuse spare address to contain the offset from the start of + * the host buffer where the first byte of the received frame + * will land. Any metadata will come prior to that offset. If the + * value in this field is 0, it means that the metadata will + * always land starting at the first byte of the host buffer and + * packet data will immediately follow the metadata. As always, + * the RX descriptor indicates the presence or absence of metadata + * along with the length thereof. + */ +#define NFP_NET_CFG_RX_OFFSET_ADDR 0x0050 + +#define NFP_NET_CFG_VXLAN_PORT 0x0060 +#define NFP_NET_CFG_VXLAN_SZ 0x0008 + +/* Offload definitions */ +#define NFP_NET_N_VXLAN_PORTS (NFP_NET_CFG_VXLAN_SZ / sizeof(uint16_t)) + +/* + * 3 words reserved for extended ctrl words (0x0098 - 0x00a4) + * 3 words reserved for extended cap words (0x00a4 - 0x00b0) + * Currently only one word is used, can be extended in future. + */ +#define NFP_NET_CFG_CTRL_WORD1 0x0098 +#define NFP_NET_CFG_CTRL_PKT_TYPE (0x1 << 0) +#define NFP_NET_CFG_CTRL_IPSEC (0x1 << 1) /**< IPsec offload */ +#define NFP_NET_CFG_CTRL_IPSEC_SM_LOOKUP (0x1 << 3) /**< SA short match lookup */ +#define NFP_NET_CFG_CTRL_IPSEC_LM_LOOKUP (0x1 << 4) /**< SA long match lookup */ + +#define NFP_NET_CFG_CAP_WORD1 0x00a4 + +/* 16B reserved for future use (0x00b0 - 0x00c0). */ +#define NFP_NET_CFG_RESERVED 0x00b0 +#define NFP_NET_CFG_RESERVED_SZ 0x0010 + +/* + * RSS configuration (0x0100 - 0x01ac): + * Used only when NFP_NET_CFG_CTRL_RSS_ANY is enabled + * @NFP_NET_CFG_RSS_CFG: RSS configuration word + * @NFP_NET_CFG_RSS_KEY: RSS "secret" key + * @NFP_NET_CFG_RSS_ITBL: RSS indirection table + */ +#define NFP_NET_CFG_RSS_BASE 0x0100 +#define NFP_NET_CFG_RSS_CTRL NFP_NET_CFG_RSS_BASE +#define NFP_NET_CFG_RSS_MASK (0x7f) +#define NFP_NET_CFG_RSS_MASK_of(_x) ((_x) & 0x7f) +#define NFP_NET_CFG_RSS_IPV4 (1 << 8) /* RSS for IPv4 */ +#define NFP_NET_CFG_RSS_IPV6 (1 << 9) /* RSS for IPv6 */ +#define NFP_NET_CFG_RSS_IPV4_TCP (1 << 10) /* RSS for IPv4/TCP */ +#define NFP_NET_CFG_RSS_IPV4_UDP (1 << 11) /* RSS for IPv4/UDP */ +#define NFP_NET_CFG_RSS_IPV6_TCP (1 << 12) /* RSS for IPv6/TCP */ +#define NFP_NET_CFG_RSS_IPV6_UDP (1 << 13) /* RSS for IPv6/UDP */ +#define NFP_NET_CFG_RSS_IPV4_SCTP (1 << 14) /* RSS for IPv4/SCTP */ +#define NFP_NET_CFG_RSS_IPV6_SCTP (1 << 15) /* RSS for IPv6/SCTP */ +#define NFP_NET_CFG_RSS_TOEPLITZ (1 << 24) /* Use Toeplitz hash */ +#define NFP_NET_CFG_RSS_KEY (NFP_NET_CFG_RSS_BASE + 0x4) +#define NFP_NET_CFG_RSS_KEY_SZ 0x28 +#define NFP_NET_CFG_RSS_ITBL (NFP_NET_CFG_RSS_BASE + 0x4 + \ + NFP_NET_CFG_RSS_KEY_SZ) +#define NFP_NET_CFG_RSS_ITBL_SZ 0x80 + +/* + * TX ring configuration (0x200 - 0x800) + * @NFP_NET_CFG_TXR_BASE: Base offset for TX ring configuration + * @NFP_NET_CFG_TXR_ADDR: Per TX ring DMA address (8B entries) + * @NFP_NET_CFG_TXR_WB_ADDR: Per TX ring write back DMA address (8B entries) + * @NFP_NET_CFG_TXR_SZ: Per TX ring size (1B entries) + * @NFP_NET_CFG_TXR_VEC: Per TX ring MSI-X table entry (1B entries) + * @NFP_NET_CFG_TXR_PRIO: Per TX ring priority (1B entries) + * @NFP_NET_CFG_TXR_IRQ_MOD: Per TX ring interrupt moderation (4B entries) + */ +#define NFP_NET_CFG_TXR_BASE 0x0200 +#define NFP_NET_CFG_TXR_ADDR(_x) (NFP_NET_CFG_TXR_BASE + ((_x) * 0x8)) +#define NFP_NET_CFG_TXR_WB_ADDR(_x) (NFP_NET_CFG_TXR_BASE + 0x200 + \ + ((_x) * 0x8)) +#define NFP_NET_CFG_TXR_SZ(_x) (NFP_NET_CFG_TXR_BASE + 0x400 + (_x)) +#define NFP_NET_CFG_TXR_VEC(_x) (NFP_NET_CFG_TXR_BASE + 0x440 + (_x)) +#define NFP_NET_CFG_TXR_PRIO(_x) (NFP_NET_CFG_TXR_BASE + 0x480 + (_x)) +#define NFP_NET_CFG_TXR_IRQ_MOD(_x) (NFP_NET_CFG_TXR_BASE + 0x500 + \ + ((_x) * 0x4)) + +/* + * RX ring configuration (0x0800 - 0x0c00) + * @NFP_NET_CFG_RXR_BASE: Base offset for RX ring configuration + * @NFP_NET_CFG_RXR_ADDR: Per TX ring DMA address (8B entries) + * @NFP_NET_CFG_RXR_SZ: Per TX ring size (1B entries) + * @NFP_NET_CFG_RXR_VEC: Per TX ring MSI-X table entry (1B entries) + * @NFP_NET_CFG_RXR_PRIO: Per TX ring priority (1B entries) + * @NFP_NET_CFG_RXR_IRQ_MOD: Per TX ring interrupt moderation (4B entries) + */ +#define NFP_NET_CFG_RXR_BASE 0x0800 +#define NFP_NET_CFG_RXR_ADDR(_x) (NFP_NET_CFG_RXR_BASE + ((_x) * 0x8)) +#define NFP_NET_CFG_RXR_SZ(_x) (NFP_NET_CFG_RXR_BASE + 0x200 + (_x)) +#define NFP_NET_CFG_RXR_VEC(_x) (NFP_NET_CFG_RXR_BASE + 0x240 + (_x)) +#define NFP_NET_CFG_RXR_PRIO(_x) (NFP_NET_CFG_RXR_BASE + 0x280 + (_x)) +#define NFP_NET_CFG_RXR_IRQ_MOD(_x) (NFP_NET_CFG_RXR_BASE + 0x300 + \ + ((_x) * 0x4)) + +/* + * Interrupt Control/Cause registers (0x0c00 - 0x0d00) + * These registers are only used when MSI-X auto-masking is not + * enabled (@NFP_NET_CFG_CTRL_MSIXAUTO not set). The array is index + * by MSI-X entry and are 1B in size. If an entry is zero, the + * corresponding entry is enabled. If the FW generates an interrupt, + * it writes a cause into the corresponding field. This also masks + * the MSI-X entry and the host driver must clear the register to + * re-enable the interrupt. + */ +#define NFP_NET_CFG_ICR_BASE 0x0c00 +#define NFP_NET_CFG_ICR(_x) (NFP_NET_CFG_ICR_BASE + (_x)) +#define NFP_NET_CFG_ICR_UNMASKED 0x0 +#define NFP_NET_CFG_ICR_RXTX 0x1 +#define NFP_NET_CFG_ICR_LSC 0x2 + +/* + * General device stats (0x0d00 - 0x0d90) + * All counters are 64bit. + */ +#define NFP_NET_CFG_STATS_BASE 0x0d00 +#define NFP_NET_CFG_STATS_RX_DISCARDS (NFP_NET_CFG_STATS_BASE + 0x00) +#define NFP_NET_CFG_STATS_RX_ERRORS (NFP_NET_CFG_STATS_BASE + 0x08) +#define NFP_NET_CFG_STATS_RX_OCTETS (NFP_NET_CFG_STATS_BASE + 0x10) +#define NFP_NET_CFG_STATS_RX_UC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x18) +#define NFP_NET_CFG_STATS_RX_MC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x20) +#define NFP_NET_CFG_STATS_RX_BC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x28) +#define NFP_NET_CFG_STATS_RX_FRAMES (NFP_NET_CFG_STATS_BASE + 0x30) +#define NFP_NET_CFG_STATS_RX_MC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x38) +#define NFP_NET_CFG_STATS_RX_BC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x40) + +#define NFP_NET_CFG_STATS_TX_DISCARDS (NFP_NET_CFG_STATS_BASE + 0x48) +#define NFP_NET_CFG_STATS_TX_ERRORS (NFP_NET_CFG_STATS_BASE + 0x50) +#define NFP_NET_CFG_STATS_TX_OCTETS (NFP_NET_CFG_STATS_BASE + 0x58) +#define NFP_NET_CFG_STATS_TX_UC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x60) +#define NFP_NET_CFG_STATS_TX_MC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x68) +#define NFP_NET_CFG_STATS_TX_BC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x70) +#define NFP_NET_CFG_STATS_TX_FRAMES (NFP_NET_CFG_STATS_BASE + 0x78) +#define NFP_NET_CFG_STATS_TX_MC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x80) +#define NFP_NET_CFG_STATS_TX_BC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x88) + +#define NFP_NET_CFG_STATS_APP0_FRAMES (NFP_NET_CFG_STATS_BASE + 0x90) +#define NFP_NET_CFG_STATS_APP0_BYTES (NFP_NET_CFG_STATS_BASE + 0x98) +#define NFP_NET_CFG_STATS_APP1_FRAMES (NFP_NET_CFG_STATS_BASE + 0xa0) +#define NFP_NET_CFG_STATS_APP1_BYTES (NFP_NET_CFG_STATS_BASE + 0xa8) +#define NFP_NET_CFG_STATS_APP2_FRAMES (NFP_NET_CFG_STATS_BASE + 0xb0) +#define NFP_NET_CFG_STATS_APP2_BYTES (NFP_NET_CFG_STATS_BASE + 0xb8) +#define NFP_NET_CFG_STATS_APP3_FRAMES (NFP_NET_CFG_STATS_BASE + 0xc0) +#define NFP_NET_CFG_STATS_APP3_BYTES (NFP_NET_CFG_STATS_BASE + 0xc8) + +/* + * Per ring stats (0x1000 - 0x1800) + * Options, 64bit per entry + * @NFP_NET_CFG_TXR_STATS: TX ring statistics (Packet and Byte count) + * @NFP_NET_CFG_RXR_STATS: RX ring statistics (Packet and Byte count) + */ +#define NFP_NET_CFG_TXR_STATS_BASE 0x1000 +#define NFP_NET_CFG_TXR_STATS(_x) (NFP_NET_CFG_TXR_STATS_BASE + \ + ((_x) * 0x10)) +#define NFP_NET_CFG_RXR_STATS_BASE 0x1400 +#define NFP_NET_CFG_RXR_STATS(_x) (NFP_NET_CFG_RXR_STATS_BASE + \ + ((_x) * 0x10)) + +#endif /* __NFP_COMMON_CTRL_H__ */ diff --git a/drivers/net/nfp/nfp_net_ctrl.h b/drivers/net/nfp/nfp_net_ctrl.h index 3772b28a66..ee1b784bb1 100644 --- a/drivers/net/nfp/nfp_net_ctrl.h +++ b/drivers/net/nfp/nfp_net_ctrl.h @@ -10,370 +10,7 @@ #include -/* - * Configuration BAR size. - * - * On the NFP6000, due to THB-350, the configuration BAR is 32K in size. - */ -#define NFP_NET_CFG_BAR_SZ (32 * 1024) - -/* Offset in Freelist buffer where packet starts on RX */ -#define NFP_NET_RX_OFFSET 32 - -/* Working with metadata api (NFD version > 3.0) */ -#define NFP_NET_META_FIELD_SIZE 4 -#define NFP_NET_META_FIELD_MASK ((1 << NFP_NET_META_FIELD_SIZE) - 1) -#define NFP_NET_META_HEADER_SIZE 4 -#define NFP_NET_META_NFDK_LENGTH 8 - -/* Working with metadata vlan api (NFD version >= 2.0) */ -#define NFP_NET_META_VLAN_INFO 16 -#define NFP_NET_META_VLAN_OFFLOAD 31 -#define NFP_NET_META_VLAN_TPID 3 -#define NFP_NET_META_VLAN_MASK ((1 << NFP_NET_META_VLAN_INFO) - 1) -#define NFP_NET_META_VLAN_TPID_MASK ((1 << NFP_NET_META_VLAN_TPID) - 1) -#define NFP_NET_META_TPID(d) (((d) >> NFP_NET_META_VLAN_INFO) & \ - NFP_NET_META_VLAN_TPID_MASK) - -/* Prepend field types */ -#define NFP_NET_META_HASH 1 /* Next field carries hash type */ -#define NFP_NET_META_VLAN 4 -#define NFP_NET_META_PORTID 5 -#define NFP_NET_META_IPSEC 9 - -#define NFP_META_PORT_ID_CTRL ~0U - -/* Hash type prepended when a RSS hash was computed */ -#define NFP_NET_RSS_NONE 0 -#define NFP_NET_RSS_IPV4 1 -#define NFP_NET_RSS_IPV6 2 -#define NFP_NET_RSS_IPV6_EX 3 -#define NFP_NET_RSS_IPV4_TCP 4 -#define NFP_NET_RSS_IPV6_TCP 5 -#define NFP_NET_RSS_IPV6_EX_TCP 6 -#define NFP_NET_RSS_IPV4_UDP 7 -#define NFP_NET_RSS_IPV6_UDP 8 -#define NFP_NET_RSS_IPV6_EX_UDP 9 -#define NFP_NET_RSS_IPV4_SCTP 10 -#define NFP_NET_RSS_IPV6_SCTP 11 - -/* - * @NFP_NET_TXR_MAX: Maximum number of TX rings - * @NFP_NET_TXR_MASK: Mask for TX rings - * @NFP_NET_RXR_MAX: Maximum number of RX rings - * @NFP_NET_RXR_MASK: Mask for RX rings - */ -#define NFP_NET_TXR_MAX 64 -#define NFP_NET_TXR_MASK (NFP_NET_TXR_MAX - 1) -#define NFP_NET_RXR_MAX 64 -#define NFP_NET_RXR_MASK (NFP_NET_RXR_MAX - 1) - -/* - * Read/Write config words (0x0000 - 0x002c) - * @NFP_NET_CFG_CTRL: Global control - * @NFP_NET_CFG_UPDATE: Indicate which fields are updated - * @NFP_NET_CFG_TXRS_ENABLE: Bitmask of enabled TX rings - * @NFP_NET_CFG_RXRS_ENABLE: Bitmask of enabled RX rings - * @NFP_NET_CFG_MTU: Set MTU size - * @NFP_NET_CFG_FLBUFSZ: Set freelist buffer size (must be larger than MTU) - * @NFP_NET_CFG_EXN: MSI-X table entry for exceptions - * @NFP_NET_CFG_LSC: MSI-X table entry for link state changes - * @NFP_NET_CFG_MACADDR: MAC address - * - * TODO: - * - define Error details in UPDATE - */ -#define NFP_NET_CFG_CTRL 0x0000 -#define NFP_NET_CFG_CTRL_ENABLE (0x1 << 0) /* Global enable */ -#define NFP_NET_CFG_CTRL_PROMISC (0x1 << 1) /* Enable Promisc mode */ -#define NFP_NET_CFG_CTRL_L2BC (0x1 << 2) /* Allow L2 Broadcast */ -#define NFP_NET_CFG_CTRL_L2MC (0x1 << 3) /* Allow L2 Multicast */ -#define NFP_NET_CFG_CTRL_RXCSUM (0x1 << 4) /* Enable RX Checksum */ -#define NFP_NET_CFG_CTRL_TXCSUM (0x1 << 5) /* Enable TX Checksum */ -#define NFP_NET_CFG_CTRL_RXVLAN (0x1 << 6) /* Enable VLAN strip */ -#define NFP_NET_CFG_CTRL_TXVLAN (0x1 << 7) /* Enable VLAN insert */ -#define NFP_NET_CFG_CTRL_SCATTER (0x1 << 8) /* Scatter DMA */ -#define NFP_NET_CFG_CTRL_GATHER (0x1 << 9) /* Gather DMA */ -#define NFP_NET_CFG_CTRL_LSO (0x1 << 10) /* LSO/TSO */ -#define NFP_NET_CFG_CTRL_RXQINQ (0x1 << 13) /* Enable QINQ strip */ -#define NFP_NET_CFG_CTRL_RXVLAN_V2 (0x1 << 15) /* Enable VLAN strip with metadata */ -#define NFP_NET_CFG_CTRL_RINGCFG (0x1 << 16) /* Ring runtime changes */ -#define NFP_NET_CFG_CTRL_RSS (0x1 << 17) /* RSS */ -#define NFP_NET_CFG_CTRL_IRQMOD (0x1 << 18) /* Interrupt moderation */ -#define NFP_NET_CFG_CTRL_RINGPRIO (0x1 << 19) /* Ring priorities */ -#define NFP_NET_CFG_CTRL_MSIXAUTO (0x1 << 20) /* MSI-X auto-masking */ -#define NFP_NET_CFG_CTRL_TXRWB (0x1 << 21) /* Write-back of TX ring */ -#define NFP_NET_CFG_CTRL_L2SWITCH (0x1 << 22) /* L2 Switch */ -#define NFP_NET_CFG_CTRL_TXVLAN_V2 (0x1 << 23) /* Enable VLAN insert with metadata */ -#define NFP_NET_CFG_CTRL_VXLAN (0x1 << 24) /* Enable VXLAN */ -#define NFP_NET_CFG_CTRL_NVGRE (0x1 << 25) /* Enable NVGRE */ -#define NFP_NET_CFG_CTRL_MSIX_TX_OFF (0x1 << 26) /* Disable MSIX for TX */ -#define NFP_NET_CFG_CTRL_LSO2 (0x1 << 28) /* LSO/TSO (version 2) */ -#define NFP_NET_CFG_CTRL_RSS2 (0x1 << 29) /* RSS (version 2) */ -#define NFP_NET_CFG_CTRL_CSUM_COMPLETE (0x1 << 30) /* Checksum complete */ -#define NFP_NET_CFG_CTRL_LIVE_ADDR (0x1U << 31) /* Live MAC addr change */ -#define NFP_NET_CFG_UPDATE 0x0004 -#define NFP_NET_CFG_UPDATE_GEN (0x1 << 0) /* General update */ -#define NFP_NET_CFG_UPDATE_RING (0x1 << 1) /* Ring config change */ -#define NFP_NET_CFG_UPDATE_RSS (0x1 << 2) /* RSS config change */ -#define NFP_NET_CFG_UPDATE_TXRPRIO (0x1 << 3) /* TX Ring prio change */ -#define NFP_NET_CFG_UPDATE_RXRPRIO (0x1 << 4) /* RX Ring prio change */ -#define NFP_NET_CFG_UPDATE_MSIX (0x1 << 5) /* MSI-X change */ -#define NFP_NET_CFG_UPDATE_L2SWITCH (0x1 << 6) /* Switch changes */ -#define NFP_NET_CFG_UPDATE_RESET (0x1 << 7) /* Update due to FLR */ -#define NFP_NET_CFG_UPDATE_IRQMOD (0x1 << 8) /* IRQ mod change */ -#define NFP_NET_CFG_UPDATE_VXLAN (0x1 << 9) /* VXLAN port change */ -#define NFP_NET_CFG_UPDATE_MACADDR (0x1 << 11) /* MAC address change */ -#define NFP_NET_CFG_UPDATE_MBOX (0x1 << 12) /* Mailbox update */ -#define NFP_NET_CFG_UPDATE_ERR (0x1U << 31) /* A error occurred */ -#define NFP_NET_CFG_TXRS_ENABLE 0x0008 -#define NFP_NET_CFG_RXRS_ENABLE 0x0010 -#define NFP_NET_CFG_MTU 0x0018 -#define NFP_NET_CFG_FLBUFSZ 0x001c -#define NFP_NET_CFG_EXN 0x001f -#define NFP_NET_CFG_LSC 0x0020 -#define NFP_NET_CFG_MACADDR 0x0024 - -#define NFP_NET_CFG_CTRL_LSO_ANY (NFP_NET_CFG_CTRL_LSO | NFP_NET_CFG_CTRL_LSO2) -#define NFP_NET_CFG_CTRL_RSS_ANY (NFP_NET_CFG_CTRL_RSS | NFP_NET_CFG_CTRL_RSS2) - -#define NFP_NET_CFG_CTRL_CHAIN_META (NFP_NET_CFG_CTRL_RSS2 | \ - NFP_NET_CFG_CTRL_CSUM_COMPLETE) - -/* Version number helper defines */ -struct nfp_net_fw_ver { - uint8_t minor; - uint8_t major; - uint8_t class; - /** - * This byte can be extended for more use. - * BIT0: NFD dp type, refer NFP_NET_CFG_VERSION_DP_NFDx - * BIT[7:1]: reserved - */ - uint8_t extend; -}; - -/* - * Read-only words (0x0030 - 0x0050): - * @NFP_NET_CFG_VERSION: Firmware version number - * @NFP_NET_CFG_STS: Status - * @NFP_NET_CFG_CAP: Capabilities (same bits as @NFP_NET_CFG_CTRL) - * @NFP_NET_MAX_TXRINGS: Maximum number of TX rings - * @NFP_NET_MAX_RXRINGS: Maximum number of RX rings - * @NFP_NET_MAX_MTU: Maximum support MTU - * @NFP_NET_CFG_START_TXQ: Start Queue Control Queue to use for TX (PF only) - * @NFP_NET_CFG_START_RXQ: Start Queue Control Queue to use for RX (PF only) - * - * TODO: - * - define more STS bits - */ -#define NFP_NET_CFG_VERSION 0x0030 -#define NFP_NET_CFG_VERSION_DP_NFD3 0 -#define NFP_NET_CFG_VERSION_DP_NFDK 1 -#define NFP_NET_CFG_STS 0x0034 -#define NFP_NET_CFG_STS_LINK (0x1 << 0) /* Link up or down */ -/* Link rate */ -#define NFP_NET_CFG_STS_LINK_RATE_SHIFT 1 -#define NFP_NET_CFG_STS_LINK_RATE_MASK 0xF -#define NFP_NET_CFG_STS_LINK_RATE_UNSUPPORTED 0 -#define NFP_NET_CFG_STS_LINK_RATE_UNKNOWN 1 -#define NFP_NET_CFG_STS_LINK_RATE_1G 2 -#define NFP_NET_CFG_STS_LINK_RATE_10G 3 -#define NFP_NET_CFG_STS_LINK_RATE_25G 4 -#define NFP_NET_CFG_STS_LINK_RATE_40G 5 -#define NFP_NET_CFG_STS_LINK_RATE_50G 6 -#define NFP_NET_CFG_STS_LINK_RATE_100G 7 - -/* - * NSP Link rate is a 16-bit word. It is no longer determined by - * firmware, instead it is read from the nfp_eth_table of the - * associated pf_dev and written to the NFP_NET_CFG_STS_NSP_LINK_RATE - * address by the PMD each time the port is reconfigured. - */ -#define NFP_NET_CFG_STS_NSP_LINK_RATE 0x0036 - -#define NFP_NET_CFG_CAP 0x0038 -#define NFP_NET_CFG_MAX_TXRINGS 0x003c -#define NFP_NET_CFG_MAX_RXRINGS 0x0040 -#define NFP_NET_CFG_MAX_MTU 0x0044 -/* Next two words are being used by VFs for solving THB350 issue */ -#define NFP_NET_CFG_START_TXQ 0x0048 -#define NFP_NET_CFG_START_RXQ 0x004c - -/* - * NFP-3200 workaround (0x0050 - 0x0058) - * @NFP_NET_CFG_SPARE_ADDR: DMA address for ME code to use (e.g. YDS-155 fix) - */ -#define NFP_NET_CFG_SPARE_ADDR 0x0050 -/* - * NFP6000/NFP4000 - Prepend configuration - */ -#define NFP_NET_CFG_RX_OFFSET 0x0050 -#define NFP_NET_CFG_RX_OFFSET_DYNAMIC 0 /* Prepend mode */ - -/* Start anchor of the TLV area */ -#define NFP_NET_CFG_TLV_BASE 0x0058 - -/** - * Reuse spare address to contain the offset from the start of - * the host buffer where the first byte of the received frame - * will land. Any metadata will come prior to that offset. If the - * value in this field is 0, it means that the metadata will - * always land starting at the first byte of the host buffer and - * packet data will immediately follow the metadata. As always, - * the RX descriptor indicates the presence or absence of metadata - * along with the length thereof. - */ -#define NFP_NET_CFG_RX_OFFSET_ADDR 0x0050 - -#define NFP_NET_CFG_VXLAN_PORT 0x0060 -#define NFP_NET_CFG_VXLAN_SZ 0x0008 - -/* Offload definitions */ -#define NFP_NET_N_VXLAN_PORTS (NFP_NET_CFG_VXLAN_SZ / sizeof(uint16_t)) - -/* - * 3 words reserved for extended ctrl words (0x0098 - 0x00a4) - * 3 words reserved for extended cap words (0x00a4 - 0x00b0) - * Currently only one word is used, can be extended in future. - */ -#define NFP_NET_CFG_CTRL_WORD1 0x0098 -#define NFP_NET_CFG_CTRL_PKT_TYPE (0x1 << 0) -#define NFP_NET_CFG_CTRL_IPSEC (0x1 << 1) /**< IPsec offload */ -#define NFP_NET_CFG_CTRL_IPSEC_SM_LOOKUP (0x1 << 3) /**< SA short match lookup */ -#define NFP_NET_CFG_CTRL_IPSEC_LM_LOOKUP (0x1 << 4) /**< SA long match lookup */ - -#define NFP_NET_CFG_CAP_WORD1 0x00a4 - -/* 16B reserved for future use (0x00b0 - 0x00c0). */ -#define NFP_NET_CFG_RESERVED 0x00b0 -#define NFP_NET_CFG_RESERVED_SZ 0x0010 - -/* - * RSS configuration (0x0100 - 0x01ac): - * Used only when NFP_NET_CFG_CTRL_RSS_ANY is enabled - * @NFP_NET_CFG_RSS_CFG: RSS configuration word - * @NFP_NET_CFG_RSS_KEY: RSS "secret" key - * @NFP_NET_CFG_RSS_ITBL: RSS indirection table - */ -#define NFP_NET_CFG_RSS_BASE 0x0100 -#define NFP_NET_CFG_RSS_CTRL NFP_NET_CFG_RSS_BASE -#define NFP_NET_CFG_RSS_MASK (0x7f) -#define NFP_NET_CFG_RSS_MASK_of(_x) ((_x) & 0x7f) -#define NFP_NET_CFG_RSS_IPV4 (1 << 8) /* RSS for IPv4 */ -#define NFP_NET_CFG_RSS_IPV6 (1 << 9) /* RSS for IPv6 */ -#define NFP_NET_CFG_RSS_IPV4_TCP (1 << 10) /* RSS for IPv4/TCP */ -#define NFP_NET_CFG_RSS_IPV4_UDP (1 << 11) /* RSS for IPv4/UDP */ -#define NFP_NET_CFG_RSS_IPV6_TCP (1 << 12) /* RSS for IPv6/TCP */ -#define NFP_NET_CFG_RSS_IPV6_UDP (1 << 13) /* RSS for IPv6/UDP */ -#define NFP_NET_CFG_RSS_IPV4_SCTP (1 << 14) /* RSS for IPv4/SCTP */ -#define NFP_NET_CFG_RSS_IPV6_SCTP (1 << 15) /* RSS for IPv6/SCTP */ -#define NFP_NET_CFG_RSS_TOEPLITZ (1 << 24) /* Use Toeplitz hash */ -#define NFP_NET_CFG_RSS_KEY (NFP_NET_CFG_RSS_BASE + 0x4) -#define NFP_NET_CFG_RSS_KEY_SZ 0x28 -#define NFP_NET_CFG_RSS_ITBL (NFP_NET_CFG_RSS_BASE + 0x4 + \ - NFP_NET_CFG_RSS_KEY_SZ) -#define NFP_NET_CFG_RSS_ITBL_SZ 0x80 - -/* - * TX ring configuration (0x200 - 0x800) - * @NFP_NET_CFG_TXR_BASE: Base offset for TX ring configuration - * @NFP_NET_CFG_TXR_ADDR: Per TX ring DMA address (8B entries) - * @NFP_NET_CFG_TXR_WB_ADDR: Per TX ring write back DMA address (8B entries) - * @NFP_NET_CFG_TXR_SZ: Per TX ring size (1B entries) - * @NFP_NET_CFG_TXR_VEC: Per TX ring MSI-X table entry (1B entries) - * @NFP_NET_CFG_TXR_PRIO: Per TX ring priority (1B entries) - * @NFP_NET_CFG_TXR_IRQ_MOD: Per TX ring interrupt moderation (4B entries) - */ -#define NFP_NET_CFG_TXR_BASE 0x0200 -#define NFP_NET_CFG_TXR_ADDR(_x) (NFP_NET_CFG_TXR_BASE + ((_x) * 0x8)) -#define NFP_NET_CFG_TXR_WB_ADDR(_x) (NFP_NET_CFG_TXR_BASE + 0x200 + \ - ((_x) * 0x8)) -#define NFP_NET_CFG_TXR_SZ(_x) (NFP_NET_CFG_TXR_BASE + 0x400 + (_x)) -#define NFP_NET_CFG_TXR_VEC(_x) (NFP_NET_CFG_TXR_BASE + 0x440 + (_x)) -#define NFP_NET_CFG_TXR_PRIO(_x) (NFP_NET_CFG_TXR_BASE + 0x480 + (_x)) -#define NFP_NET_CFG_TXR_IRQ_MOD(_x) (NFP_NET_CFG_TXR_BASE + 0x500 + \ - ((_x) * 0x4)) - -/* - * RX ring configuration (0x0800 - 0x0c00) - * @NFP_NET_CFG_RXR_BASE: Base offset for RX ring configuration - * @NFP_NET_CFG_RXR_ADDR: Per TX ring DMA address (8B entries) - * @NFP_NET_CFG_RXR_SZ: Per TX ring size (1B entries) - * @NFP_NET_CFG_RXR_VEC: Per TX ring MSI-X table entry (1B entries) - * @NFP_NET_CFG_RXR_PRIO: Per TX ring priority (1B entries) - * @NFP_NET_CFG_RXR_IRQ_MOD: Per TX ring interrupt moderation (4B entries) - */ -#define NFP_NET_CFG_RXR_BASE 0x0800 -#define NFP_NET_CFG_RXR_ADDR(_x) (NFP_NET_CFG_RXR_BASE + ((_x) * 0x8)) -#define NFP_NET_CFG_RXR_SZ(_x) (NFP_NET_CFG_RXR_BASE + 0x200 + (_x)) -#define NFP_NET_CFG_RXR_VEC(_x) (NFP_NET_CFG_RXR_BASE + 0x240 + (_x)) -#define NFP_NET_CFG_RXR_PRIO(_x) (NFP_NET_CFG_RXR_BASE + 0x280 + (_x)) -#define NFP_NET_CFG_RXR_IRQ_MOD(_x) (NFP_NET_CFG_RXR_BASE + 0x300 + \ - ((_x) * 0x4)) - -/* - * Interrupt Control/Cause registers (0x0c00 - 0x0d00) - * These registers are only used when MSI-X auto-masking is not - * enabled (@NFP_NET_CFG_CTRL_MSIXAUTO not set). The array is index - * by MSI-X entry and are 1B in size. If an entry is zero, the - * corresponding entry is enabled. If the FW generates an interrupt, - * it writes a cause into the corresponding field. This also masks - * the MSI-X entry and the host driver must clear the register to - * re-enable the interrupt. - */ -#define NFP_NET_CFG_ICR_BASE 0x0c00 -#define NFP_NET_CFG_ICR(_x) (NFP_NET_CFG_ICR_BASE + (_x)) -#define NFP_NET_CFG_ICR_UNMASKED 0x0 -#define NFP_NET_CFG_ICR_RXTX 0x1 -#define NFP_NET_CFG_ICR_LSC 0x2 - -/* - * General device stats (0x0d00 - 0x0d90) - * All counters are 64bit. - */ -#define NFP_NET_CFG_STATS_BASE 0x0d00 -#define NFP_NET_CFG_STATS_RX_DISCARDS (NFP_NET_CFG_STATS_BASE + 0x00) -#define NFP_NET_CFG_STATS_RX_ERRORS (NFP_NET_CFG_STATS_BASE + 0x08) -#define NFP_NET_CFG_STATS_RX_OCTETS (NFP_NET_CFG_STATS_BASE + 0x10) -#define NFP_NET_CFG_STATS_RX_UC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x18) -#define NFP_NET_CFG_STATS_RX_MC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x20) -#define NFP_NET_CFG_STATS_RX_BC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x28) -#define NFP_NET_CFG_STATS_RX_FRAMES (NFP_NET_CFG_STATS_BASE + 0x30) -#define NFP_NET_CFG_STATS_RX_MC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x38) -#define NFP_NET_CFG_STATS_RX_BC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x40) - -#define NFP_NET_CFG_STATS_TX_DISCARDS (NFP_NET_CFG_STATS_BASE + 0x48) -#define NFP_NET_CFG_STATS_TX_ERRORS (NFP_NET_CFG_STATS_BASE + 0x50) -#define NFP_NET_CFG_STATS_TX_OCTETS (NFP_NET_CFG_STATS_BASE + 0x58) -#define NFP_NET_CFG_STATS_TX_UC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x60) -#define NFP_NET_CFG_STATS_TX_MC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x68) -#define NFP_NET_CFG_STATS_TX_BC_OCTETS (NFP_NET_CFG_STATS_BASE + 0x70) -#define NFP_NET_CFG_STATS_TX_FRAMES (NFP_NET_CFG_STATS_BASE + 0x78) -#define NFP_NET_CFG_STATS_TX_MC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x80) -#define NFP_NET_CFG_STATS_TX_BC_FRAMES (NFP_NET_CFG_STATS_BASE + 0x88) - -#define NFP_NET_CFG_STATS_APP0_FRAMES (NFP_NET_CFG_STATS_BASE + 0x90) -#define NFP_NET_CFG_STATS_APP0_BYTES (NFP_NET_CFG_STATS_BASE + 0x98) -#define NFP_NET_CFG_STATS_APP1_FRAMES (NFP_NET_CFG_STATS_BASE + 0xa0) -#define NFP_NET_CFG_STATS_APP1_BYTES (NFP_NET_CFG_STATS_BASE + 0xa8) -#define NFP_NET_CFG_STATS_APP2_FRAMES (NFP_NET_CFG_STATS_BASE + 0xb0) -#define NFP_NET_CFG_STATS_APP2_BYTES (NFP_NET_CFG_STATS_BASE + 0xb8) -#define NFP_NET_CFG_STATS_APP3_FRAMES (NFP_NET_CFG_STATS_BASE + 0xc0) -#define NFP_NET_CFG_STATS_APP3_BYTES (NFP_NET_CFG_STATS_BASE + 0xc8) - -/* - * Per ring stats (0x1000 - 0x1800) - * Options, 64bit per entry - * @NFP_NET_CFG_TXR_STATS: TX ring statistics (Packet and Byte count) - * @NFP_NET_CFG_RXR_STATS: RX ring statistics (Packet and Byte count) - */ -#define NFP_NET_CFG_TXR_STATS_BASE 0x1000 -#define NFP_NET_CFG_TXR_STATS(_x) (NFP_NET_CFG_TXR_STATS_BASE + \ - ((_x) * 0x10)) -#define NFP_NET_CFG_RXR_STATS_BASE 0x1400 -#define NFP_NET_CFG_RXR_STATS(_x) (NFP_NET_CFG_RXR_STATS_BASE + \ - ((_x) * 0x10)) +#include /* * Mac stats (0x0000 - 0x0200) From patchwork Tue Oct 17 05:45:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132704 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 729FE43186; Tue, 17 Oct 2023 07:48:07 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3BB8241157; Tue, 17 Oct 2023 07:46:55 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2133.outbound.protection.outlook.com [40.107.244.133]) by mails.dpdk.org (Postfix) with ESMTP id 77E2A4113D for ; Tue, 17 Oct 2023 07:46:54 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dCEWnzkYRGpQ7qL54vepR3jyPkEm5ca+vnRQfUHw3JB7kkMsR+oPpmrCI92s8WyEtBZPOyGNQbb7/dG+iwcqDFWfrQ+RUlsZd3MJ/ev2PSjGUUgzhHAGCcE0BNAw1dJEUT5yStj5obtBklpPEopGub6Vj1gyCMCEcVsCueiOvTg1T60eN56qfYTDuh7wqnkknnXRyypyYHit5iWKqb6+rEKxY2hrw20n/pqzwNcK/MupBEuDb0j3F8/3mfzIW5vDODTxpmn6xhNyNmTaDdZJ2vzLmbXVT/JHqnFTjWKW++bITFG86Due/E47BfTZaPGY4Q6kGzFEkW50TUs5+JDwqg== 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=bWMRq19mObk9qVWmYCDmQSjfB+nDWHAjj8DO+1drT7I=; b=PSCsAZaTcx0RPd9I3cW5vOKxmonvogXCDixEmOJ1skziEKx4q4+712cpvlQY4pP2G7RNMSmsfTmy6HOcFai+/XKyAOap4L9pvOtDselqaP/WzamK10MvtoBfH8RdyfWfcg14x/9zTp4QT6zMNSZhE6RseoggskGM2R1QaH561if0elZUIOTrHasT3o9qng53WkN2PHTd2h7L4zp4FGrLBgKDtYGp5s11UplhnUSE2+G/mN81wvil9p2/2MePuiiPNN1MN8OQ3rAWCKAp9fOku57XxIn9yHjQGCwLwzO05NzPAqEkGEbMX9HGX5RTz/KmA1U0318UraZ69uCq1t14Pw== 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=bWMRq19mObk9qVWmYCDmQSjfB+nDWHAjj8DO+1drT7I=; b=pjsjDpC9iv9fR4bg+MVEusck4wqd6MPdXVKIn8pGgJKuOoJCf/hXK1HHLwZfWKsiPJ5AYwUvD1I7MdTw715XKCBPT8A3/LoE8JDlLXO9CwOsuDGY6NweBnIIDxku50rLi75zaGY6rAL0sN8UsOu8/DoTYNPEq6lfxEnlZ2w2AsQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:52 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:52 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 14/25] drivers: add the nfp common module Date: Tue, 17 Oct 2023 13:45:34 +0800 Message-Id: <20231017054545.1692509-15-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 3feec343-0bb7-4b7b-a67b-08dbced47502 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GTqm0ZjUoo7u92HAFQ0ZTepthJsFNI3SZmQEAoHwmu51qtpay97RuV8nuWOXh5b5M97Qv+kIwK7aysP7ZP4x3c18idq77418gbdbgqwlGcGH022juqWTOMvtW++sZgcELYHF0oKaZVLL9qLvq7ocoLR/cNZHRLy29eJPgaWf/ODh5+/6erbKj2KEcEyjB8eognzII3y0DxSpK9d8YOAmBQFofEKayG0fJtOutoauM0QBrhRMeXkFEcnmghpzWBVX2sBStNeO46zLXuOf7RcH1uYdAabnYe9XSlhH7Mtyc3NTlcrNHUqE7nxZwtWrMlwM51XgY3YKafHVsTU0jaARrXGt1Yhzkc5dq2x9J5lIor8IHolvWVbbMsizdL43HQ09dw3cZuf/f5iiPsFYNk2opymc2faLX4ZgM9rDqcxRkqHq850ta9ZmKs7ftC2IksY8hOXJRPMRvGeNKPb6cFZ1TyT/YXtUwQ3xHWAU7TsBoAn0MMxzlRDRrUmMIrFC52EJxOZpeWBmZQxdZOlBXhiAUrWLBtn4IsxkUD2f2S6n6Gbv0WprDUCWaInLG7+1pdUa/XlCzty59QhqVe2rkvVW6L5LSh67bCoXLxRo95O20kpEygezcafVVInhrKzkgsjVWywapL58fYneNjWmtsTQP4i/8PBlxF+BcVetVfHQ/4k= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(30864003)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4zmYcjsjmZoWUcRLTIE7dgNyPFA1h4XN+MWtR19FATxdgnVr8PBg1Zfohs2eQhY+fDtXJrZga3Kf5WCCkMqPBJBhTqro2szIRYv1mMEvhhm3ey0Gh+/1V7/SSESkNk8LAwwf5a8pVpHXHqdiAh/bLxA6SngCtcF5cwQC+CI6pXBJj3j6dkrxcDsCjiZdkeVcZQxX/n8JE6v2v947rEBfY4CPfXMNgWiE/0bK8UyRmVfNDPjFVjM840u54u9sZoolLT27O+PRBJWTyiP2eEHl/WPNAklaxOQARA8OPotmGK6f1uNvbxZo2Hv0wxNshFFwdBQRsx29n8aJdEjz9gD/c9oB1vCByDUz3HJVhDGc+rJ55/VzX1WCqrql9CnakoRPBiDuj/bhnm8t3EJeTkboFlO5q7qCPBBSZIpE44CWcs1q6PnD91o/ZcduHTuBnF9VBxn9+14rx5AZ1GreqxjwsvetoVy/L5hbBkQsah/m5jMy2PLzHl+aGclkxh/asjMtxmBkedTn2pc52aj4I0a/C+kgv/JNeuQXZIudHZ0a8ZiNNQ+kQN8QHgCwIkYoKN1T7Krulz8FZClBxt17HZTy03j5VQcurBBaUJcXjePvt0sfBCcvq7xQoLswmQXTJWeyQHVJkVI7c4S8BjKsgPKiChG1JeRJ21IZm3/kMxm2Nxdn2JA0166IGZEiK/D+njwKFtZ1/QdldRboexP53GUK7oqh1kpj2chrZBvxWbQGJGQJ5UNZgWcogDsMDgt+Xvti6f24N4dGfEZUuyHtRW4ynxFiP2RIA5zN8iztG5IxMoAghGMHZuKmD0lWs+v02Qi4rJ1oCvWlG9mK3auAOU/8GlF8hQcKbfxVYPPSmSa5LeRFN6fgYZv8uOsOha6dXU+BZHxWGcFeSjhios0KhLM1wWeiLaQicLVkJBUEE30f6Pbvuz1VZlhbrrO8BZ7IDurhnN9vBMuWbUa3iUMF3GpdGW8/5YB2qr2bLLmv3veNUq9PXxZbEiDJvMg1j9cy2a4zO6133FotdT7fJ+0nFRTh6vAHJrJGHUtUWYiMLFu4zqdBbd//m+3REM64XnpKFEKRLq+nnpKB1x0QR2u0QsWKZrbsfSXokwaN7I2wjca0ePdnqiVs40muS24aI/g6c6wpngnUDSFMowsoHJfShdbzjdrolD0bw+OG8vYDoc74hjhFegJy4p9Y4BkGm6JwRRRtck1C4Hy/Sq+CswizBkgKgRzwcz7kTOg3VIUeVqA2XfXLeIdR0CS3RZHS42LxwPDJ4yGwddkjLiFN4XmLOwMDm0E2PPkyhEARQjae/difb0lna4jJTkEoCudktg8PJkkZhQR8bw3QChUsUSReEIaCEeIXMyTX2Ms2BYxjnAyawqH2ErtZg0Z+t4bysZLk2V01OAbqPklNUOLYROYyXAD4flPam2upyoky725ImFBok7DaQkMifqBrJdyU8uiZXuhgy7p1sjlvmG1TTrElOgt63cE8rtKATM37SW5+jV5bQAHP9+btGsDmIwd7Jjx4zFNT3xeVU0HKkmnd7TrtnMsM6E9a9xZzdIXcz8Ot48ND01tNq+juS2z1CzFYEzki/guaZpNazWIX17p26UBLADXvlA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3feec343-0bb7-4b7b-a67b-08dbced47502 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:52.1224 (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: 2SZvA6aeD/IUhXmLLLmPV0AEAcQWYHq+rikDJW0NnYEsEg/vfVrqyjrke9tqEbOsscSMvbVBVA1nn6059vGk47PkE4RmuVZqUkhfzodF2Ds= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 | 133 ++++++++++++++++++ drivers/common/nfp/nfp_common.h | 227 +++++++++++++++++++++++++++++++ drivers/common/nfp/version.map | 5 + drivers/net/nfp/nfp_ethdev.c | 4 +- drivers/net/nfp/nfp_ethdev_vf.c | 16 +-- drivers/net/nfp/nfp_net_common.c | 109 +-------------- drivers/net/nfp/nfp_net_common.h | 203 +-------------------------- 8 files changed, 373 insertions(+), 327 deletions(-) create mode 100644 drivers/common/nfp/nfp_common.c create mode 100644 drivers/common/nfp/nfp_common.h diff --git a/drivers/common/nfp/meson.build b/drivers/common/nfp/meson.build index 45871dfe35..727d21e00b 100644 --- a/drivers/common/nfp/meson.build +++ b/drivers/common/nfp/meson.build @@ -6,9 +6,10 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64') reason = 'only supported on 64-bit Linux' endif -deps += ['bus_pci'] +deps += ['bus_pci', 'net'] sources = files( + 'nfp_common.c', 'nfp_common_log.c', 'nfp_common_pci.c', ) diff --git a/drivers/common/nfp/nfp_common.c b/drivers/common/nfp/nfp_common.c new file mode 100644 index 0000000000..00dad4736e --- /dev/null +++ b/drivers/common/nfp/nfp_common.c @@ -0,0 +1,133 @@ +/* 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 net reconfig: ctrl=%#08x update=%#08x", + ctrl, 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..c3645b6ec5 --- /dev/null +++ b/drivers/common/nfp/nfp_common.h @@ -0,0 +1,227 @@ +/* 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 ctrl; /**< Current values for control */ + 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 +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..56db63f29c 100644 --- a/drivers/common/nfp/version.map +++ b/drivers/common/nfp/version.map @@ -3,5 +3,10 @@ INTERNAL { nfp_class_driver_register; + nfp_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 c6147ef01e..7b4439585b 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -599,13 +599,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 22222a9773..6d525648eb 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -198,97 +198,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 net reconfig: ctrl=%#08x update=%#08x", - ctrl, update); - return -EIO; - } - - return 0; -} - /** * Reconfigure the NIC for the extend ctrl BAR. * @@ -531,22 +440,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 +458,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 02a5ffefd8..0ded35a874 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,15 +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 ctrl; /**< Current values for control */ - rte_spinlock_t reconfig_lock; - struct rte_ether_addr mac_addr; -}; - struct nfp_net_hw { /** The parent class */ struct nfp_hw super; @@ -183,179 +157,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) @@ -365,7 +166,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_net_ext_reconfig(struct nfp_net_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); @@ -374,7 +174,6 @@ void nfp_net_log_device_information(const struct nfp_net_hw *hw); void nfp_net_enable_queues(struct rte_eth_dev *dev); void nfp_net_disable_queues(struct rte_eth_dev *dev); void nfp_net_params_setup(struct nfp_net_hw *hw); -void nfp_net_write_mac(struct nfp_hw *hw, uint8_t *mac); int nfp_net_set_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr); int nfp_configure_rx_interrupt(struct rte_eth_dev *dev, struct rte_intr_handle *intr_handle); From patchwork Tue Oct 17 05:45:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132705 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 8766443186; Tue, 17 Oct 2023 07:48:14 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6B0F340A67; Tue, 17 Oct 2023 07:47:00 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2130.outbound.protection.outlook.com [40.107.244.130]) by mails.dpdk.org (Postfix) with ESMTP id CB39140689 for ; Tue, 17 Oct 2023 07:46:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iivNlVZMOad8HZfouXATgndqQBV2qHtZEzkuI+5ymWr1qjd0C2FBstRmUKM30NFNc+RDv/PREqW7tW3ePPAS2bBXu1dOPKSvYFVbWK2yEzxFqOn6u5n4aVA1djijYhEAqn7YQ7YV9Okl499wAvs1m/zlFRl/yKP/bTfnYphe4BV2bsocJAULr6xbRw/zMM51bTjBUbGXh6jzgX4QegSdxDgCFjOap3n7v6mAcWqn8k0y5ZTp8UdMt4oIepVizp5eZ9cOsH9QPGkDv5sTV+fIdoq6Fj5uwhuXRK6FdE5jgblFTESLOVCdsO7Erdje/HdmeccY05HMRROlfAvpI50DXQ== 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=bZBX5hnMdu6xs0IB/SslRs1IdaXXCye4FqHti6VYQ0Y=; b=P1dEtFo1Sx0IQfEj/SjGtrS04GoUDNMRcDWyUb+swP9UTPOORkJ2DwB1yakf1G2NOHVQ8YQq8gKr82SUYMqW+Aqjbp+E2K83Ks6HBoNLOMU1iyVpUX1VHYaMZzOWzj90w9skTZChmrob9tr2TDPIOtI4m6SxJ+bge1Kelf6Eg1ako3s7lc+m0looLwGb2IPPrVoWIBNx3w0MSXO+XqeyCP/WOboWtTSEj+4sk6MoR201zGKNzOU8kStwhSVQPOTuuIqj96nYFvlbTTiCB3vvQBRJG7Cyn+FyM15z+ZKBQ3RNlR2Mzh0X6ly7cogxlc+mr1Z11ECirK24R6rcVGpsdg== 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=bZBX5hnMdu6xs0IB/SslRs1IdaXXCye4FqHti6VYQ0Y=; b=K7uNdM4N2rx+/aycEKHTsLxSMY75wIu8gsKNrRO6gyruqLYvJkWHRpIpglLwUo4l4vJLofiV6yeFwMDDEFfLDQsoNXdIvR5DV0ImtkmSS1iQUWaygzI3APbSjxaGgi8Cs0H9u631e8YKKHnzcylUSNoRaVbQfSxLsKuduy/q3V4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:46:57 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:46:57 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 15/25] drivers: move queue logic to common module Date: Tue, 17 Oct 2023 13:45:35 +0800 Message-Id: <20231017054545.1692509-16-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 4499558a-d2e7-4309-9744-08dbced47823 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yJpN614iKafiD2dJIXwIKdzf9yiU0/n211QUMv0K/7xMC+Cbe9sN3WnB4OToXpKCXkSTisUJxG4T4Yu+7mpyaz0EV4Qck3KiAT5mB0TGRleBVlcC/WrUjUp2+cVK9lUED/ldX0VdkZUdb5J4JQ+0tY/PSokIkFVxQ314Y6YhDj6M0IiJnDVnyY6Li2KH+x14ef7d4baSqokywVA3e7DenPNDSYB9KKqJkZ5pR5hw6r0lgSGQKm3qmo3+FRGP72cUJ7lQWtd6K1KALX3RGZugqv+UGj4jzkwcRFHLUGlrIKgHR/9p94gesNXRW8A2rRk8ENw8azGvSZIRCbCDfN3RuRphagLcAo/SQrlvHHL8YkhOiBDAi4YnXuOv5wG/8ulCHHa/rjh+A01pDch8btUJBp1erd1XPQKML3cyyG7nuPIolZmir3FTypaLDPAevWShoKVmbkg31YegiG3AfXKjR1nhPS2b7p88iOP/C1sJgujenhB67UNg/6pbAYTb2kp0bShN2fhF9Qz8z05jwmKhHTGOlUsbz818Ub7wvuvx68kPfs03pd9I1SSXeVF/BDA38GN53NMrsstN3gPPNR5dr/NEe4GAcFlIVN24C3hdFhHYeWDCqeAtDXIRZyTmLbNzzAVkwfSCYrU1ev7JmV/PVGwyctoLetZejjLF9bH9v4g= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rPYBlOtdMxYadOLWcJ2bwIQere1VUcwR5ZsW7x+BfBGQlA6VhCxLZd/5wYNw2M3ZZsihhOnw/k373OBdzSfNOQ7Yt/MSUIan59B8w8GVsfT0wSKVZgsvC6kMAssuV3GUzIYumywqHts2N075z2t9tyI2E3qiryauzaVFK+AUkuM4ljKUIP5ehnbY/onFmQ+ftglRh/C9D0jcgZe2te3AvObnjLUGXCiU0ONmUCW1nXKTDdlXQqd16GypOuhD9PV0BI1q6PN6xqcidtlcZFAZBhzgc3B45kskywreNI6GiirpDDeGjBsNGb6Kp7u87cBK1sOVSqQwbq9sf/z0c/hzMXPtb/IguWePevqlrfvoVUBeidTpyCmhVTXYptUOxX/9IMb1OF4DIU1isNxSpXmZAXKlJ/CRrIFlc5DS8skMnRDDEuXCNzax/+L21/nJidzHWGhgLZBDW8pMmT9pB/d54fAUay37CSpPXUPkAwQItPuxi8tcWefhSZlFdT/z7gYg8QxCo+PeQqdv/A2fkiUSH/YPOxb4FWjD5o8gTS4IjgwuqBMDNfbIAxvC9vf3+aCJodEVJwE3VedrqgL2fKUbMLlygVxzAdR9fNesfzuXF5xTe1MBFalJMI86TmwMZELTyUARY1erRSoNaQyTvR7zaL/XWRHb59P+2IwQHpcupCRPFdGSQ1e+JrGPjadPOZMqKFOy7oOMBg6jkZwm3ryeiGkJz7eZLx1VMqM28fA2R7xpWYhbKyrCs9fLKCZCCCdt99Zz32K9tXRzpGmJ2WeNvf2SWXgRadENBT195Jo7291SNIsne/ixcaQOu3nLzX2tzwIuV9yDj6cIMQZY+H/pMPatUMEVZSiBNclW5rd9vdjum+NXlTKkxhxBqPOimDHHIriIXYcgMIfi3M2dajc+gLvudGGEMDW2ENQkMajFEGpdjcb6eRvO+TKmMg4sFkiO+7j8KFdCbc9ksSFpZldPD/1RDMnHN0iwyETUkaH1MvqhDbeUji9URRHpHLlrSrB9BeyVyyppHum45eujN+buIs5t9bWNzEHiRXpzHFOZEICr7D+VBAPEmTRmMw/cXRojmMXEdTpVBst7X7yaqCkQ6lNn7175YYG78viXyMG159fifXbBHcEAOwP2vJAFVu15oa48QSvRlfk5dejJh8lt8j4lyzlJespkWkSq6i816dNfpM7ee/IdpMY73ZPocbqoB/v4f1b9DYtNrkuZDsW4DbZviQsYbuv8Nsc9LK7D/SGpwGS+ruTvCHDBICRfl+g9SoVbU9mPBYl6fJkQs/5TdccxHGyp/8/cASbRXyRbOyA3dhSgh6SmNQ6qxBmwSlEWwPYRU0Re6OePIalUxQLyoUXZ1I8VzyxGNVmfvXvRyA1LAYkEvKMNjr4z20pLeWJTf9Zh3mSPzjnTia9Vngvh3dCkWZcAJKcfAkKT+ymHYL1Czu1j9O+Rh1cPge0zMaE0XSi95Pj98fNPPWqlNIxUqUYVPuUzZe1NlGQwVzH9FFKJRCv3yZZO/WfLqAcAg8kfjKMIdQC7lzlv74DmrMQKYHn5otU202r0anmfMX/eQChJGBm5eYDyZmDHOuqrodKRDVep9fQqIj2Pw5yshorY0A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4499558a-d2e7-4309-9744-08dbced47823 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:46:57.2553 (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: NsO/+8MssNtDDoHMDMa6Ljgv9nmQgWxVIROYalCqPrzQARU7zQv3iD3lgPNy6qTwGp7IzeBBoiUD8H9pV8tMtlraaoJ88mIkaqc07gqdJFg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 00dad4736e..055bb5adb8 100644 --- a/drivers/common/nfp/nfp_common.c +++ b/drivers/common/nfp/nfp_common.c @@ -131,3 +131,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 c3645b6ec5..71418d3500 100644 --- a/drivers/common/nfp/nfp_common.h +++ b/drivers/common/nfp/nfp_common.h @@ -224,4 +224,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 56db63f29c..55ef81701f 100644 --- a/drivers/common/nfp/version.map +++ b/drivers/common/nfp/version.map @@ -7,6 +7,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 6d525648eb..b5a4dc72cb 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -377,54 +377,22 @@ nfp_net_enable_rxvlan_cap(struct nfp_net_hw *hw, void nfp_net_enable_queues(struct rte_eth_dev *dev) { - uint16_t i; struct nfp_net_hw *hw; - uint64_t enabled_queues; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - /* Enabling the required TX queues in the device */ - enabled_queues = 0; - for (i = 0; i < dev->data->nb_tx_queues; i++) - enabled_queues |= (1 << i); - - nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXRS_ENABLE, enabled_queues); - - /* Enabling the required RX queues in the device */ - enabled_queues = 0; - for (i = 0; i < dev->data->nb_rx_queues; i++) - enabled_queues |= (1 << i); - - nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXRS_ENABLE, enabled_queues); + nfp_enable_queues(&hw->super, dev->data->nb_rx_queues, + dev->data->nb_tx_queues); } void nfp_net_disable_queues(struct rte_eth_dev *dev) { - uint32_t update; - uint32_t new_ctrl; - struct nfp_hw *hw; struct nfp_net_hw *net_hw; net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - hw = &net_hw->super; - - nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); - nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); - - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; - update = NFP_NET_CFG_UPDATE_GEN | - NFP_NET_CFG_UPDATE_RING | - NFP_NET_CFG_UPDATE_MSIX; - - if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) - new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG; - /* If an error when reconfig we avoid to change hw state */ - if (nfp_reconfig(hw, new_ctrl, update) != 0) - return; - - hw->ctrl = new_ctrl; + nfp_disable_queues(&net_hw->super); } void From patchwork Tue Oct 17 05:45:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132706 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 3245C43186; Tue, 17 Oct 2023 07:48:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DE3BD42D2E; Tue, 17 Oct 2023 07:47:03 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2109.outbound.protection.outlook.com [40.107.244.109]) by mails.dpdk.org (Postfix) with ESMTP id 0858E42D2E for ; Tue, 17 Oct 2023 07:47:02 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EsXQC9ihLwRhDQaxcJ9DF59t+/Nl93c+YsTwZepFo0aNPxdAuBWNlaP5QYqwSSCsdQohM2tryaBsc5pISIrwhxukKim6iQ8hpH/oNEToitc+pJFGGzzeRCjYWgBr0ud/4ywznb6VMZTx8I0Z1P7wAuD4Z5uCuCdTAu6p1u6ei2ZJMKHYqmy/EtwD6Wp393gNRALNGoYlkWPFweRQ7LVzCZ6bjrbZcpT6rpK57dqBXZ6JUesOSXY4/edMK2IWkXDIJPR/uXVQaQVWlCrlAAkrgfz7jeFoX+ucnHFRmcF4AyvWnrrC9NxnGyYAmA59Y7GJ8i7WY87g/Kjs+4tNek5wLQ== 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=eTW25klGg9/loY+MAoBBpz2+ohAoA6bKzM7MiwafjMQ=; b=HeHfaS/uoksUYl/tk2Hv0sT/egAaE79pHpPDant0FfB9sAfO8Rkyo+0ON19KlzxtvOIjuXJdkHBEdOWl+AjYJgoNRN3hhmCD2/iYzg/hfi808wEPh/hq/jfETghT3mr//Rraa0h7B7HifIk8brFzRbt8SZM3Tx6tDWWVUVrQXu/8NCVLHqk1cYILL4KANZ+8LEJ/J5jdb14MiZJJz1PgWM9WYh0yPFe9EC7mg513qMh4gk5VQFusBA5SO3K+uueIs7BCn/uWQC/VVJrYSmZdtnpgjqR40/OLMieEM7DV5ps4FUjfKK6U7mj5fLWvRBGIeUA37TBfnb/G0KKw5nFf9w== 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=eTW25klGg9/loY+MAoBBpz2+ohAoA6bKzM7MiwafjMQ=; b=eJwhdzscMP3tcjMIfeI762XqxC0iaT6nYgrFJ2I6XgPuvk+clY1ubbK0b8lhkUg1RIzv6ZQcjaySa0EZTZruUnyTjmUyXcGcesDtJO89KiYEzurA3tskTYj61CVfwPSGzxtpiY0Z54PlKJVXZluuXNR9UzVKPyzGSjc32CQQVdQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:47:00 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:00 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 16/25] drivers: move platform module to common library Date: Tue, 17 Oct 2023 13:45:36 +0800 Message-Id: <20231017054545.1692509-17-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 74bcac07-16d7-4552-969c-08dbced47b76 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3kvivtQeIWrScrIlDJZOraHrdhbsYF3oLfXKH+sNAfjbxHhF3RirTQJIze8NHV0p3CsLeBQOd1pgi6sgUj5LyNH5FOmV/kO39lIweov0ATta2V3DF4rfuamB3uCgfGfpodMKvw4GD8ccOyefTFi7Th/VRa5c/HrcFnWTOm96pigd+j84B4AgmlOs2Ndox1sXLK54Ug4xjJrobuez86HYqbhODHonGqg07WVTWtscotsGFPvN8zzSVdPqWERpPZRoCb+aHNfyBoXfx9qRAC8dkYcEyty05Bxlqa5+aqP9AFHN9KFJfXOW7D+pijwkJYdwbst087FM6RRQhRsYT6bBXrvoJfPSHmKeJr3+RCEzrkOfmBamwVNIwZvPux4rBZNmoLwdjuAGg9Srd9qNsj9Lx2C/6Cd9H3nK9vroVE0BEwwhXWdSc4rN2IryC5ho28UezO+u3+Jo5tVE8hqn4L5n2/ebyhMgcJBdE8HDTFWd+DFU7vo5AEKrEMyQiNukc44JWu4JgeGaVKpXNIPBj/nr1CSiyZBqE4ncNMydq6soOINq0we6brW6Xw7mlA7AtKgCpXrLNUKXQtrIYOaw3u4nW+VMHtmq8w04GWZIaKzWJGWjXjZl5kjQ1HnjXUZsH8guk+etrSsDIHoMLDCRFcL5csU5w7jLFFCgE05Zf4k9V/Q= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XHBF3Fwrjy9Yw8ywjPP7ipYF5um1StlNCJLj0/EPp+gWEzLHw+eahUHXiyxhSQhOQesCqbJFoNuZK9AY89srbTbGsfEE2VQFtFSBQN/gYTolIsnhkSfzWf4lXQCHE6bWZJYN76kIZX5nnH3Vi5YIRkrFw6yaHp2v3BI3CxUGWt/hYYZM0boujOYoHjKyYTOTsc2S1UBMpTEjid9xfmkvRTu3AUKwA+DDQLbmdCij+PfQSKLJ6ZzVDQdsZAxy583k/ToNJTsAbP7SbHYl4+AT+T7PbtB90wqDmTFLwJ+CuWdaHGHjKt6dxOs7N31bX6ycy8gAJVqEcbeX+nbPBt9FTXx5FWaKSSrNcpY0aXmtz3plf+KFNCS9oslT5kpB6ODt7X9ipl8Fcy8NuwzXjUmcf1lrRFDHq+T0VTzccqBzntkTfdFDSGFB06KPZiP6B3d0EEjNlqRP4c8WdRSaZMS1vGyO0a0lHM7mVCJ6kwRvQUvMjSYWlWgZkpw9s9HkYSxz85Z+T9rpepsOJh2LoDkX2545fD1XuLxWf2V6BMVt2cVG/AaniLDtIa4HQCEiBZRjOJWI7TuRCv596cA/gmoCtLWLwMIRldYymojs/pzzs5qYjEC0YvrrVEyF5y6rqNwcBdpX0GW5N/eeJft3GSeWcuvAO4Jq7yUHdoXMYaN2lA3SnMs8ATODRMH2cynEDe4FSItOGH1GR+RrtJbpVxGat60+kJRuEUrNUVT4zJ2WzdOxzbR9H70KayWf/+QhIEJ8t+yWEyRb8jSdkl9UhaU02dlKF94DQ9dV5xlTrd/B7O9bbo+Hiw1qEpeVKNTsWaKYXTOLM9z0jNj1RILry1GPEn86JYQV3lgMldYtrgNiqScc50rIzI512KDYkYSaVOC2y0GlSFrRzURhQWAWID+kuUxvWYcxkQ/G+ArTYKouA9V4rXfeTipyiDsErMTfPT883aJBB3O+ljnKvsAuNYAljG8WKJFy1y3erpG6A71DfYLVNDdhKei5cnj1Ts83CuAzROVeaC/QkrAkzeM+5RRxUrplY7tvI0oZEn2hgJBgTGSizLYR9oicuVEDrPgl0h39BdUSkjdthNY9nyS4LHi54+jAPMx1xW+Y99AxUQIwMJNtxxSbskW63NFbxH0ArXgdfCnuSvUMvBF7OOe8vO2bZOXYnM8wDL4+16vJnG418KdOqJX8Ps9amme46hxmFU8iGTQw7AHmDqEU30gNymBGwGQ2pLH33/2JXyJ/YJUbr10kceEYDrgsPqFgtcm7XyoOOjVwAX4UEzcUhPjfVqMVxax42Eg8eHk76/prbM51RV2WpjR9KZSl1kVu2Fbu2d8ue2I5ziwaLHw4lrZraGtgWxd0zs3/AUQMg4gMjkIqdy4sX8e2k0rj2oFBJinHtWyhPt4iewn3q/lhRHIJ2GCkqpLh63hpp+gVLmouLYJk0g5u5BqkQ46HCAQeRPiR5+fy3iU4Zp4kDFw9sBuRzN373Ge4s5XH7Gf1UBWAwurzEznlTSjI1uTYCttbInPMBJgSnF7yigkzNRiTQow7f4oklM9xWXWc7rilSk7QD/0yRdYqhWDRWkMQZmcqC4BhAmued4g8P7JXiFd7UvYPVQuVSQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74bcac07-16d7-4552-969c-08dbced47b76 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:00.3655 (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: herpWBoRwaApFWI/MO+2ltULsZQ3SZcoqAsfWu6B5poACHkaizgtXf/bpHI5DP/r+/1tgyJxywSoUqc+aEmhq2eI7HkqS02DWbACQKyEhyI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 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 cef27b0d92..0ee4815651 100644 --- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c +++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c @@ -6,10 +6,10 @@ #include "nfp_nfdk.h" #include +#include #include #include "../flower/nfp_flower.h" -#include "../nfpcore/nfp_platform.h" #include "../nfp_logs.h" #define NFDK_TX_DESC_GATHER_MAX 17 diff --git a/drivers/net/nfp/nfp_net_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c index 8848fa38fe..5135a1ad27 100644 --- a/drivers/net/nfp/nfp_net_ctrl.c +++ b/drivers/net/nfp/nfp_net_ctrl.c @@ -6,8 +6,7 @@ #include "nfp_net_ctrl.h" #include - -#include "nfpcore/nfp_platform.h" +#include #include "nfp_logs.h" #include "nfp_net_common.h" diff --git a/drivers/net/nfp/nfpcore/nfp_cppcore.c b/drivers/net/nfp/nfpcore/nfp_cppcore.c index f9b08a12b6..0e6045f2f0 100644 --- a/drivers/net/nfp/nfpcore/nfp_cppcore.c +++ b/drivers/net/nfp/nfpcore/nfp_cppcore.c @@ -5,8 +5,9 @@ #include "nfp_cpp.h" +#include + #include "nfp_logs.h" -#include "nfp_platform.h" #include "nfp_target.h" #include "nfp6000/nfp6000.h" #include "nfp6000/nfp_xpb.h" diff --git a/drivers/net/nfp/nfpcore/nfp_dev.c b/drivers/net/nfp/nfpcore/nfp_dev.c index 7799fa699a..f29b7e0711 100644 --- a/drivers/net/nfp/nfpcore/nfp_dev.c +++ b/drivers/net/nfp/nfpcore/nfp_dev.c @@ -5,10 +5,9 @@ #include "nfp_dev.h" +#include #include -#include "nfp_platform.h" - /* * Note: The value of 'max_qc_size' is different from kernel driver, * because DPDK use 'uint16_t' as the data type. diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.c b/drivers/net/nfp/nfpcore/nfp_nsp.c index 5b804f6174..a680b972b8 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.c +++ b/drivers/net/nfp/nfpcore/nfp_nsp.c @@ -5,10 +5,10 @@ #include "nfp_nsp.h" +#include #include #include "nfp_logs.h" -#include "nfp_platform.h" #include "nfp_resource.h" /* Offsets relative to the CSR base */ diff --git a/drivers/net/nfp/nfpcore/nfp_nsp_eth.c b/drivers/net/nfp/nfpcore/nfp_nsp_eth.c index cc472907ca..75f6d40fea 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp_eth.c +++ b/drivers/net/nfp/nfpcore/nfp_nsp_eth.c @@ -3,9 +3,10 @@ * All rights reserved. */ +#include + #include "nfp_logs.h" #include "nfp_nsp.h" -#include "nfp_platform.h" #define NSP_ETH_NBI_PORT_COUNT 24 #define NSP_ETH_MAX_COUNT (2 * NSP_ETH_NBI_PORT_COUNT) From patchwork Tue Oct 17 05:45:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132707 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 41B0743186; Tue, 17 Oct 2023 07:48:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 11475427E4; Tue, 17 Oct 2023 07:47:06 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2128.outbound.protection.outlook.com [40.107.244.128]) by mails.dpdk.org (Postfix) with ESMTP id C863C40ED0 for ; Tue, 17 Oct 2023 07:47:04 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OT5JwWr2sQ1LuM+o9Bj3g3ZmdZkqEFSCrWQdDA3x3Lrzrt20WATdyqtP57Vu56QftkQgN/ocyU002ow43v4nw7Qu9hDcsLzGrwgX/+X8DR9dxBwNiCXr4OOHRw/9M3H0o7/Qc2ts9M56OtALrgmeUdh8KL45ZB529IlQ5c/uW7nyp7BnkmYF0QuUpnveUidUE98pZn9exBv8L81SAzqDTm95faN3WfJbn9ZGfV+HoqyV63pCgnO2aYL1YAQ5nA+lBAAJcQtma0/x/0GVgD/UUK3Y7JMfTB6hftZEH+iTjM2U1FFzapqXCoeiJy7V8pSui7G2B9DVezAnixAP/vBQ0g== 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=RDKwXiKYo+QpxPiCBKln/AamTH1IGgMId8wJU6tHiFU=; b=dvnI9qMEJYhC0k5kiRXQSdlGIECo1h8NB/JZYRZgH0y5hNqYJ3vPwOY6ELU6vMzONG/AqRHjLKyqZUmRkXEWmfUy1FFYG2k0YjmRrz6ATvXoKl5E/0NEsCAy5gaJexmXCOv8w7qrcnJhIITYulTUr01U76nVMyqFsXmFGxY0qw0XxMmcxT80GV29aiYV3xqWcJCtFXjPaOB/0X/dRxc/meNWIRKp1eo2mCResoraFyF2uOsIJHO4MeRtsZsQDSWjyItF/W6kEqJAsLmwQLsUJAOXEOHpwIL7nS2JxaSAPHQnXYDpogmE8U/kRc5Lo6JdrfIgxO3CGUwsXQDCkVyYZA== 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=RDKwXiKYo+QpxPiCBKln/AamTH1IGgMId8wJU6tHiFU=; b=TbVQz+HsNV6BNII7WazBhU+gyZWazu5H+CQyll7HpC0vKAOW6zLZdyZQRXLU/2HsaWIk0b7EXUsV3UI4c5XP4Kwpisir0FbebnaK6HKj6T7huP1FBXs0CZPB13LZS//ebRf5OA5vEeycc76V8NXnq5vfgTZn+UspsT1LG/kHGMo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:47:03 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:03 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 17/25] drivers: move device module to common library Date: Tue, 17 Oct 2023 13:45:37 +0800 Message-Id: <20231017054545.1692509-18-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 19e618b5-4088-4fef-ffc7-08dbced47cd4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jcjOyZYIkD3gTglDdk8hKZpNRxLg4smUCxCyYGWD7Z8GG+uIlyeZ/wclTvM9q889wL7SokfMHV2VYAGvFvO/9JoAj0+KUG/OG7xV5kLk/RlTTrKMV+41AMvzwegO4TR6Xp6kL2h/EKaWSixZPBwUE89hbpuZAk86p3mwAqNJmLQE5GX4fIeve7AhUOTFExCC+Y4D4sTzimYGDAKQMRO99ZBeG8htgJPLrO+ITAOBQJCU1bXR7Nz0JOPZuKspwdziA6UaNNz2wHB/r+2VIEDX7Zm0/PBjpmnZzlMaELQHnyXYSW/6LtgX073WrDAdIHUr7f/DUPNJFXmX+SClZC3cC65dJqBtMBwXOosIWAzohSY8wNWepAPwVIaZpLSmi+tNxbY6LlYkhfEgaPq7aKbdFspX/aDrXy4sORXr7qjWRus4XvCaSxTxS/YxKnMx2cMLNHPCIk7zbdp2rMCrKKfvIRQtWIaI6r1iPV1kHblw4NT/Kl+41F8ZdgmtbVaLK4+qE3A4upeswDq1uTlOu9jXeZ3INh+/W89yl6YGGxhhEHdvvjzz0SnZhcY59M4RJcjt4G2S4kamnrUZNbyKQRWPiUmMBDSJZt7af2q/BM/JzBxKDEV/SvKX9QNXQjkc/ksly5yGKSMWBEHH0T1ZNFdO8JZ+Az9dd1i4orG1fr+uI18= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kE2mu3lmLhbfj7LVwuLSOMyWOrfNZGCB+DlIOJ7e0E1olVd+94LwMOjJ8W1LmHHgQV8/koYZkdzf0ncp8Oo5uiJ/afoy6c5bXwfAPzly5MRhwrl91oYqzfKLTCXLmEygeDgBcduk/kBE+gpSrBS7y6uija+EpgUNTFRqSTeWmXw1sDcaaBWVJHDpOmXerYxCNbDCeEWMyQ6b02BV1y/e6oKA8Yt5zAmTgwqI4CAGjkBg8hZ8qgJbaOiE0CkUaOcx9N4RJ278k3DN9CZoihta6jq7v3Cdv4ZUGMsYG/qQ3DJNzyV9jkPBlfd0Jux1nWW6LKhLXVPci3KdmTl+GPIXDjKg8E0J95A9WGYtCgRQjTsQqf1sF/HEufxqXhDgS7DIMbvaeo65MPBFg6j0vvzz5INMnMdcVxNlElzZ8AmNvwFdM2FxSmsBDBx5bt5J1TVz0G1BCProtDWCYDroNBSegcEImpnisIqvPa2XZJ5xZo4G3gqBgiz3pI9LfwMkAMuFhuHxCS966shDLj07D4BDjE142UU1q9j0Xl22e4cwf5TpOtP2xojf4YV5lQJipASi6RuoCozYQyc+S+Ae0JuzRLOnELKQviN6Wp08a7cP5kmPW3NPz0mqI7yLYFrNj9GLQqSK+0+o3F547QrPqJvAO5WKvyrDYbmBwYKiRq0U5b1Fw9ytUzW8xLWeIsDgiOorrqcPIPrxdW8nlufyduGka7MtICtiy7ZWDg1T30MdWiMswFZlTw/FLWEo6xm95tKr8XSJo72WJ6gt2kHY7Csz5DGTlnAoLogiaLzvHUgI4ADtTwkSXns4Ihs48wUENT52IE+Nc/q82nxXIZzP1Dp412kv4yrkeU0xjdWfJL6m0ZcArb12wr7+EjiNhIklplW6GB094wsONO+nQW1WJaOJ5sRGq5g1P134k2W3McjD80daubecDSKzFt0jXxO2tBV6eSLNrisNBLCTkHDuDZXj/Yw9E0A5UBQaoxTP2jx3C5VjFtjFP6+oQbjgo+zF3/pM7C25t5Kl9LUALyac9uZoeFyY3n+PkY0toTddzzRg06xXPH1XrxPfHx/Mqp1AciP8e5b7uI05yU6tDInTQoTYTT4zQs5BfAQEp3wyHzo0q83TVvx14NEkXdQV6AG2Q5yhL3LHF+8d6+EIImL5CldRoCMWXAEz+iM/nisasc1JPVa6WawCOMJNly2xu7lZ7UPHkNjjP7q5oCfN7MXdCMXPbLEtKzPpW99uRppUE2KTqfcNGwaPm7RGQOwoD//kc08S581YlGWVR5I+FnkLDYM5WRtf8OhVPLGmtSVZRfyFwdInz2Nkxb13MDqmQLcYwvGN9hx4x+8roXWrQvd8quaCYDGUceLCqDfC3m547waRiFSRPUe+qcGl6d7hD55Xuxno+lGq8k1uXajszDT42K7irXfflYcRiPZtcYNNvrUw81s5GS610NcxptaDdkoeXBvZZ3bPqBtY2VKRHQQmjcyXqrll2EJe2UtE1p11b+sH91X8jy0n/5U4/zW9Fvt2ed/qKhoY6NOzET4TqNdMn04Iz6pNb0VbDu0oGNASqkZM56r+pLM5KQBYq+/QUK+pkIoNtlJwc1HIim8eGSLzz3HVsg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 19e618b5-4088-4fef-ffc7-08dbced47cd4 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:03.1021 (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: u+jlLEOE/hDJnZG7eKRrnd/08esaMYgyevD8dGUItRc6u1P86DBb/f4cTeNvZdDB6F1PF7apJpsqzbPhffFUgfxQ9llmvdgLw+9+SJWiS9g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Move the device module to the common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/meson.build | 1 + drivers/{net/nfp/nfpcore => common/nfp}/nfp_dev.c | 0 drivers/{net/nfp/nfpcore => common/nfp}/nfp_dev.h | 3 +++ drivers/common/nfp/version.map | 1 + drivers/net/nfp/meson.build | 1 - drivers/net/nfp/nfp_net_common.h | 2 +- drivers/net/nfp/nfpcore/nfp6000_pcie.h | 2 +- 7 files changed, 7 insertions(+), 3 deletions(-) rename drivers/{net/nfp/nfpcore => common/nfp}/nfp_dev.c (100%) rename drivers/{net/nfp/nfpcore => common/nfp}/nfp_dev.h (96%) diff --git a/drivers/common/nfp/meson.build b/drivers/common/nfp/meson.build index 727d21e00b..7f496c2da5 100644 --- a/drivers/common/nfp/meson.build +++ b/drivers/common/nfp/meson.build @@ -12,4 +12,5 @@ sources = files( 'nfp_common.c', 'nfp_common_log.c', 'nfp_common_pci.c', + 'nfp_dev.c', ) diff --git a/drivers/net/nfp/nfpcore/nfp_dev.c b/drivers/common/nfp/nfp_dev.c similarity index 100% rename from drivers/net/nfp/nfpcore/nfp_dev.c rename to drivers/common/nfp/nfp_dev.c diff --git a/drivers/net/nfp/nfpcore/nfp_dev.h b/drivers/common/nfp/nfp_dev.h similarity index 96% rename from drivers/net/nfp/nfpcore/nfp_dev.h rename to drivers/common/nfp/nfp_dev.h index b0fffff619..ffcdd17227 100644 --- a/drivers/net/nfp/nfpcore/nfp_dev.h +++ b/drivers/common/nfp/nfp_dev.h @@ -8,6 +8,8 @@ #include +#include + #define PCI_VENDOR_ID_NETRONOME 0x19ee #define PCI_VENDOR_ID_CORIGINE 0x1da8 @@ -39,6 +41,7 @@ struct nfp_dev_info { uint8_t pf_num_per_unit; }; +__rte_internal const struct nfp_dev_info *nfp_dev_info_get(uint16_t device_id); #endif /* __NFP_DEV_H__ */ diff --git a/drivers/common/nfp/version.map b/drivers/common/nfp/version.map index 55ef81701f..cedd34974e 100644 --- a/drivers/common/nfp/version.map +++ b/drivers/common/nfp/version.map @@ -9,6 +9,7 @@ INTERNAL { nfp_write_mac; nfp_enable_queues; nfp_disable_queues; + nfp_dev_info_get; local: *; }; diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index d54dca36e9..c566c6d2e6 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -16,7 +16,6 @@ sources = files( 'nfdk/nfp_nfdk_dp.c', 'nfpcore/nfp_cppcore.c', 'nfpcore/nfp_crc.c', - 'nfpcore/nfp_dev.c', 'nfpcore/nfp_hwinfo.c', 'nfpcore/nfp_mip.c', 'nfpcore/nfp_mutex.c', diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 0ded35a874..aae20d1d6f 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -9,10 +9,10 @@ #include #include #include +#include #include #include "nfp_net_ctrl.h" -#include "nfpcore/nfp_dev.h" /* Interrupt definitions */ #define NFP_NET_IRQ_LSC_IDX 0 diff --git a/drivers/net/nfp/nfpcore/nfp6000_pcie.h b/drivers/net/nfp/nfpcore/nfp6000_pcie.h index 8e2cfb69e6..59b58ddd04 100644 --- a/drivers/net/nfp/nfpcore/nfp6000_pcie.h +++ b/drivers/net/nfp/nfpcore/nfp6000_pcie.h @@ -7,9 +7,9 @@ #define __NFP6000_PCIE_H__ #include +#include #include "nfp_cpp.h" -#include "nfp_dev.h" const struct nfp_cpp_operations *nfp_cpp_transport_operations(void); From patchwork Tue Oct 17 05:45:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132708 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 4400C43186; Tue, 17 Oct 2023 07:48:35 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 34B48427E9; Tue, 17 Oct 2023 07:47:10 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2135.outbound.protection.outlook.com [40.107.244.135]) by mails.dpdk.org (Postfix) with ESMTP id C379E40EE3 for ; Tue, 17 Oct 2023 07:47:08 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PDx2vKbyEMRqsd5yqgp3Ku7Ozf0NZejbH4ea9b3lH22TsSblHjP2cPySp0Yf6L7kr9obBRyWmVOVYLQARveaHCGwEsbkxp1r4eU7DXADCG2EPXvIzEknIJb0KHAjqgJsnNtojLP8UdnKSfxwGTzuz5+/RSug4LWSP3z6ZZJB8jRu+RBI215wRSv1RVTx9Z3xEmBbqrp9oRzhJBN7PS5tPHsDYSHqrxrMo6n5jqA4VhFk48VqXraDWXoTaKl5C1jHowHC/rzLKUEJCsuX8LrekwhAacMXB8Gk+Nd67UiJymM8aCoAHcQar6BzWpc0NuirpIrpONJCJc8RLbhAzw6NbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pjAxOTjigfWeoSH3a0+oAXchHxhlRang74HXV1M5wm0=; b=MEUGaBHaSt3y6tPe3mRLoqEtfFAMQ1Kksx3DVooqtk/CIolBJWwYh8SBLsGjMb5AxDa2jLkUVCs87PGIFLdbL3gJ32GtK/aXHcyC89UsTIUrK/A4l/PiODn4pb6qjZmLa7n1BFalefHyOXlnkHAVafwQrp0E2CIo/F+t5HJjc78PS//51ht59qQsBC4rshbAoy8IZEQrpH6IojsbxgyFzN7ZaKpRK70e/pf0/Wony70udlpv3ygwYABSnfLYALjSG56H3Tgdq4DvqKRLO+wpNtsfDo2ghXBbt6gcxg8JaV99HbTlUqB1s5ygViMHW3PyZs+HjM5kQtqZEuBWN87V5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pjAxOTjigfWeoSH3a0+oAXchHxhlRang74HXV1M5wm0=; b=s+v23zWNeuR0DZZWjhxcpbKbFeZT/1VWw1wG3Ndh6GDB1nQSfKf8O08Ta43M/HH2IbH0W9Vg2Bbf3WpPmCvxav1Qwm2Xoh6Ju3OZLdXUFBXXq1Xhhpg7F7gxTALbC/kf6lO4QbfeoLDMbzFkL5jfhwR2AYAkPqk6bRtgcrYFqTw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:47:07 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:07 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 18/25] drivers/vdpa: introduce the NFP vDPA library Date: Tue, 17 Oct 2023 13:45:38 +0800 Message-Id: <20231017054545.1692509-19-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: b9be0cc6-b7a2-475f-1f08-08dbced47ed3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xpGbCDxRllOmxKzuc71a1ypQWrEOk7ST4mYq1laTHBvn+r/lImQ31UmvYJ/BvL8WneZSP/E5iRLGOvIBeQd6YyAKIGSqYNojjOZIyJEX2wWofoGbhIpGq8m01Y26TQnU08n25kD4clONc8RRhYUUBe6JG5PFi8ToqiWEs1bg5DxjNo25w9439h40XG1XbLgv0MLvrt648eTXYB9OJAB3aV/KI0/7/afHNTCWQkCqZu3j6mh61Eia1JSyneEjVJV8yG/6pC87nkwmYSqfPZxzBo4s9cev1+lsUqxhVtPXRhMV3RBboRLg8mD7gv8mKR/uDh8hHFsKUVl221nQFt3WyiCF451ptK/Q0alYoONrajq2FzV5TKauOTrXLUl+G3ehpEjuLNTkCPccqqIL3LZoUqVaq2b+JKQqHQJvSjVtXZudfAXG9J13KUxGYScWZfJZ7n8PFcA8E0vGYrpRrnCcF7+N2Gvd0eAEEsUj0NWTkjEmo2hEWH8r91VxoFCl7PArni7i+YpeWQdOdE/HZ5hjOD3fDdsL2tgAdAHN55nBtPsK2LzWIF6oC8oq/JTs5cRgwIsjxLNMYG4e0HfSCbnlhPzqcYZ88uoV3ddEkeNdmBjeGNrzfX88Dsk7yZBh4vxUXyLmmtYKhcqVxV1rDaIFM/EcL+Tro9B9FK/Ku4JCo6k= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4Pq9UGlpfjZdNUsaK99G3v88ok3cK7WjeOrp2ysairI8fKkj1uoozpW/malTM9e1ONx91QDGoDCoD9RUhOsUHyeO4zTGeuY6WLG6WQQSGDU8zTugUZdrKPeMAsIAbHDsoyyEqWe3Smb3COOKyDHPGS8kqlW80S8/Ii2XcpJYDE9HU1QYZsVFYn4ghgsuVEEb2kVXnaqq7LAJmaQW00rUl1A8KtvEQ9rwSBba/20nogc+r8uisEYfOMdez2VuQWOlRulh0JxgXVTqYt9IFLYnoGaPUSqRcEtzCgT7L8cz6KTRHeBxlDxjXpJEzWZNpDprD94gSnmfT1ERLbD9g7+y8G6S1z4pxTiMzbMadcJvxVBhKTPYlHS7+CyaPzCwMLedL8/XsvcvUOVmS3STJtXnZClWAKS3LQMRKN5HD59DW3Nnw9D8tzHt/URwXE2vKf605vRMGP5f/P0JvYIaT6weu6vymqa2UXT2uP5+Gjx+KJdJa9ZCvlLKPXSWC+2uhhl2KORbMPsOfb08Itu+8fFKWwFCmRQMsvZDdtEfSaqOcxpDDSCDe1jiwtVfizE0BJ0zIiuwoVgyMry4StvHay+fi8vSDV7iO+H3kSMESsWEr/f4LepXO5O9CsY8Gbxqq092xpbWPkXhCbPog0cONHMeLNZt7rQAAImf0860GUiErAXaE31vl0LzT5BD7HdrsHflaLBFHhLo5V3Xg1H7zapzJXKxss2msINrLNibdRDpGQGZF2szXN+4DE+UkJ+iArdAgERNAMfz56mrsDHRqLW9UMHh6jwxGGGkHgxcL96d5SkmGsh2w0SI9GN3mdJYNj/3k/swjpwOiSuiKLBQ3D4o33QX1SOvK6DHJMdR6Tmamn45V73Q3fOiNNwGN23EErZ9b291mJaySvuq0d3Xny5RdzxT237JUPMwj/uZUrYR/ZSguf+TjiIiesvyXqrHgxuzPM8Vbu1LIWA9RpqTqHWnJcjok/bV6bw50Pr00c60ODXpOg6es73lx5GYXmL11udzwFQczEs1W/Vxk2+o7MMp2RxGlLUF+2Gwsi/EPNaBA4M4yGRfz4FhxKp8l06L6CSE0SLKyraa6nJ1oWVc3AW6+th/mSM39JBjsBW0yo0eW+QCXnrdsFpFy3rTvD+Xa8n85cBZBRB6zueHXY93/3KAt9/oMVAMhUgREQFLzmeQ+7ok2YNvVBKVg1kCr28OMCnAl3DwlS/gTqW3Ffhr03A7ZEiDVyz1xRvB60WuW3hR5pxmCL1DpnsFGpNmfy8zSNA+u/ohiD8Fyi2/P2g+9J51MVRw/HKNEMjXgMvqv+6M2QDiY/nCcEGw8P6yFJLzORR7yK3dTYPJ0U3Lxe/EBLiVtGN01Q3PkUmmRHpghsCCFvU3EY4BxRofM3qi+AJoQKGNp7G1/Ie2ZoBedt6GWgn0ECJz2NkKYc6tduBBZwYM1JDj00CFsA/uRL4jXE7uuQjs8cU4GPYDFvt0fxObzcI3C1vcwjN/ig/UzWFtp1xn0O36er6pFPhokKm/tLKEQl2TCLLFATxPgF1P5qgIn1cqHhQHXRrW/AqroqOk/wmIN78U/VBganzz2LU2o68xg0udxN2j/TFrNKzSODRAyxP1WQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b9be0cc6-b7a2-475f-1f08-08dbced47ed3 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:07.0820 (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: Pg2XT0hdb3FxH0JBYeDvG5C4RY6q+jvGNajAybLqHKQ6zdSRSccHLYTc47utcd2ciQtjIo/LxgHgR+NH8flsER8/Ho/HO5K1TY6MBMd51rY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Introduce the very basic NFP vDPA library. Signed-off-by: Shujing Dong Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/meson.build | 1 + drivers/vdpa/nfp/meson.build | 16 ++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_log.c | 9 +++++++++ drivers/vdpa/nfp/nfp_vdpa_log.h | 21 +++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 drivers/vdpa/nfp/meson.build create mode 100644 drivers/vdpa/nfp/nfp_vdpa_log.c create mode 100644 drivers/vdpa/nfp/nfp_vdpa_log.h diff --git a/drivers/vdpa/meson.build b/drivers/vdpa/meson.build index 77412c7d09..896e8e0304 100644 --- a/drivers/vdpa/meson.build +++ b/drivers/vdpa/meson.build @@ -8,6 +8,7 @@ endif drivers = [ 'ifc', 'mlx5', + 'nfp', 'sfc', ] std_deps = ['bus_pci', 'kvargs'] diff --git a/drivers/vdpa/nfp/meson.build b/drivers/vdpa/nfp/meson.build new file mode 100644 index 0000000000..b17866e157 --- /dev/null +++ b/drivers/vdpa/nfp/meson.build @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Corigine, Inc. + +if not is_linux or not dpdk_conf.get('RTE_ARCH_64') + build = false + reason = 'only supported on 64-bit Linux' +endif + +if not dpdk_conf.has('RTE_LIB_VHOST') + build = false + reason = 'missing dependency, DPDK vhost library' +endif + +sources = files( + 'nfp_vdpa_log.c', +) diff --git a/drivers/vdpa/nfp/nfp_vdpa_log.c b/drivers/vdpa/nfp/nfp_vdpa_log.c new file mode 100644 index 0000000000..8c957d59ea --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa_log.c @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_vdpa_log.h" + +RTE_LOG_REGISTER_SUFFIX(nfp_core_logtype, driver, NOTICE); +RTE_LOG_REGISTER_SUFFIX(nfp_vdpa_logtype, driver, NOTICE); diff --git a/drivers/vdpa/nfp/nfp_vdpa_log.h b/drivers/vdpa/nfp/nfp_vdpa_log.h new file mode 100644 index 0000000000..c3fb274cb5 --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa_log.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_VDPA_LOG_H__ +#define __NFP_VDPA_LOG_H__ + +#include + +extern int nfp_vdpa_logtype; +#define DRV_VDPA_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, nfp_vdpa_logtype, \ + "NFP_VDPA: %s(): " fmt "\n", __func__, ## args) + +extern int nfp_core_logtype; +#define DRV_CORE_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, nfp_core_logtype, \ + "NFP_CORE: %s(): " fmt "\n", __func__, ## args) + +#endif /* __NFP_VDPA_LOG_H__ */ From patchwork Tue Oct 17 05:45:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132709 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 67A0743186; Tue, 17 Oct 2023 07:48:42 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B064642D66; Tue, 17 Oct 2023 07:47:12 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2110.outbound.protection.outlook.com [40.107.244.110]) by mails.dpdk.org (Postfix) with ESMTP id F1F6342D66 for ; Tue, 17 Oct 2023 07:47:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HnM+m6Ft6i3gpnyP39xziplIDc+P2vbxYlZ117JZET0M86o6RYjAQb3rqdffCFSfisIUNS9EYlZ3Wz64b/iBlqPJIA/YNgVP4zmh9Q3Eo8JtbP7MHzL0PQVfI5gxtx30+3tUyZBMhW0tNDP0Ykb0yrMf6P0GGngFe3lss8qb/5j8nj6T7V5LRzKKxx21G/FiOrRmbaE/qCdbVGsm/9PwHUTKotTU2udkEvYTI4AaoimDrXAjBex3X2FUNW7vqtu5USlQW3eM5eZ/qlqd5vTxPm1MJaMyVL/JosgOIgMTIL6AVA5t9Et8dGTwwBl0x22fvD8n2FPeJUwWNj+eXHqDTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7o2cFy4rIypdWxZm+ueiKs8obohKXirAMUwS2FczWOg=; b=UUP4ftQTCzNfU6pbvaVzF5ZV53dQTBQwkiycJraAK7PFTLVGX9BAxZNYZjNE/6X0oZb0803etwHU34zFZuQk7fJNKXRKdpQ2cPb/DpAJGbbMVMlWG2kmFVTIJ2r6qTO15Tdw7t1NVHYdLsrUcCxUvg6GGPFvSUUIEBk71RhHCO0T/i5SU5bPMblXE9hE/TORDFOzlSBmlgQgZk2HaPqOCw0TYJZZGpMdx19vGJQd6TUTud1wGU/ZzUQCy+L3or0Vpa+Veuu+aJFtaIoxM6Q1GrSj2WpPdn3iC5qW+jHFTiJDB/pfnvOkgdiPgvbFeQLHdh9a7zF3RWZ+5k5fvtbZjQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7o2cFy4rIypdWxZm+ueiKs8obohKXirAMUwS2FczWOg=; b=pLXfTJRkLUvLXWoy/FvavWshNRQiyVHK4ZOb1zKVIbVTqxmXnjNwRcCe5YlcwadaucBiIP7BjF1iXQVvTAXaSHl1boIHtgRR4EjgQ2WPLx5z1YP8XRot4okELRzCiNYAsRljs5JuWnQ1jNDC2gZKWVbR85gPiD9Sf14y9+axAmk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:47:10 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:10 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 19/25] drivers: add the basic framework of vDPA PMD Date: Tue, 17 Oct 2023 13:45:39 +0800 Message-Id: <20231017054545.1692509-20-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 178b38e6-c453-4aa4-9dbd-08dbced480f2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bKihugK0LkbDXvNX1b+l7iQIOls/YYMnfcaf8NZGiNVZR0ILWfL7leo+jR/kEDuLesyjnW+L8yP5bYXiNeiVaX5c8tsAD4YCPtStPTAlF83xzpyPXfG3xMPijoFSlPImVR3KnU6D6e6C/l+nwLCoDWLukP4fNRxuTepLrb2kB21Tjv+uFay/IHcFYx+d/JWksscnF3TZ76oaG4AX1UVglDlCld9YbhxGwmT2KJhurnIj47qOxNi7t+HnTeEIY4yJntmUrl/pqqRBTjm+ny06CyxelaKsqex2+Qa6UuyB87Blfkv9bYDxRT4IrAEN3ynZvQoLpjGtlmdSwQAkfc+2I0yP3a4x2lTE8wPvVuiBFb0ijC247o2JnbQXVeJMXIbf/P+dUJg+pVrqAQ341M6WHUCxUZoTXCGeU0+xp0FoGaG2QeUUm4i0jS3ydxxifu1YDRaqNoK5vff9g40cjIy7ZROX0Jnh/PIMXQfdfILOF3wO2OwWF/Jq5BpYlsfOqLCZC3IM9ms4D5mWWJyfXnSIp5cJQuOXzrVAUAPOj/51/6krDAiTBCP52p/r8QmY4Vn0TfaTsOmhvOjBhZm/oMj8ucTqFFvwkv7i0bCoLG4VOSKC9VMhU1q11Nfe5nHWup46watfUAHTCNBM9ti5+Yu9yEJ2bbsGTrdVM18x4X1qgsE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: t1500Jhy2E25ApBd4NDbFZ3nhQiELkUWYpx3NkKril6ahLdJwwsmEe/M52/2lvWvjJaIRfieSgxtFEHcizd5yduyzyEAuWqL/2gG46j+rEdxlI5HqsKLRrx4HC3vVNrw2TN0fpfL4NJ73kyVwxkyd86ylDA+n6fHGImm+VhOug7GUbM7MbWyvqT1DEjGTqBVHplEeL3WtT0D7mkbr3WoZgmh0118XUa9psToTrr6gzYFMaAlo1CLGJDs6wYO2syipatv/se88EKI9fWhOB0X4jkoHVXmCBT3401VpNQysfH3uFaZzQ1KTzNAhlpDAA9uqhkKfOoRL4+VKfOeg91UC9Mwj41lr2E3BagjFmnwikS5IkF1Hrq834TXKeSYujUuX8y/nnAIVs0TmcX30dGWV2ZnOPPGuFm0tT2RDaL9H78jDA56EurXAZsHRjA8jfUaQEJD2JOuSXnwQ577nYFU838dWoS6ZBKKBPODCBnv6PoKpODrKLXIwc3r9H/QueQPVzJZIgaj+sCuzhsWytGzEl7ajSwdK7h04JSoM/gj8wBYz61tYIPWJLGjV0MT9BMd/ZPVRleJxGEF4LYNY+oOG4+EUcwsboNTLK2PcxeHFFy8JaE3DMfE1ZJ8SgloWveTEldoHlh4uXh84UXjv7GWpOgzomK1Jjwfm85iWjriDBOCgauGMGuA2w65H161cvlY7AorT9vpLkyi4n7rzfE5vd5S2kQUTkDM3mmtiZbmTjnBHpDP1qZf8eGNjyEk0Ywk3bEFHLumc743cPMg/rOrgGZEK7fDRjbDMoVEYae6jHH2Xi6jPiRfnQzhmzQDHmc1Vss8gGycCpc+7SihSe1/CYYJh5B4DKUZTG096eWfr4Hn+QsjQUKR7VGx276S/e68WC7cKaRwbK4Ft65QNiUSn9DsvYcG+m2EWavVG52MdFz0iNa3q3I6dh1SjVtDnQCS3FqgIzivZ7sh3fahTaDE1ANjF5JK76ILT32EkdeUD8FlXosgstqtHPLcQSjo2dGMTQ8Nw6MIOZiB5k6SXK6bIBwpPUaKzUzemhHtefpQbb5u3hB5PQSBXZBn5g+Jsrp8GnKMsboy/iwx0xJjL5zMIDCM4fizBN83ydQFabW2HL28kwBDaL+8ECIZFA8G082IWVl4fkjNvNoHGOlpGIVpNH+2sxHqRvcbsnwFVHHcskQcDUfim7f1nzvgEcpbNnJuXAIZyvBVeGZTznc1cELKb7iioDODyH3o8t92MyeAzv4E7XXbCjgEq14vlm2Rs/Quz58GBKCYTR69DKAFagg85gMEoRZKhPF/Mz0yZNDlX0wOT7gd1S3TeGDGCQppYvSvwSqFq5JqLn2laAoMw8ibQSG5RdK7RY6GFjW0+lZymeJtICHBgnneCsYZeNBQoeS0GhWEuxfMmNw4pr0SUNx1iQQulfztfvSUB5DDNTzOzoYSmnUg86JcpHZrO+EggMuvvial8qQuyaPX7vQP/oa83ZSwW2eX7f5dKVh5sREwnOx5c11C77UA6J3MpKFJvdnoMQ2yByHwz65wXA59gSNWeBJE6SzuvIIAqxs6Ab06aJKl7MzZnE4KD9iCH8cQ0tmACr6beTai1ccbAyUUCQDnTQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 178b38e6-c453-4aa4-9dbd-08dbced480f2 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:10.2061 (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: VLBgGZasrAGSLEjI1BByu9zcvl0Dp5NmBdX9mEBAdtQMRitijSfhy8WbYf95xoEDDNcrsaSk2cYD33vJQsuBBz0UrtgISUeLAF6nLPzB7R4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add the basic framework of vDPA PMD. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_pci.c | 1 + drivers/common/nfp/nfp_common_pci.h | 1 + drivers/vdpa/nfp/meson.build | 7 ++ drivers/vdpa/nfp/nfp_vdpa.c | 153 ++++++++++++++++++++++++++++ 4 files changed, 162 insertions(+) create mode 100644 drivers/vdpa/nfp/nfp_vdpa.c diff --git a/drivers/common/nfp/nfp_common_pci.c b/drivers/common/nfp/nfp_common_pci.c index 1aa8dd4bbd..c73f4888a9 100644 --- a/drivers/common/nfp/nfp_common_pci.c +++ b/drivers/common/nfp/nfp_common_pci.c @@ -32,6 +32,7 @@ static const struct { enum nfp_class drv_class; } nfp_classes[] = { { .name = "eth", .drv_class = NFP_CLASS_ETH }, + { .name = "vdpa", .drv_class = NFP_CLASS_VDPA }, }; static enum nfp_class diff --git a/drivers/common/nfp/nfp_common_pci.h b/drivers/common/nfp/nfp_common_pci.h index 21465fca68..80c027c3a5 100644 --- a/drivers/common/nfp/nfp_common_pci.h +++ b/drivers/common/nfp/nfp_common_pci.h @@ -16,6 +16,7 @@ typedef int (nfp_class_driver_remove_t)(struct rte_pci_device *dev); enum nfp_class { NFP_CLASS_ETH, + NFP_CLASS_VDPA, NFP_CLASS_INVALID, }; diff --git a/drivers/vdpa/nfp/meson.build b/drivers/vdpa/nfp/meson.build index b17866e157..e1cc244578 100644 --- a/drivers/vdpa/nfp/meson.build +++ b/drivers/vdpa/nfp/meson.build @@ -12,5 +12,12 @@ if not dpdk_conf.has('RTE_LIB_VHOST') endif sources = files( + 'nfp_vdpa.c', 'nfp_vdpa_log.c', ) + +deps += ['common_nfp'] + +if not dpdk_conf.has('RTE_COMMON_NFP') + error('Missing internal dependency "common/nfp"') +endif diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c new file mode 100644 index 0000000000..ef4ae4946a --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -0,0 +1,153 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include + +#include +#include +#include + +#include "nfp_vdpa_log.h" + +#define NFP_VDPA_DRIVER_NAME nfp_vdpa + +struct nfp_vdpa_dev { + struct rte_pci_device *pci_dev; + struct rte_vdpa_device *vdev; +}; + +struct nfp_vdpa_dev_node { + TAILQ_ENTRY(nfp_vdpa_dev_node) next; + struct nfp_vdpa_dev *device; +}; + +TAILQ_HEAD(vdpa_dev_list_head, nfp_vdpa_dev_node); + +static struct vdpa_dev_list_head vdpa_dev_list = + TAILQ_HEAD_INITIALIZER(vdpa_dev_list); + +static pthread_mutex_t vdpa_list_lock = PTHREAD_MUTEX_INITIALIZER; + +static struct nfp_vdpa_dev_node * +nfp_vdpa_find_node_by_pdev(struct rte_pci_device *pdev) +{ + bool found = false; + struct nfp_vdpa_dev_node *node; + + pthread_mutex_lock(&vdpa_list_lock); + + TAILQ_FOREACH(node, &vdpa_dev_list, next) { + if (pdev == node->device->pci_dev) { + found = true; + break; + } + } + + pthread_mutex_unlock(&vdpa_list_lock); + + if (found) + return node; + + return NULL; +} + +struct rte_vdpa_dev_ops nfp_vdpa_ops = { +}; + +static int +nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) +{ + struct nfp_vdpa_dev *device; + struct nfp_vdpa_dev_node *node; + + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + node = calloc(1, sizeof(*node)); + if (node == NULL) + return -ENOMEM; + + device = calloc(1, sizeof(*device)); + if (device == NULL) + goto free_node; + + device->pci_dev = pci_dev; + + device->vdev = rte_vdpa_register_device(&pci_dev->device, &nfp_vdpa_ops); + if (device->vdev == NULL) { + DRV_VDPA_LOG(ERR, "Failed to register device %s", pci_dev->name); + goto free_device; + } + + node->device = device; + pthread_mutex_lock(&vdpa_list_lock); + TAILQ_INSERT_TAIL(&vdpa_dev_list, node, next); + pthread_mutex_unlock(&vdpa_list_lock); + + return 0; + +free_device: + free(device); +free_node: + free(node); + + return -1; +} + +static int +nfp_vdpa_pci_remove(struct rte_pci_device *pci_dev) +{ + struct nfp_vdpa_dev *device; + struct nfp_vdpa_dev_node *node; + + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + node = nfp_vdpa_find_node_by_pdev(pci_dev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid device: %s", pci_dev->name); + return -ENODEV; + } + + device = node->device; + + pthread_mutex_lock(&vdpa_list_lock); + TAILQ_REMOVE(&vdpa_dev_list, node, next); + pthread_mutex_unlock(&vdpa_list_lock); + + rte_vdpa_unregister_device(device->vdev); + + free(device); + free(node); + + return 0; +} + +static const struct rte_pci_id pci_id_nfp_vdpa_map[] = { + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_NETRONOME, + PCI_DEVICE_ID_NFP6000_VF_NIC) + }, + { + .vendor_id = 0, + }, +}; + +static struct nfp_class_driver nfp_vdpa = { + .drv_class = NFP_CLASS_VDPA, + .name = RTE_STR(NFP_VDPA_DRIVER_NAME), + .id_table = pci_id_nfp_vdpa_map, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .probe = nfp_vdpa_pci_probe, + .remove = nfp_vdpa_pci_remove, +}; + +RTE_INIT(nfp_vdpa_init) +{ + nfp_class_driver_register(&nfp_vdpa); +} + +RTE_PMD_REGISTER_PCI_TABLE(NFP_VDPA_DRIVER_NAME, pci_id_nfp_vdpa_map); +RTE_PMD_REGISTER_KMOD_DEP(NFP_VDPA_DRIVER_NAME, "* vfio-pci"); From patchwork Tue Oct 17 05:45:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132710 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 D7B6E43186; Tue, 17 Oct 2023 07:48:47 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EC86640EDC; Tue, 17 Oct 2023 07:47:15 +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 1B0D742D8C for ; Tue, 17 Oct 2023 07:47:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mEn8yf1MwQ2ZcpzgsmD27FxCGpmIrDnaRivr9bZrI57lVT9hDUWyCcW6X6I9SBhUhMIdVHcq/bzChZE9owTN59EhR8cXsAFSnt4wfycH7MeVN1bGExrr9BOok1i58zOANUAihGPvXyec28mJy/EdrL3BEK9oBq6laDZ65/XjcwqDhBoMDhv83M8CGUeRQ7CvX8MQ3m95A7Hk9d492xGvqNdO2fOmxm6FY9xheW25LIUbc8OilXGIXNKSo0bIPis4islOTp5KLfNsuhx7soMduAYSIBVEhT6JuSVvldRjunFHd7XAWsfRYJ3H/J/Mq+sfvQwHjAPuvhiJl0Ns2HHVRA== 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=Tu/h6K8fxiCMSSRgpHLYyWKnVPrcUlaPhNc2lM6+RzxUa0DnswL/2RTnji4imRighZtydNKkPnWi5KhPkHa5sz6crh+qZWkfXiLXD3T7XgHr6/FvDnGC5/fegNxPiOwqpqcxon7SrpKCGzpltLDcAlqmAkH6JAwcRdRicUCv7cNT8PGnNRzAba9M5350n5ttfMiH8Oh2dRwzu/fbLO4fGhLEuOYNdUL7JysqjmtQJ+EmN7sqGw0XZSzBcUgCRqNKdvn6fAcFD5ykhyN99sWEBqkIXsAyzjTuo33mX75heLk2DkXKj61qIWMQtJljllGRBMAk9063X4D90l5zRKpN/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=jk/CbMQztnVDf2I4hFCWS4AwJwyfhhq7mTjnyIunuEA=; b=ggg4GAnJnkeHfeqN8Ia14uIBUIAccgncJzkNM35JBvO8UWAj1ySLfW4f9LWe3WpEVE9iYEi21KGPP8LBgnhHYglNSJNgOeitF4CgHSAG4lWGI579xcLZ+hEAOkhEfjvjX5g6QkaCSyybaT8EOEKMgs7DzZ4+QffPLD5p7H4Y89M= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:47:12 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:12 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 20/25] vdpa/nfp: add the logic of remap PCI memory Date: Tue, 17 Oct 2023 13:45:40 +0800 Message-Id: <20231017054545.1692509-21-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 61e8597c-70dd-4fbb-9ed3-08dbced4828c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CQl7vIVqZkZyvPMKWp/qORwJJFA5VI3kpyDy8dzyvZsdQ8/9aBXIuRHKPO8SqKW4grysok31uhBYsfQQIkO4b40RCJPRV7V+hb9Y7VKvS/OrVdPya2dcTQzsdoyE4vM7ZOhuUPj7ILiqokaEjLKjrxSwHHOzdzZ4eH03gjPaEq2FxDutSbH2IDcavXIIrCvQrVzNvlnwlIDB8zuKNXFBhqjCkflrymoiZAtQ03EK+tczi//QLjBxBYxgBcLvkQEeKPITYmsb7IMTYcNbojBQKhDxcYewJqJGGinF3DeewOLkJOzFgELHvx8WqbDbszt6ZecUlFnBWJbYVhoUo5VimKSDJ9veuVUBEkHlQqN4Frtspsp3yNDbib+wJFJAbE3loAJly1BpgGUQPXeo8wwGOewXF7xszEEltCezMT1zX2bx9OB81xKg7qJxZJHNmKsCAN7yXvBxbX/vifGGe+xp/3Azo6RbXD2C7Y/26lQa0SinZUvDxE2tbkvU9L/bFwOATF+DXUS32pf7JtVuemWpy6dNEUe6/ScDSpSSWSGtqUZxiClGTxiB2H41pyyf+cyX2UNiTLX5kQYz7GDZZqSgJG5THnX7I8Cagqg+MhRuZxH9Z9rZR/2zg+uE1gWszkHPI14GCRG3au4haHUnzY5l/X0Cx4xWVVP3rBVJG+KaDHE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ggaTRAEdSV6cgGVTgHo9fL3jCeFiwX5RrbUoikI84w13LVhUeFNiw24b1PpV55dWEHov/penMtp1ICPBxJP0wKdvRKlTS3K6w+33AeUcmTOkz3gMBDveWTFOP4wlLBmxxottdHyAMBRny+z2JewPlxtgCixaq0JRJ33ZOw94HpFaY5T9AFSzQxL4fkmWaTK4K+XaQMrlYXTXPTsxlJ6ulnkoyH5VMYTB5ESrhvyqDd0pY8JaKWlOYeJl9HVANKo2bbBIu5PrLmDMKgazKy+FjlqQAV8i81+8n3oeR3sFXpGYMtbz8i1J0+97t0m3V12EQtDbsYvlQzQByzdal0oo3/+4LmZAoqYf413xPWruPHM1Ye+snUsV7bc5FBOPDTkjv08zNHonEah3tj7Ap7u1RD9ROWEMhpLYrhxfSnbE40eNjROBkae5/TXoLUnQuIyU9d3x8jvovuf21BeYJbpWi1ie0X2XNoAySBUUH6LDx6FI7G/A04jbqTNXJKC2LexoY5i2dNJGy7jmIezJEXkn+Ghe+Wkhw4bQE/cJaw5cZCsayyL4ULJ/0Cn4U9sBbIZliSmLK/c5vI00dhbVQnBdqFtvqyHes6ZirScVFmztRF04JQA4fxn301RZuqNHf7XiXSFoJoHAWj/3EhLkida4R8XOY75xzO8G75qQFRgxL9/fOXZDJJ77zrYjPR5tKU52lS9914gBTMlYqStSYkaq9FWPWlZf7+0sBrOUDO3NWSc8KeqiWh4S7oLQXUv4iG4T5pCv+BIGIK4XOdqCJVI1dd2YEbJfY+6t4Aedr+pK3bpSxH9y22jluNTac/D2KmRIFJsIgtdwz/1mpBnQqxoGg6vb8992eAZenaClNqO7tCxtcPTVJxtrDpXTOXoavY+oDzVOdjquSyU8a5ubodXBaklCCFqvF5zSAOrMxaZfQHHw3r91YKWYRszsPVqAExiZZdmwHH558IA/aTFTt8XXF7NoW+3NTj/oy4dXBF6oF2w6CbS6V5d7ir2+MNv/o+NfH0xMa78ndw/1TgX/VbpdgxkVYaprqAMFG5wVsv75JURnpFEneQEDkY+Saf6jmQIfHhU3NKR3/JMqbK+XkZOWNLkuwdYBi1muBGQEh0Y5x5w7M0O7SfC4M5/UXThwjprtwZKWqKrZNWumublY38hrD4hI36+dbJhd9WBiOTNiyW65I/7bvkqC7Cxc/05Uzd2CHUmAYdEWQCejUenVeXd1M1s4AA2kvDl9RPQCbRivcEH73f1xws8xxUZKOxWvzM/asJrbno9mkbW6+W9K3rRsUlAOt3WvVnfr47euIqBConPNGhWvTBpBreaugAqap6cTHw0pZV2cp49CFQntwhyuhBoz9SJ0ULvGL1gwcGQcxOaWTWdCdG7L5eW77BTPE7iYFpMIyVztQOQ7xhFDDQ9KeCRUiBBldQcpoxt3DcVTtwIMPDVw8MFJvbmkyDuornO+wLfddMOGQdN+vOvJuH4MdcxMVQ2bxOeZqTnCYDbqkEiKxxqGxOZ0LFiI30ShKEqsr42VoFdKBHsdvhRZM9Nrcxvw5HfNBCZR0dMtNnPGjAho0abNZOIKCoVI4uJC5zqPW/EisVGYqEBslQxxpRfrcA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61e8597c-70dd-4fbb-9ed3-08dbced4828c X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:12.4758 (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: rXB6DjJkWSAUtaGUSpCukFdHtN385NgJSBiZ3hhVnTuo5iZRrYvNyJ1wq9TDNJRXRgrYXlDAV/3XqEx5yDi9YkyWpf1eTMEXEiL41N56NpM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add the logic of remap PCI memory. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/nfp/nfp_vdpa.c | 65 ++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index ef4ae4946a..824b0d681a 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -7,6 +7,7 @@ #include #include +#include #include #include "nfp_vdpa_log.h" @@ -16,6 +17,11 @@ struct nfp_vdpa_dev { struct rte_pci_device *pci_dev; struct rte_vdpa_device *vdev; + + int vfio_container_fd; + int vfio_group_fd; + int vfio_dev_fd; + int iommu_group; }; struct nfp_vdpa_dev_node { @@ -53,12 +59,62 @@ nfp_vdpa_find_node_by_pdev(struct rte_pci_device *pdev) return NULL; } +static int +nfp_vdpa_vfio_setup(struct nfp_vdpa_dev *device) +{ + int ret; + char dev_name[RTE_DEV_NAME_MAX_LEN] = {0}; + struct rte_pci_device *pci_dev = device->pci_dev; + + rte_pci_unmap_device(pci_dev); + + rte_pci_device_name(&pci_dev->addr, dev_name, RTE_DEV_NAME_MAX_LEN); + rte_vfio_get_group_num(rte_pci_get_sysfs_path(), dev_name, + &device->iommu_group); + + device->vfio_container_fd = rte_vfio_container_create(); + if (device->vfio_container_fd < 0) + return -1; + + device->vfio_group_fd = rte_vfio_container_group_bind( + device->vfio_container_fd, device->iommu_group); + if (device->vfio_group_fd < 0) + goto container_destroy; + + DRV_VDPA_LOG(DEBUG, "container_fd=%d, group_fd=%d,\n", + device->vfio_container_fd, device->vfio_group_fd); + + ret = rte_pci_map_device(pci_dev); + if (ret != 0) + goto group_unbind; + + device->vfio_dev_fd = rte_intr_dev_fd_get(pci_dev->intr_handle); + + return 0; + +group_unbind: + rte_vfio_container_group_unbind(device->vfio_container_fd, device->iommu_group); +container_destroy: + rte_vfio_container_destroy(device->vfio_container_fd); + + return -1; +} + +static void +nfp_vdpa_vfio_teardown(struct nfp_vdpa_dev *device) +{ + rte_pci_unmap_device(device->pci_dev); + rte_vfio_container_group_unbind(device->vfio_container_fd, device->iommu_group); + rte_vfio_container_destroy(device->vfio_container_fd); +} + struct rte_vdpa_dev_ops nfp_vdpa_ops = { }; static int nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) { + int ret; struct nfp_vdpa_dev *device; struct nfp_vdpa_dev_node *node; @@ -75,10 +131,14 @@ nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) device->pci_dev = pci_dev; + ret = nfp_vdpa_vfio_setup(device); + if (ret != 0) + goto free_device; + device->vdev = rte_vdpa_register_device(&pci_dev->device, &nfp_vdpa_ops); if (device->vdev == NULL) { DRV_VDPA_LOG(ERR, "Failed to register device %s", pci_dev->name); - goto free_device; + goto vfio_teardown; } node->device = device; @@ -88,6 +148,8 @@ nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) return 0; +vfio_teardown: + nfp_vdpa_vfio_teardown(device); free_device: free(device); free_node: @@ -118,6 +180,7 @@ nfp_vdpa_pci_remove(struct rte_pci_device *pci_dev) pthread_mutex_unlock(&vdpa_list_lock); rte_vdpa_unregister_device(device->vdev); + nfp_vdpa_vfio_teardown(device); free(device); free(node); From patchwork Tue Oct 17 05:45:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132711 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 62C5243186; Tue, 17 Oct 2023 07:48:53 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1634542D6A; Tue, 17 Oct 2023 07:47:18 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2103.outbound.protection.outlook.com [40.107.244.103]) by mails.dpdk.org (Postfix) with ESMTP id 79413427D9 for ; Tue, 17 Oct 2023 07:47:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZzqY9YdbQPvEzYP1B4B5aPSGNYrbgM1+1Xv/zFRYgi4UIXJESq/XQXh/E0kS3BWnKYH19AVSwBxI5bRBfi002n7BIEV07lRlW6e3Jp1eVdWN24z8powznLP1P102ZGJ/LUYmWMNbBAr2JOyoC22jfcq67lLYqkgcGhkfIfEnc4cJjkgLrCRzoTFvpIfj0TwrV4wKNP/CbunPq94yS9lR41cpXDMkfmRnnWpihrB1ccCUvQJDM/uBH6+PMAxEcgt3/7sdqbugR0dpyo9NASDR1JmQvHBIwLLoaZMOoBqt7FYHi0mhsGHun/jAbgdDqud8PCJul8PrdAWOA34SGN1P3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ueD306333BC6aL/GrzldxBPxOnMsxU/MlgBa+o8r1+8=; b=Ke5ZoaZpfFbixm2JYn9r28Bbut1QCLujlOnt30z7a9dof6CA4KacfTtKL/asaHoO0nM40ydpUz23pxtDXniMQNix4UPn0uYCB5eNowjDBjh6kEWF4cy3oVj6SvdHi3uUzaz5oBII5xWUmlHytAA/PNO5cKnb0oq8NNYUMvHpHM/iCdj4nqZBJf6nAv4oJtPexxMtclF7vCu9IsEQRKPSym6SKYOiAQhtzceEjpEjU60fYCQdmW4m/Zv/w4mtG0Z1O8OGUxddD+McO95ohALRjOI8WBwl1HOAW0ZjFvwd3py1Xb6VZXSHewbSTGpuncmUnOm+Oa8Jm8J9LbsZpSZbbw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ueD306333BC6aL/GrzldxBPxOnMsxU/MlgBa+o8r1+8=; b=fLrelO66Z6t54091NFxw6npdacbcnC7ToD7koEFBrDsPJM3yzFZIoAtSTWuPw0k833ydhblYzx+9U3XeKbahh9Ep2Ifhdk7/Lp9ZlcOKWAnJXs0jy+NVC/fzBQdsNddm/pMIAr1i3GsuWGWMuD1bi1uq9P0U9yncfWuAcyeaqUs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by MW5PR13MB5904.namprd13.prod.outlook.com (2603:10b6:303:1ce::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Tue, 17 Oct 2023 05:47:14 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:14 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 21/25] vdpa/nfp: add the hardware init logic Date: Tue, 17 Oct 2023 13:45:41 +0800 Message-Id: <20231017054545.1692509-22-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|MW5PR13MB5904:EE_ X-MS-Office365-Filtering-Correlation-Id: 255db3ee-cb26-4b56-6a5f-08dbced483ed X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yyqt2qI5oIhQUimWOKIMJOi9kBl2rlM9nM/mB4N9jwn2NOPxgNWN/hBZ10cKKvKSv7QkJYSE/KkLHZTMdFhH5ZvzDS1As0gto0ZZVbZFEcZ1Hm+CuoQGIxBrJmYK3OkpEOgsXbpnPhrIuJwGM5oFQHV0TkudiLYh+/zCUQ+4FZn0PmsoXjJ+s3IZ0H2mWr3g0f1qhKyKloIcsJ3sGn2dfYITd1Qk31h+M9fusw5DQO4xyXFsRJFEbXw6HpsWbFaRKlGYm7CjoWeINKCJSfmngckuBZxldcIsCfrki/dfo3A3d7kSSCoFx6yHD+qPbHvt6H2Z9J6lzTZyi+FHHT5qzdAvqwcasFaprVv7MQDhWoBvtWtCFMMVbNJH330snqHNaHgC/g1K4KKUt0qIL6Kb2eRlPw/ZF8RCYxVeOeJrwxTxo44abPDUnRtQT8O1KzPSGBsSQwZqcbIMV0lNyVxJBPz9dolkG4xyGPApXrVHtUYoT4kH3tUZ1mEqcgjRJbbJxQ2CHDrc3FoGD2/ncInlnXH1qRldxUJ3D0h6gKhyE4DKoPhcyfDAW2utWwNDq2RVAlA5KAT3mRHKZcAZwbDGgBiqkZ2hcapUmgT5cag1xHx+w3wE9Ppsw5Y/55Bm7hxO157uFr6szbecmvSFzyhlx2wsNdGDnkDfrkHZlk6wHVQ= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(376002)(39830400003)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(5660300002)(8936002)(8676002)(83380400001)(66556008)(66476007)(6916009)(316002)(66946007)(54906003)(41300700001)(478600001)(4326008)(6486002)(44832011)(6666004)(6512007)(6506007)(107886003)(38350700005)(2616005)(1076003)(26005)(36756003)(38100700002)(52116002)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Aigx6828HqY8KNf7LH3tlUoA8HuGc+SBsJZioBkJzYpSbseY9fC4QkixBUP0954Yx1a1b5mbs1Ofv8nMuxrfq3Eb8hhC1b4hYnc202ZbBVguWdgfRocxOxZVnLDiP94et1Xx9j9C9d6b0YCFSy8+RXoYAfX6Eg+ATl/zGYmHjXTQpzWcH6oRsmU6T4oiZ2hQ3cM+0GAjhY+zPVjTrhreg7Cd3+2sHv5dCN+j4RjELpSoZHCqgEiluT+cjKBS3GnHYfI8a1Ye1aTwKolBoZ3CWOfXif8liz+T2Rw1Nbj9IC14Bs/9WFqUPOT6WR5CKR5lSqYcjt+XxY3HzOzt1w5mStMbI/+mX6k/nwB7mY3RpxCkqCoB4b8WOBUZ7NHot91ebaGdr9/gDepDILRS9A8YkDefmDNamLW12/NxBeQ0HD+0YH7UcKa35y8ZAaoIm2m9o6xz5NiIM17F2v+PXC03COxSPL51fF0PKiDqE4Uq1lFm5SibrVmrUXbIEZuytg6+PmytSxKa1dlpYt/GW3SsfJbHypQzPkEbOIITRTVMTCvPQWY4N5K0vaWJYwC9IvcVa7nEcXMsbwXGNXPU6BoKrZI8mEVDNqXce6yR4vp9zJqziZUph++XsWAFt122WDPfon4NQfz5NoSuPvrFA+J4X/SZENDW9GC9pvhp4Eg2Vt2UGQA5xghqmbPAiWJNcrNs4XtpPg2eCTsaWQs0/16kIEAbEjYuD7HqwG9HQsamWBypyJ6MSacTnu81/z/Tg1h478U9mBc2sdFeONd5PMc51vMIN1WQmuEeJ0SUXzyg/UI2Z+WPcgaTUEQcDo2z2sPuKamVhrhpo5hBBzU9AdZBa4qutoSIs05Rsd9ZAWsGZy0s+UdaKW+lvVHqQo0K/Xqb+lb5lWJhD81hnXbUctxrCNkb4NqA9ec0zDe1J8fEbi96+L/UF/MZg0i9HnDwdMiWlkfpuUGnXfH3I//vm6ffuIQjEKGxo6Nm4CyM0IQ1/ruQDvvJJDxwRASVFdG7Q0oAC+AGlLJHoPYzNbtLKiDUJ8iDqWJKd8Qk3RRgcCSf8F2AgZ0qMkxJ7arBVhPdAy2UsZ+UFlx/groKlnp11QwA2759hrnnFn7ATy1hKLycgZGN2pT5YuyaovJOBMsKqCcR/y0EAuwbiAcw0wc9HAsgtbZetvLNBn2fHE1hjcyyrW47dlvriTErKvQwMd4AwYjMBMJiyQZyG2oSYqZC3hJEh7SLJTtpL7V9R31BQO8p3eXGSQoVT9yV210fl5R4MTPu7USl9JkM+2JekXL3InJ91IpWq11q4mknUWcc3G2z8GW9YAcEZk3aOYri1LUZOmQEgOn9eo3fvpDD9b55eHAGrGvcaqBuxXqtUBm9gePbpXJYgXrpYuc11zR9ZEmi6+0bcD0UWrQZKUSUMTsp97iNai1d/V3Y1P3dYEsAW52lNoCT9q5311RFQMrwyA4cBsVSvGazgdcEmbUbnr+A5eBECjtplTRbKs2uxxydRZ9Y4fXlSRMxGFD+sXz2xBEqNCXlQz5x/v1c3sQE3kHRLMOx7HJQml2tpL2dDiavSU68QlCyD/4wdge0aoKUdxVDZ2Gv01yqEqjF3AUgMgFaYI0xNg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 255db3ee-cb26-4b56-6a5f-08dbced483ed X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:14.8481 (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: WYMvT1Ir9jZSXIjDUaUL0ZPfF4SUKC7dpIcr1WFNAnQf2D6FSynNaYPOdpOocNjh9XZ0HqWrb4/pIW5pplFZl8DTYAiB6rVQMhVKggY+SFM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5904 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add the hardware initialize logic. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/nfp/meson.build | 1 + drivers/vdpa/nfp/nfp_vdpa.c | 10 ++++++ drivers/vdpa/nfp/nfp_vdpa_core.c | 54 ++++++++++++++++++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.h | 32 +++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 drivers/vdpa/nfp/nfp_vdpa_core.c create mode 100644 drivers/vdpa/nfp/nfp_vdpa_core.h diff --git a/drivers/vdpa/nfp/meson.build b/drivers/vdpa/nfp/meson.build index e1cc244578..27eb1a6276 100644 --- a/drivers/vdpa/nfp/meson.build +++ b/drivers/vdpa/nfp/meson.build @@ -13,6 +13,7 @@ endif sources = files( 'nfp_vdpa.c', + 'nfp_vdpa_core.c', 'nfp_vdpa_log.c', ) diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index 824b0d681a..00d8f7e007 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -10,6 +10,7 @@ #include #include +#include "nfp_vdpa_core.h" #include "nfp_vdpa_log.h" #define NFP_VDPA_DRIVER_NAME nfp_vdpa @@ -17,11 +18,14 @@ struct nfp_vdpa_dev { struct rte_pci_device *pci_dev; struct rte_vdpa_device *vdev; + struct nfp_vdpa_hw hw; int vfio_container_fd; int vfio_group_fd; int vfio_dev_fd; int iommu_group; + + uint16_t max_queues; }; struct nfp_vdpa_dev_node { @@ -135,6 +139,12 @@ nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) if (ret != 0) goto free_device; + ret = nfp_vdpa_hw_init(&device->hw, pci_dev); + if (ret != 0) + goto vfio_teardown; + + device->max_queues = NFP_VDPA_MAX_QUEUES; + device->vdev = rte_vdpa_register_device(&pci_dev->device, &nfp_vdpa_ops); if (device->vdev == NULL) { DRV_VDPA_LOG(ERR, "Failed to register device %s", pci_dev->name); diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.c b/drivers/vdpa/nfp/nfp_vdpa_core.c new file mode 100644 index 0000000000..a7e15fa88a --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa_core.c @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#include "nfp_vdpa_core.h" + +#include + +#include "nfp_vdpa_log.h" + +/* Available and used descs are in same order */ +#ifndef VIRTIO_F_IN_ORDER +#define VIRTIO_F_IN_ORDER 35 +#endif + +int +nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, + struct rte_pci_device *pci_dev) +{ + uint32_t queue; + struct nfp_hw *hw; + uint8_t *notify_base; + + hw = &vdpa_hw->super; + hw->ctrl_bar = pci_dev->mem_resource[0].addr; + if (hw->ctrl_bar == NULL) { + DRV_CORE_LOG(ERR, "hw->ctrl_bar is NULL. BAR0 not configured."); + return -ENODEV; + } + + notify_base = hw->ctrl_bar + NFP_VDPA_NOTIFY_ADDR_BASE; + for (queue = 0; queue < NFP_VDPA_MAX_QUEUES; queue++) { + uint32_t idx = queue * 2; + + /* RX */ + vdpa_hw->notify_addr[idx] = notify_base; + notify_base += NFP_VDPA_NOTIFY_ADDR_INTERVAL; + /* TX */ + vdpa_hw->notify_addr[idx + 1] = notify_base; + notify_base += NFP_VDPA_NOTIFY_ADDR_INTERVAL; + + vdpa_hw->notify_region = queue; + DRV_CORE_LOG(DEBUG, "notify_addr[%d] at %p, notify_addr[%d] at %p", + idx, vdpa_hw->notify_addr[idx], + idx + 1, vdpa_hw->notify_addr[idx + 1]); + } + + vdpa_hw->features = (1ULL << VIRTIO_F_VERSION_1) | + (1ULL << VIRTIO_F_IN_ORDER) | + (1ULL << VHOST_USER_F_PROTOCOL_FEATURES); + + return 0; +} diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.h b/drivers/vdpa/nfp/nfp_vdpa_core.h new file mode 100644 index 0000000000..c9403e0ea4 --- /dev/null +++ b/drivers/vdpa/nfp/nfp_vdpa_core.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_VDPA_CORE_H__ +#define __NFP_VDPA_CORE_H__ + +#include +#include +#include + +#define NFP_VDPA_MAX_QUEUES 1 + +#define NFP_VDPA_NOTIFY_ADDR_BASE 0x4000 +#define NFP_VDPA_NOTIFY_ADDR_INTERVAL 0x1000 + +struct nfp_vdpa_hw { + struct nfp_hw super; + + uint64_t features; + uint64_t req_features; + + uint8_t *notify_addr[NFP_VDPA_MAX_QUEUES * 2]; + + uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; + uint8_t notify_region; +}; + +int nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, struct rte_pci_device *dev); + +#endif /* __NFP_VDPA_CORE_H__ */ From patchwork Tue Oct 17 05:45:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132712 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 881C943186; Tue, 17 Oct 2023 07:49:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9D969410F2; Tue, 17 Oct 2023 07:47:24 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2116.outbound.protection.outlook.com [40.107.94.116]) by mails.dpdk.org (Postfix) with ESMTP id 73764410F2 for ; Tue, 17 Oct 2023 07:47:23 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GBRjvehAQRH+8BaTnPg0DEmGiquJ9MxDVPnO0Ikw51E699NlBFgLafKjQr7fnZg8NWL/UmCH9BlVmPbRQjZ7a/L+ETYBnDBH4sZ9yQRgQrcSooILuEdmiF7rC5CUeK7MB6Go82cgrMJnqNFri2PY8ooQkMSIuyPmFNaWF6DTEfOAeQwVMcUG9ymXWnl8BaOWOQPYR1AOfQd3zCn367UgxD6frDaeaR0hhBL2PqdCOnfFoeZ7TTFoiAcXrGv8lSLyJSyKtKVXGz/qojsjJkgXyJkCbjHFXWiPVDkMQaDNm3C35yPTtrrkOJUXWOtj1G6rSjYxVViFiVJ3nXDDA4SbVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CRjIkFOAgtqQO6MucvhuRNntT4IojwKrYXbnkxEmJj4=; b=Y5N0fVDkAYLLWh8ypBzViIvfYbD/1saTHzaxFEMgz8YjT9yg3ePh7UqdBjOHnE8HZ1CknztiTdbcRfGAjTYVumCUg9Y0F4yXVJvhzb3nLunI0FTkGH4bQGuLzNJI6CGsgltkTScfhKutpOYnOdauYxkrQmvTW5r12N+zu6dF7fYADGcFwEVu10/n/gtvX9l3A4Q2nlid5sGYenvh2+NRMki8kNry6GgoMKD9f5NkInz+Iho4e4zJyRFsXXyDgwDfZlkoKjzO7UqHRzSlCctSc3rNUSj/GbVxdCccvIDfIrCUYe3AYMqULaZFI04wqiGktoCpeu7s03jMSAsAGoW2cQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CRjIkFOAgtqQO6MucvhuRNntT4IojwKrYXbnkxEmJj4=; b=Otwujda9DgSZu34t1SFfZJelpCQ8AH5584Uhp95yAgrft5hB5VtC/aukT7uU6s2oTcaQXo4/WblTdoi7Q2X1xWYO3/MfsS/gje+jfXaiwkra64uU0aHwEAZ2N5M3ZRlF035K7AQypWZkpOkRcvKipWbD9UiABYK331ZShLYaKCs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by SJ0PR13MB5272.namprd13.prod.outlook.com (2603:10b6:a03:3e3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.46; Tue, 17 Oct 2023 05:47:19 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:19 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 22/25] drivers: add the datapath update logic Date: Tue, 17 Oct 2023 13:45:42 +0800 Message-Id: <20231017054545.1692509-23-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|SJ0PR13MB5272:EE_ X-MS-Office365-Filtering-Correlation-Id: 17daa154-f500-4578-fa4e-08dbced48552 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3OAyWuPGafkijePGeJQJJaoLqA7/Idl6NA+iPz6bmbH8Bmiql1lKE7YjegErSwiZGjWMmQMHLfzK4CeLnlPkzvaFpT+FtaUOHDZ5W9iC6jjnBoyD1BBbiaTahM/Z37EvSavWrtZZ7Ytoy0/1oFqPt8UVuU0JbQGwlCMw10IJYUvBtGpyEnY2mI8wtRkh34bQ6LtvM773HQz8EDuk6fnn/yDuNH7dY7gMeBNzdred463N5LfFP5vQONc7RgkMtTB/mcNO479A8dcTHWXUAP6QyrQWynKmaZDxQB2/BPB/o/8KsRQgxNHxcZNyJIUloAkC/jfohI2hdWnkv7eQD3519lSD5UnxZEyCS/Fn0WAwAsXMEfD9YPTmjeeLuLfuIyG8OA4R9f+xeYNKgSdvGqmXcU1aYtYUEQ1RCqjS7gjoAakxWezd2Z3O9+rrg2LleVMalZGplR9DjjE/u2YrgoPdNcpxWiVyof4akGbQ/B8EOx3E+Q2/V605l6zN8E0Zz4DL4KYPJV+hTYEewPXvnZwSUUy3n/kZUwRoDjBLkU1FKqCvsGWwoIsCV8FPLfHt7z3AGOxM8qmOJSi7uG3aBsiat+E+DOYUVJ0U0kryCKrmm097fEi1+VFOZHObxelG4hWTxsqu2ONauB2OeRkz4x03WtjLAm4/StHyxPKRFLmCUtk= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(376002)(346002)(396003)(39830400003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(38350700005)(6916009)(66476007)(6666004)(66556008)(66946007)(6486002)(86362001)(54906003)(2616005)(83380400001)(478600001)(6512007)(38100700002)(316002)(1076003)(52116002)(26005)(107886003)(5660300002)(30864003)(6506007)(2906002)(4326008)(15650500001)(8676002)(36756003)(44832011)(41300700001)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NRtxs/kAcAK9j1FeY32NLIYxPO9Nwb2/1pr54we3UV9FwrqrQlXxp/AVJDyiCPRoS+//x+q/CyMIFdaNnieIokVbVe306B3VcRAhoWy5cU4M7M628zfZFhwyufbJPLOTvHyBspQ+04twNUptxK1sh436T9tVuaxcOriMeybB8nRDr/OaJ4m+udgvohoLp4w2c8YyDu7zQiqMGpyC/bxsYoJx4A9Ts4nfs9NAHEfenKWZL3UPzcaEf/luHYlR6qHnFwwMtsPStKj5QBt1SNch3qACFy21dXENFJUDNJ7Zy5EaweFtd6YDd1N6oFlespNedg5n+YiVXu5nrhBhUnbHh2mInwPNu1wZKAZoWKufI0z0p28kjLEY6Pwu2XZFjk/R6PRAUXpiyoV6sbkEFPJM5FRo/ywQxcirP14KvWqv5diS136XtOuCtv/WV7jOY1kJ2dSOfDvmrE9DBv3GzrOomt+JYbT/sthTMIoaJ95BVZ37/ZJl0tY8CT5uMSh6JE+yEh9W+jK81+GYP5Y56pjT+ji8g2phg/gYBWFAxsmy4NWg65yDY/6T9AL25GDAwJylM61hCgT1r6QXvazLkVQ6kdGqGk/uzO7noULzzV4n7NqIKBkMgrEOdXZlx5935fH9tBjF5JyizQVzNlSpWWfq8F7bT+Icp9ggqVYtskKQzARswTAIoTfLBlrdFIsKcMbrVWo2xOwu13MyC8821qpKcybj9JH9iL3CHg5Er3qTJ60vL/2IaIZchxcVywpYtUn+jmrnRyBteeTooSlMEbSqdE5FfGO1VC8R9bZTSi9xmhqk/N+LdPetj3umoXOKn8UfvGWv3oWoGbvK3ep67IHYqskiBNEc1UPTKXh7AlS2hN1xmHs5v0EuAhlhJj9yUnUPIGBaHhF9Z0apMIFLeTfTbnZY9Mvva85MeQ4c5mq5W1uF8EcMq9j40Qs6dKqoeOTESTQCetjiGFuuRMgRDxLCXCE8TPCetBarEmRZUoaErzsS4opz5iCFaHXqKZ45usreOoAms6iRXWOft6hpWATyJbqqDnZ9Cz/N4ZE1sC6KLDWu91ZHdbC3fFHP4Pl+zVWeijUaqEN3d7ix8mS9HifrxQMR1of2qAxEHgnvIhj+U84OjNakwGI1xNeMorDVpNPkDbKyrgCZ1VsceK45tBmkNkpE/vX+RlSls/INF4oIJbGIeQ16NFbYO4LXobivvEoNhEhbFvPjI9STeWMBsWN61fK2HfpJp3CHxKnSUhgQaQp2XqMGss8/nVh95T6SuXBhu0B38Ve6IkfuurFgSPjVPl8ccntqnsF0EWWZHXKR6FAFM2pQxrEdP6R8N7Z0COM3vplOv6fRcHE60cZi8yWjrX9RZJms9TDUaqTU52zZc9zmazyvvzPKcp+jp1Ng7bMo0SjtWXQk1qxT4bvwVa6kjm9+yRPCSfdNvuccAqPTGhEyXDYRAnfW8qcQKB32O8GW251KsKBGw7PY2EeO1OZyXxHhkMnu8hUXAfiCnyPmJf1frJqk9+U64g1sSZaGFVYTdi3+U0LFQDlVBcXtbU/PwW3qp3Ihp0TaRQbLCxF1NqWRJs7lJHhNPJjowmCbZoWc6XudgG340DznwyAclYNBZQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17daa154-f500-4578-fa4e-08dbced48552 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:19.1407 (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: zYf04xkJ4z7+VMCgPiHppgJD9gdRoTd14Ka2Qr9/I/WHobXJE2YCHPzocibXnw1Y6j3HshJw+dmHULZDirS7+RssjPKqcL54Uh5rR8JWqMw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5272 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add the vDPA datapath update logic. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_ctrl.h | 1 + drivers/vdpa/nfp/nfp_vdpa.c | 315 +++++++++++++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.c | 78 +++++++ drivers/vdpa/nfp/nfp_vdpa_core.h | 15 ++ 4 files changed, 409 insertions(+) diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h index 3c8cd916cf..f92ce50fc0 100644 --- a/drivers/common/nfp/nfp_common_ctrl.h +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -238,6 +238,7 @@ struct nfp_net_fw_ver { #define NFP_NET_CFG_CTRL_IPSEC (0x1 << 1) /**< IPsec offload */ #define NFP_NET_CFG_CTRL_IPSEC_SM_LOOKUP (0x1 << 3) /**< SA short match lookup */ #define NFP_NET_CFG_CTRL_IPSEC_LM_LOOKUP (0x1 << 4) /**< SA long match lookup */ +#define NFP_NET_CFG_CTRL_IN_ORDER (0x1 << 11) /**< Virtio in-order flag */ #define NFP_NET_CFG_CAP_WORD1 0x00a4 diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index 00d8f7e007..465ee4841d 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -4,6 +4,7 @@ */ #include +#include #include #include @@ -15,6 +16,9 @@ #define NFP_VDPA_DRIVER_NAME nfp_vdpa +#define MSIX_IRQ_SET_BUF_LEN (sizeof(struct vfio_irq_set) + \ + sizeof(int) * (NFP_VDPA_MAX_QUEUES * 2 + 1)) + struct nfp_vdpa_dev { struct rte_pci_device *pci_dev; struct rte_vdpa_device *vdev; @@ -25,7 +29,15 @@ struct nfp_vdpa_dev { int vfio_dev_fd; int iommu_group; + int vid; uint16_t max_queues; + uint32_t started; + uint32_t dev_attached; + uint32_t running; + rte_spinlock_t lock; + + /** Eventfd for used ring interrupt */ + int intr_fd[NFP_VDPA_MAX_QUEUES * 2]; }; struct nfp_vdpa_dev_node { @@ -112,6 +124,302 @@ nfp_vdpa_vfio_teardown(struct nfp_vdpa_dev *device) rte_vfio_container_destroy(device->vfio_container_fd); } +static int +nfp_vdpa_dma_do_unmap(struct rte_vhost_memory *mem, + uint32_t times, + int vfio_container_fd) +{ + uint32_t i; + int ret = 0; + struct rte_vhost_mem_region *region; + + for (i = 0; i < times; i++) { + region = &mem->regions[i]; + + ret = rte_vfio_container_dma_unmap(vfio_container_fd, + region->host_user_addr, region->guest_phys_addr, + region->size); + if (ret < 0) { + /* Here should not return, even error happened. */ + DRV_VDPA_LOG(ERR, "DMA unmap failed. Times: %u", i); + } + } + + return ret; +} + +static int +nfp_vdpa_dma_do_map(struct rte_vhost_memory *mem, + uint32_t times, + int vfio_container_fd) +{ + int ret; + uint32_t i; + struct rte_vhost_mem_region *region; + + for (i = 0; i < times; i++) { + region = &mem->regions[i]; + + ret = rte_vfio_container_dma_map(vfio_container_fd, + region->host_user_addr, region->guest_phys_addr, + region->size); + if (ret < 0) { + DRV_VDPA_LOG(ERR, "DMA map failed."); + nfp_vdpa_dma_do_unmap(mem, i, vfio_container_fd); + return ret; + } + } + + return 0; +} + +static int +nfp_vdpa_dma_map(struct nfp_vdpa_dev *device, + bool do_map) +{ + int ret; + int vfio_container_fd; + struct rte_vhost_memory *mem = NULL; + + ret = rte_vhost_get_mem_table(device->vid, &mem); + if (ret < 0) { + DRV_VDPA_LOG(ERR, "Failed to get memory layout."); + return ret; + } + + vfio_container_fd = device->vfio_container_fd; + DRV_VDPA_LOG(DEBUG, "vfio_container_fd %d", vfio_container_fd); + + if (do_map) + ret = nfp_vdpa_dma_do_map(mem, mem->nregions, vfio_container_fd); + else + ret = nfp_vdpa_dma_do_unmap(mem, mem->nregions, vfio_container_fd); + + free(mem); + + return ret; +} + +static uint64_t +nfp_vdpa_qva_to_gpa(int vid, + uint64_t qva) +{ + int ret; + uint32_t i; + uint64_t gpa = 0; + struct rte_vhost_memory *mem = NULL; + struct rte_vhost_mem_region *region; + + ret = rte_vhost_get_mem_table(vid, &mem); + if (ret < 0) { + DRV_VDPA_LOG(ERR, "Failed to get memory layout."); + return gpa; + } + + for (i = 0; i < mem->nregions; i++) { + region = &mem->regions[i]; + + if (qva >= region->host_user_addr && + qva < region->host_user_addr + region->size) { + gpa = qva - region->host_user_addr + region->guest_phys_addr; + break; + } + } + + free(mem); + + return gpa; +} + +static int +nfp_vdpa_start(struct nfp_vdpa_dev *device) +{ + int ret; + int vid; + uint16_t i; + uint64_t gpa; + struct rte_vhost_vring vring; + struct nfp_vdpa_hw *vdpa_hw = &device->hw; + + vid = device->vid; + vdpa_hw->nr_vring = rte_vhost_get_vring_num(vid); + + ret = rte_vhost_get_negotiated_features(vid, &vdpa_hw->req_features); + if (ret != 0) + return ret; + + for (i = 0; i < vdpa_hw->nr_vring; i++) { + ret = rte_vhost_get_vhost_vring(vid, i, &vring); + if (ret != 0) + return ret; + + gpa = nfp_vdpa_qva_to_gpa(vid, (uint64_t)(uintptr_t)vring.desc); + if (gpa == 0) { + DRV_VDPA_LOG(ERR, "Fail to get GPA for descriptor ring."); + return -1; + } + + vdpa_hw->vring[i].desc = gpa; + + gpa = nfp_vdpa_qva_to_gpa(vid, (uint64_t)(uintptr_t)vring.avail); + if (gpa == 0) { + DRV_VDPA_LOG(ERR, "Fail to get GPA for available ring."); + return -1; + } + + vdpa_hw->vring[i].avail = gpa; + + gpa = nfp_vdpa_qva_to_gpa(vid, (uint64_t)(uintptr_t)vring.used); + if (gpa == 0) { + DRV_VDPA_LOG(ERR, "Fail to get GPA for used ring."); + return -1; + } + + vdpa_hw->vring[i].used = gpa; + + vdpa_hw->vring[i].size = vring.size; + + ret = rte_vhost_get_vring_base(vid, i, + &vdpa_hw->vring[i].last_avail_idx, + &vdpa_hw->vring[i].last_used_idx); + if (ret != 0) + return ret; + } + + return nfp_vdpa_hw_start(&device->hw, vid); +} + +static void +nfp_vdpa_stop(struct nfp_vdpa_dev *device) +{ + int vid; + uint32_t i; + struct nfp_vdpa_hw *vdpa_hw = &device->hw; + + nfp_vdpa_hw_stop(vdpa_hw); + + vid = device->vid; + for (i = 0; i < vdpa_hw->nr_vring; i++) + rte_vhost_set_vring_base(vid, i, + vdpa_hw->vring[i].last_avail_idx, + vdpa_hw->vring[i].last_used_idx); +} + +static int +nfp_vdpa_enable_vfio_intr(struct nfp_vdpa_dev *device) +{ + int ret; + uint16_t i; + int *fd_ptr; + uint16_t nr_vring; + struct vfio_irq_set *irq_set; + struct rte_vhost_vring vring; + char irq_set_buf[MSIX_IRQ_SET_BUF_LEN]; + + nr_vring = rte_vhost_get_vring_num(device->vid); + + irq_set = (struct vfio_irq_set *)irq_set_buf; + irq_set->argsz = sizeof(irq_set_buf); + irq_set->count = nr_vring + 1; + irq_set->flags = VFIO_IRQ_SET_DATA_EVENTFD | VFIO_IRQ_SET_ACTION_TRIGGER; + irq_set->index = VFIO_PCI_MSIX_IRQ_INDEX; + irq_set->start = 0; + + fd_ptr = (int *)&irq_set->data; + fd_ptr[RTE_INTR_VEC_ZERO_OFFSET] = rte_intr_fd_get(device->pci_dev->intr_handle); + + for (i = 0; i < nr_vring; i++) + device->intr_fd[i] = -1; + + for (i = 0; i < nr_vring; i++) { + rte_vhost_get_vhost_vring(device->vid, i, &vring); + fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = vring.callfd; + } + + ret = ioctl(device->vfio_dev_fd, VFIO_DEVICE_SET_IRQS, irq_set); + if (ret != 0) { + DRV_VDPA_LOG(ERR, "Error enabling MSI-X interrupts."); + return -EIO; + } + + return 0; +} + +static int +nfp_vdpa_disable_vfio_intr(struct nfp_vdpa_dev *device) +{ + int ret; + struct vfio_irq_set *irq_set; + char irq_set_buf[MSIX_IRQ_SET_BUF_LEN]; + + irq_set = (struct vfio_irq_set *)irq_set_buf; + irq_set->argsz = sizeof(irq_set_buf); + irq_set->count = 0; + irq_set->flags = VFIO_IRQ_SET_DATA_NONE | VFIO_IRQ_SET_ACTION_TRIGGER; + irq_set->index = VFIO_PCI_MSIX_IRQ_INDEX; + irq_set->start = 0; + + ret = ioctl(device->vfio_dev_fd, VFIO_DEVICE_SET_IRQS, irq_set); + if (ret != 0) { + DRV_VDPA_LOG(ERR, "Error disabling MSI-X interrupts."); + return -EIO; + } + + return 0; +} + +static int +update_datapath(struct nfp_vdpa_dev *device) +{ + int ret; + + rte_spinlock_lock(&device->lock); + + if ((__atomic_load_n(&device->running, __ATOMIC_RELAXED) == 0) && + (__atomic_load_n(&device->started, __ATOMIC_RELAXED) != 0) && + (__atomic_load_n(&device->dev_attached, __ATOMIC_RELAXED) != 0)) { + ret = nfp_vdpa_dma_map(device, true); + if (ret != 0) + goto unlock_exit; + + ret = nfp_vdpa_enable_vfio_intr(device); + if (ret != 0) + goto dma_map_rollback; + + ret = nfp_vdpa_start(device); + if (ret != 0) + goto disable_vfio_intr; + + __atomic_store_n(&device->running, 1, __ATOMIC_RELAXED); + } else if ((__atomic_load_n(&device->running, __ATOMIC_RELAXED) != 0) && + ((__atomic_load_n(&device->started, __ATOMIC_RELAXED) != 0) || + (__atomic_load_n(&device->dev_attached, __ATOMIC_RELAXED) != 0))) { + + nfp_vdpa_stop(device); + + ret = nfp_vdpa_disable_vfio_intr(device); + if (ret != 0) + goto unlock_exit; + + ret = nfp_vdpa_dma_map(device, false); + if (ret != 0) + goto unlock_exit; + + __atomic_store_n(&device->running, 0, __ATOMIC_RELAXED); + } + + rte_spinlock_unlock(&device->lock); + return 0; + +disable_vfio_intr: + nfp_vdpa_disable_vfio_intr(device); +dma_map_rollback: + nfp_vdpa_dma_map(device, false); +unlock_exit: + rte_spinlock_unlock(&device->lock); + return ret; +} + struct rte_vdpa_dev_ops nfp_vdpa_ops = { }; @@ -156,6 +464,10 @@ nfp_vdpa_pci_probe(struct rte_pci_device *pci_dev) TAILQ_INSERT_TAIL(&vdpa_dev_list, node, next); pthread_mutex_unlock(&vdpa_list_lock); + rte_spinlock_init(&device->lock); + __atomic_store_n(&device->started, 1, __ATOMIC_RELAXED); + update_datapath(device); + return 0; vfio_teardown: @@ -185,6 +497,9 @@ nfp_vdpa_pci_remove(struct rte_pci_device *pci_dev) device = node->device; + __atomic_store_n(&device->started, 0, __ATOMIC_RELAXED); + update_datapath(device); + pthread_mutex_lock(&vdpa_list_lock); TAILQ_REMOVE(&vdpa_dev_list, node, next); pthread_mutex_unlock(&vdpa_list_lock); diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.c b/drivers/vdpa/nfp/nfp_vdpa_core.c index a7e15fa88a..db9b8462b4 100644 --- a/drivers/vdpa/nfp/nfp_vdpa_core.c +++ b/drivers/vdpa/nfp/nfp_vdpa_core.c @@ -5,6 +5,7 @@ #include "nfp_vdpa_core.h" +#include #include #include "nfp_vdpa_log.h" @@ -52,3 +53,80 @@ nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, return 0; } + +static uint32_t +nfp_vdpa_check_offloads(void) +{ + return NFP_NET_CFG_CTRL_SCATTER | + NFP_NET_CFG_CTRL_IN_ORDER; +} + +int +nfp_vdpa_hw_start(struct nfp_vdpa_hw *vdpa_hw, + int vid) +{ + int ret; + uint32_t update; + uint32_t new_ctrl; + struct timespec wait_tst; + struct nfp_hw *hw = &vdpa_hw->super; + uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; + + nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(0), vdpa_hw->vring[1].desc); + nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(0), rte_log2_u32(vdpa_hw->vring[1].size)); + nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(1), vdpa_hw->vring[1].avail); + nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(2), vdpa_hw->vring[1].used); + + nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(0), vdpa_hw->vring[0].desc); + nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(0), rte_log2_u32(vdpa_hw->vring[0].size)); + nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(1), vdpa_hw->vring[0].avail); + nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(2), vdpa_hw->vring[0].used); + + rte_wmb(); + + nfp_disable_queues(hw); + nfp_enable_queues(hw, NFP_VDPA_MAX_QUEUES, NFP_VDPA_MAX_QUEUES); + + new_ctrl = nfp_vdpa_check_offloads(); + + nn_cfg_writel(hw, NFP_NET_CFG_MTU, 9216); + nn_cfg_writel(hw, NFP_NET_CFG_FLBUFSZ, 10240); + + /* TODO: Temporary set MAC to fixed value fe:1b:ac:05:a5:22 */ + mac_addr[0] = 0xfe; + mac_addr[1] = 0x1b; + mac_addr[2] = 0xac; + mac_addr[3] = 0x05; + mac_addr[4] = 0xa5; + mac_addr[5] = (0x22 + vid); + + /* Writing new MAC to the specific port BAR address */ + nfp_write_mac(hw, (uint8_t *)mac_addr); + + /* Enable device */ + new_ctrl |= NFP_NET_CFG_CTRL_ENABLE; + + /* Signal the NIC about the change */ + update = NFP_NET_CFG_UPDATE_MACADDR | + NFP_NET_CFG_UPDATE_GEN | + NFP_NET_CFG_UPDATE_RING; + + ret = nfp_reconfig(hw, new_ctrl, update); + if (ret < 0) + return -EIO; + + hw->ctrl = new_ctrl; + + DRV_CORE_LOG(DEBUG, "Enabling the device, sleep 1 seconds..."); + wait_tst.tv_sec = 1; + wait_tst.tv_nsec = 0; + nanosleep(&wait_tst, 0); + + return 0; +} + +void +nfp_vdpa_hw_stop(struct nfp_vdpa_hw *vdpa_hw) +{ + nfp_disable_queues(&vdpa_hw->super); +} diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.h b/drivers/vdpa/nfp/nfp_vdpa_core.h index c9403e0ea4..a88de768dd 100644 --- a/drivers/vdpa/nfp/nfp_vdpa_core.h +++ b/drivers/vdpa/nfp/nfp_vdpa_core.h @@ -15,6 +15,15 @@ #define NFP_VDPA_NOTIFY_ADDR_BASE 0x4000 #define NFP_VDPA_NOTIFY_ADDR_INTERVAL 0x1000 +struct nfp_vdpa_vring { + uint64_t desc; + uint64_t avail; + uint64_t used; + uint16_t size; + uint16_t last_avail_idx; + uint16_t last_used_idx; +}; + struct nfp_vdpa_hw { struct nfp_hw super; @@ -22,11 +31,17 @@ struct nfp_vdpa_hw { uint64_t req_features; uint8_t *notify_addr[NFP_VDPA_MAX_QUEUES * 2]; + struct nfp_vdpa_vring vring[NFP_VDPA_MAX_QUEUES * 2]; uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; uint8_t notify_region; + uint8_t nr_vring; }; int nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, struct rte_pci_device *dev); +int nfp_vdpa_hw_start(struct nfp_vdpa_hw *vdpa_hw, int vid); + +void nfp_vdpa_hw_stop(struct nfp_vdpa_hw *vdpa_hw); + #endif /* __NFP_VDPA_CORE_H__ */ From patchwork Tue Oct 17 05:45:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132713 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 600EA43186; Tue, 17 Oct 2023 07:49:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C05D142D8C; Tue, 17 Oct 2023 07:47:25 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2116.outbound.protection.outlook.com [40.107.94.116]) by mails.dpdk.org (Postfix) with ESMTP id 02BBF411F3 for ; Tue, 17 Oct 2023 07:47:24 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GcBtv7T+HHV4hOkukpbnyP16sHWuHUBBgmp57upfmcZO+R03nq29eFS9Zv6AXosy5p5cln7cpXcmeZP8ho1Qeb/Sn3teme4ppJDvBGQYZUeddWRuie3xmMOMUquwhdoFBKh2DWitZ52BC/2VwFS+zR6AZbKtdPD+eK4p/rmMi8wruiUPO6qtcjnF60sZex+8oRl4isWRM1PzRd7WS4wYzw6V3+LC+krg/HS1qlJ9tIjospesJXWR9gUZgfZUmOPSzaUFa+3rdM3o7YSZ+Q3d95UVamuDkEHg/Clhfv3CcNtnh9+uTW27xnZCeug4+osFmaukP5mGCd1K4Obw/YkTMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QHdqZRcwwr2EzMknT15RVkuNGoH9MZJHCg6KQHJJMcY=; b=jeDnIjshmqKCQroMuyciF5SeZw7R49AoB1dD8J1ThtDQSe1yqa5cylZ1hbJYWIzJ15TmeaebtfEL4Xp8/i8BNMFrl8y0Wfs29vFcHZzLLPNSwAODOIirUluHcwoyHavVuKaCuN0p6LDj6xepSS0OJ1pcoWeBlhjFzZQcggKjYQDT3QutPQ6CYNYh3AUFJ3RUtOoSgpuvpSyh/pzCHMhK4v89vrh57FZUwMMEnLaYmZ6Rf+xBTkSXLJFiNl+tY+cq+MMsJuDYJOw8h2S29Srq6ooDxxKGmpCiOhdBy7GQlo5sA1SxVdR5wIbxsEtkuyx9sOwBGHHDZ+OUqNh9aQXxZw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QHdqZRcwwr2EzMknT15RVkuNGoH9MZJHCg6KQHJJMcY=; b=saR7Ki9IR4GF4/a3+AASPrdZQ8Dt1+oUHFPUzscfdlarMBS+JngAqflzGQSvD0aSm1hyn0sjJWleAuKeCi9ydvJxeNwjCqNTLcvhxm00oG0WxnewzsMUui7wcI6Ma+J64cYApeFX1mPnowX1YthpEZQ5GJcyo+5JAfHnUHR6edc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by SJ0PR13MB5272.namprd13.prod.outlook.com (2603:10b6:a03:3e3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.46; Tue, 17 Oct 2023 05:47:22 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:22 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 23/25] vdpa/nfp: add the notify related logic Date: Tue, 17 Oct 2023 13:45:43 +0800 Message-Id: <20231017054545.1692509-24-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|SJ0PR13MB5272:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ef1a567-1b49-4555-dea8-08dbced48822 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /N2JzQvzP0jTRu15kaFZUo7Om8990WgJoIjrSEyyvlqc86DvxSBVBihxTtYCp5PVIGAianesFexmVAs7J9KBWxlZvgs3uE1XYx3szuEsH4Wu7PMkU3qcNR7m1cyoUyam/RDhILV/noWT6vvC65gVw7Vb3Nn511ag5yt6xTtxSSGR0a7aF+rjaUzs2IniDKnR8fQpqfz2vCWdzyRtv0cYlB48STUcKtH8U3h51BnjnqnoOey2E+jg3bMcZ7Yk/uGIl9QjtNTVALA0Kh5x33l1FxlyaBvau4PRcog3TbcYmV31Btl0JOoDVKM+Yb7SDBZ6r6F4GXMB19Vv0n10kcr06UZU07EDqDQNyJBBcRIpQkQlzkfVqyh7bCQN6yRj03+EF9Mvlwt7ZeMD49Z11NDB5vcKAnL5GPEO1ptzS5XhX3gUM+HqD81hxp+zD0Xq8bxpCpNJ0gVK1r7CMiYauXWqvLbqHXokObcTwfr40fYVaw1w44rgktJ81uJ2Q7rbZVp3DtnVmcq/AferwdRQFq4H7YAACX8sLlNM9Sd0JJzjXno2ZNiXGJ6cONM/abSlcJ8KXrY6/ySLJgPRxaQVHugIMyWW/fNhD6uMOHbDOLDFmJN2sdS93hTq4/Ayc2pJYfW/27/FbKiiIjll7sPJhfSb7cojrX3PxpUWK6yFmG5mEFo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(376002)(346002)(396003)(39830400003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(38350700005)(6916009)(66476007)(6666004)(66556008)(66946007)(6486002)(86362001)(54906003)(2616005)(83380400001)(478600001)(6512007)(38100700002)(316002)(1076003)(52116002)(26005)(107886003)(5660300002)(6506007)(2906002)(4326008)(8676002)(36756003)(44832011)(41300700001)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eHseghuf3VFhpqh9IDoZ8+h4PPJFkiid5lELB8SyYJQ6xrQYxsZKefZbYPI1vYji6Q6RdLow2PctafSX69uh1ckzN6nRd1Zk/kJVXur+L1lHdU64opF5udLsAIqT0Lp4vKLXSxza5pRQXphQYXZGB1+G9qToK5XmkOWCWf4AdjTQrfr+V48OQgpTn55KEnr0TRckg8yYJmGtx7oXFxejc0L5tZ6IJ1Yqg45rA975hNwsXiyuRKOxuO4OV+LPv8tUHrd1zjVVNcVniWGj+uW0InbzO/OfGhk0/ZfVsNybsZEHPbZQiPLk1+oIZPVS3/PPWdJfYs5e2qNN8JLrXJN4+x/eI3Yekmq1uvyNH4kpghfNiFwt8ii9VUR6C6HUPPOikCbkTcDh9la34u8jNqcGj1gRxS2kJ6ME9UTv2hw7AVOXZVXhE65FrLnR8Cwzp1Spr8c0+IGGv9Qnom3xtFhqTUsxsy9d+kjXk89EwjlNFq8E1uaDbrMvk761NecXjzZVmB5Vk5nqxc9RVyqF0i6SagEivEjJucEZtOfF8WW4+pWa1vxj19fmqdUzP4uCE9z7ecsqmKwkoeKvNRAmR+u4ql16Hxw7il3haW8BPksNs1JlatNsrtnq3jSizOpu/QSt7kjdJ7G053J6CWmxnv5TyKwfI2bZJMnsoVziziLivXMdfuGsUADEcfQQnktN0P6gO9Mw6rlEaBHA3cpX1fcFgoGNqWrkTEwc5EAU/2+9GCS27GBmb3i0MuPyg8ns7s5ENnlEZbEpYRKf5m+wuJCAcuN4yBJ2H9Y52jky82pHXYWldigP4sOPwy7weXPTxqFLq8kKGuzeYUjiiVrO9rKbBp2GscF9K+btlWnXjUn1lhUMAoKQUI0nMDna8OEAaa8HbptgGqS3lXh10mjqB4W92c14pM7ABidhZSQ7dXQfvCj6RMepKfxxs/BPiGD7qNp9LLYZHhMk+H7thpy2sl27ilif/r9oAYA6DdKj1fVDLugAreCrtbT+wM+I3OOWJgAf19VoAfqAHHKPwu7NS/WN17njl7zlcmG8WPCe90gPxAzFc5Gn4bNkRsFDijxUKZbEnRKB+ObLUpZ0EtGt3Ve5npV6rasS9QL+EMeh9OOyCucXfCUxjJMy6xCly5Jg94VIl+VzD9finuBNyuffVYjf1c/1gnwp//2ULJ3gOjU5EVJKF7+Ho+9N/Uip7FyxZCNHMY39lo6fkTK75aiK4ZaZox3zgGvj710fLVy7LaC9oQEs94bFIQKFcLwNCZUWDk9xcTFebl18md0GsN+RsLd47gV/isFKWXqIuSktS21lIE282pdMQOckcGE+G0eTz4tM3wk1qwqfHslQkCYx+HTypKIDzS3cDDrPF0bP0m+NKk3LE3Ft6c4lk5J484nS9VPED89o5Xw5TIU/lpQJD2aepka/eMjAsjP0nl0jauvHQ+AjPPKKheaMEleYsKbGwBEnS8cENRuZ2jB+7kSML79/L+3ZpPpWS9dsZijSXUnZA0qJL+30BCjVPRTycJhLPP0WH4B6lRr3J6wWXikUwCdQrScL7Dt3M8pXwKXVL1w1xzFjUAD37ozR7iHbUsc/TMeAFacGU0YMV7zTgKLsBqv97A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ef1a567-1b49-4555-dea8-08dbced48822 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:22.2949 (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: myaW6YelV9JJ4ZnDKZUMEFtRAXBBNMF88NAAt1V6tY54VcPMqSJnLkXyXLN8iYqe81UjDYyMmeZWJ9A1P4DNrtnIqZWIFdPzaeijR1Ri3Kk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5272 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add the logic to process vDPA notify relay. Signed-off-by: Chaoyong He Signed-off-by: Shujing Dong Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/nfp/nfp_vdpa.c | 155 +++++++++++++++++++++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.c | 61 ++++++++++++ drivers/vdpa/nfp/nfp_vdpa_core.h | 4 + 3 files changed, 220 insertions(+) diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index 465ee4841d..01a59e2cfd 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -4,7 +4,9 @@ */ #include +#include #include +#include #include #include @@ -29,6 +31,9 @@ struct nfp_vdpa_dev { int vfio_dev_fd; int iommu_group; + pthread_t tid; /**< Thread for notify relay */ + int epoll_fd; + int vid; uint16_t max_queues; uint32_t started; @@ -368,6 +373,148 @@ nfp_vdpa_disable_vfio_intr(struct nfp_vdpa_dev *device) return 0; } +static void +nfp_vdpa_read_kickfd(int kickfd) +{ + int bytes; + uint64_t buf; + + for (;;) { + bytes = read(kickfd, &buf, 8); + if (bytes >= 0) + break; + + if (errno != EINTR && errno != EWOULDBLOCK && + errno != EAGAIN) { + DRV_VDPA_LOG(ERR, "Error reading kickfd"); + break; + } + } +} + +static int +nfp_vdpa_notify_epoll_ctl(uint32_t queue_num, + struct nfp_vdpa_dev *device) +{ + int ret; + uint32_t qid; + + for (qid = 0; qid < queue_num; qid++) { + struct epoll_event ev; + struct rte_vhost_vring vring; + + ev.events = EPOLLIN | EPOLLPRI; + rte_vhost_get_vhost_vring(device->vid, qid, &vring); + ev.data.u64 = qid | (uint64_t)vring.kickfd << 32; + ret = epoll_ctl(device->epoll_fd, EPOLL_CTL_ADD, vring.kickfd, &ev); + if (ret < 0) { + DRV_VDPA_LOG(ERR, "Epoll add error for queue %d", qid); + return ret; + } + } + + return 0; +} + +static int +nfp_vdpa_notify_epoll_wait(uint32_t queue_num, + struct nfp_vdpa_dev *device) +{ + int i; + int fds; + int kickfd; + uint32_t qid; + struct epoll_event events[NFP_VDPA_MAX_QUEUES * 2]; + + for (;;) { + fds = epoll_wait(device->epoll_fd, events, queue_num, -1); + if (fds < 0) { + if (errno == EINTR) + continue; + + DRV_VDPA_LOG(ERR, "Epoll wait fail"); + return -EACCES; + } + + for (i = 0; i < fds; i++) { + qid = events[i].data.u32; + kickfd = (uint32_t)(events[i].data.u64 >> 32); + + nfp_vdpa_read_kickfd(kickfd); + nfp_vdpa_notify_queue(&device->hw, qid); + } + } + + return 0; +} + +static void * +nfp_vdpa_notify_relay(void *arg) +{ + int ret; + int epoll_fd; + uint32_t queue_num; + struct nfp_vdpa_dev *device = arg; + + epoll_fd = epoll_create(NFP_VDPA_MAX_QUEUES * 2); + if (epoll_fd < 0) { + DRV_VDPA_LOG(ERR, "failed to create epoll instance."); + return NULL; + } + + device->epoll_fd = epoll_fd; + + queue_num = rte_vhost_get_vring_num(device->vid); + + ret = nfp_vdpa_notify_epoll_ctl(queue_num, device); + if (ret != 0) + goto notify_exit; + + ret = nfp_vdpa_notify_epoll_wait(queue_num, device); + if (ret != 0) + goto notify_exit; + + return 0; + +notify_exit: + close(device->epoll_fd); + device->epoll_fd = -1; + + return NULL; +} + +static int +nfp_vdpa_setup_notify_relay(struct nfp_vdpa_dev *device) +{ + int ret; + + ret = pthread_create(&device->tid, NULL, nfp_vdpa_notify_relay, + (void *)device); + if (ret != 0) { + DRV_VDPA_LOG(ERR, "Failed to create notify relay pthread."); + return -1; + } + + return 0; +} + +static void +nfp_vdpa_unset_notify_relay(struct nfp_vdpa_dev *device) +{ + void *status; + + if (device->tid != 0) { + pthread_cancel(device->tid); + pthread_join(device->tid, &status); + device->tid = 0; + } + + if (device->epoll_fd >= 0) { + close(device->epoll_fd); + device->epoll_fd = -1; + } +} + static int update_datapath(struct nfp_vdpa_dev *device) { @@ -390,11 +537,17 @@ update_datapath(struct nfp_vdpa_dev *device) if (ret != 0) goto disable_vfio_intr; + ret = nfp_vdpa_setup_notify_relay(device); + if (ret != 0) + goto vdpa_stop; + __atomic_store_n(&device->running, 1, __ATOMIC_RELAXED); } else if ((__atomic_load_n(&device->running, __ATOMIC_RELAXED) != 0) && ((__atomic_load_n(&device->started, __ATOMIC_RELAXED) != 0) || (__atomic_load_n(&device->dev_attached, __ATOMIC_RELAXED) != 0))) { + nfp_vdpa_unset_notify_relay(device); + nfp_vdpa_stop(device); ret = nfp_vdpa_disable_vfio_intr(device); @@ -411,6 +564,8 @@ update_datapath(struct nfp_vdpa_dev *device) rte_spinlock_unlock(&device->lock); return 0; +vdpa_stop: + nfp_vdpa_stop(device); disable_vfio_intr: nfp_vdpa_disable_vfio_intr(device); dma_map_rollback: diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.c b/drivers/vdpa/nfp/nfp_vdpa_core.c index db9b8462b4..e2a6253ae5 100644 --- a/drivers/vdpa/nfp/nfp_vdpa_core.c +++ b/drivers/vdpa/nfp/nfp_vdpa_core.c @@ -15,6 +15,41 @@ #define VIRTIO_F_IN_ORDER 35 #endif +#define NFP_QCP_NOTIFY_MAX_ADD 0x7f + +enum nfp_qcp_notify_ptr { + NFP_QCP_NOTIFY_WRITE_PTR = 0, + NFP_QCP_NOTIFY_READ_PTR +}; + +/** + * Add the value to the selected pointer of a queue + * + * @param queue + * Base address for queue structure + * @param ptr + * Add to the Read or Write pointer + * @param val + * Value to add to the queue pointer + */ +static inline void +nfp_qcp_notify_ptr_add(uint8_t *q, + enum nfp_qcp_notify_ptr ptr, + uint32_t val) +{ + uint32_t off; + + if (ptr == NFP_QCP_NOTIFY_WRITE_PTR) + off = NFP_QCP_QUEUE_ADD_RPTR; + else + off = NFP_QCP_QUEUE_ADD_WPTR; + + for (; val > NFP_QCP_NOTIFY_MAX_ADD; val -= NFP_QCP_NOTIFY_MAX_ADD) + nn_writel(rte_cpu_to_le_32(NFP_QCP_NOTIFY_MAX_ADD), q + off); + + nn_writel(rte_cpu_to_le_32(val), q + off); +} + int nfp_vdpa_hw_init(struct nfp_vdpa_hw *vdpa_hw, struct rte_pci_device *pci_dev) @@ -130,3 +165,29 @@ nfp_vdpa_hw_stop(struct nfp_vdpa_hw *vdpa_hw) { nfp_disable_queues(&vdpa_hw->super); } + +/* + * This offset is used for mmaping the notify area. It implies it needs + * to be a multiple of PAGE_SIZE. + * For debugging, using notify region 0 with an offset of 4K. This should + * point to the conf bar. + */ +uint64_t +nfp_vdpa_get_queue_notify_offset(struct nfp_vdpa_hw *vdpa_hw __rte_unused, + int qid) +{ + return NFP_VDPA_NOTIFY_ADDR_BASE + (qid * NFP_VDPA_NOTIFY_ADDR_INTERVAL); +} + +/* + * With just one queue the increment is 0, which does not + * incremente the counter but will raise a queue event due + * to queue configured for watermark events. + */ +void +nfp_vdpa_notify_queue(struct nfp_vdpa_hw *vdpa_hw, + uint16_t qid) +{ + nfp_qcp_notify_ptr_add(vdpa_hw->notify_addr[qid], + NFP_QCP_NOTIFY_WRITE_PTR, qid); +} diff --git a/drivers/vdpa/nfp/nfp_vdpa_core.h b/drivers/vdpa/nfp/nfp_vdpa_core.h index a88de768dd..a8e0d6dd70 100644 --- a/drivers/vdpa/nfp/nfp_vdpa_core.h +++ b/drivers/vdpa/nfp/nfp_vdpa_core.h @@ -44,4 +44,8 @@ int nfp_vdpa_hw_start(struct nfp_vdpa_hw *vdpa_hw, int vid); void nfp_vdpa_hw_stop(struct nfp_vdpa_hw *vdpa_hw); +void nfp_vdpa_notify_queue(struct nfp_vdpa_hw *vdpa_hw, uint16_t qid); + +uint64_t nfp_vdpa_get_queue_notify_offset(struct nfp_vdpa_hw *vdpa_hw, int qid); + #endif /* __NFP_VDPA_CORE_H__ */ From patchwork Tue Oct 17 05:45:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132714 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 ABE2D43186; Tue, 17 Oct 2023 07:49:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 539DD42D91; Tue, 17 Oct 2023 07:47:29 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2122.outbound.protection.outlook.com [40.107.94.122]) by mails.dpdk.org (Postfix) with ESMTP id 9F70342DA3 for ; Tue, 17 Oct 2023 07:47:27 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R9IADCnUMl8Ep/BNo7ZV1bvgKSolWoxgmql++eZO+nkmNaQ2hXKxVjte5wtrmTQY96DqUI/M2aom6FMGsYZouixGZRg68QZSHVkVx7gxTToay1sPCECTz/fEYAp4lN4/6NKF2sbR7tLOQfzQdfk/MufLy+fVDtK77yYJDotaZ7AeZte2M2l2AV/Re4MSVqlsuUPZ1YEQ5M0MihUn31d/+pWtPqCKbTtU6C95Wcbq2yYCGx49rXMg0xK/v0Z3qDjxWjjZSL/oUN/rWAmPf4oLgIKAriyEPwjwdOuAE4jRK4zo+A9muwXRloEXNJUL8/LvDM05qVi2S7/pYx3DX2LwCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=s6/uD0XlZ5EznMcVag8a7+X3NNWpa++VHqzaMZ/6RM0=; b=jp/IbnmqzIvk52yltbdROut5ctfCT326G4EVKeQ/7wi5964vdCEGiO1phJCZSbm8qe3pb2Mpimm+CmfX8oVKBrz17R3jYhU5enXU8uRZlbND89OcLcnzi1mKX1pVz3RFkZzjYexIqdEwmKYF2nmuQd7hn2IIeD0VBISFx0RJ4glvg71sZbgt363ScF1yyOifwuUgwzd45wrcmILvoTxzH0UKg1BwB5EJ5gwvexEcCwiEkcOyh71n/V42LME/YF0r0GajBmviOZ4BXcdm1L7TVpggB/twoiWo956BN+M7LPNPBrPCNNW0W2vdWMnIRKfUQQDg8w+onQA5wPZERswc9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=s6/uD0XlZ5EznMcVag8a7+X3NNWpa++VHqzaMZ/6RM0=; b=BVt4BLLACpOJFTogzS+U3lTZIjPxMyMpr1n7yTvTyObxnEK00pq4U7o1LgxZYqDW0WJM32o+0PkZyIg8ycIYKVgM5BVOgttxfvWX8J9kIWRORbMGVGiGuQiE3HUO9AjPLdqVLDuLeKvF7XIGg0b1m7d7QajO4RxzJ2hs9HphqLc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by SJ0PR13MB5272.namprd13.prod.outlook.com (2603:10b6:a03:3e3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.46; Tue, 17 Oct 2023 05:47:25 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:25 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Shujing Dong , Long Wu , Peng Zhang Subject: [PATCH 24/25] vdpa/nfp: add nfp vDPA device operations Date: Tue, 17 Oct 2023 13:45:44 +0800 Message-Id: <20231017054545.1692509-25-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|SJ0PR13MB5272:EE_ X-MS-Office365-Filtering-Correlation-Id: 18186f39-2a8e-4339-8b90-08dbced48a0b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MjOJ6K0c5dmhNG5+/7N7kwGrVv9Khw01mD225eKgZ3DoAshPmJzSwxpi0bNLRtFE4IacPqN7MnmfHNdZcVYSdjZ58t92pPxcfHP1Kz6pqs1C5WNY59TTo2YTD7Ps5FleCZzZO52tY1QDxyUKQD7Hra/gNi4um/bMTYGhX+ltiBJ2Z1h/A7OnHLyHgH5/Qk/+qzh1nK4fwNQkyHa9W4cuZYlYbfFgx+3vCZIzRfuaCOY6S/+bMsU3ud+VjxnIlghH+sns++T2EAl8LxoPvwiKVOxGUxFl0tCmKoTQ39OjNSudNHhdEDaQPa1ZMVXtC1cQD/qEnFZUAatKgWHxzCrjg86805dG798LZguETbTD+jKUC4L7TFPfKpKEaAL12YSzO/FQ5bnOefRWEpabVq/6fXW4cvSQmBl7jdDUTufQtKAF3ec96gyIdRcmOob6mjtbzevhDcYWJT0w1gktOzt177WNiTtaU9s4JK7x8xhJmjekf/8+NOrUsKzNK8XsdUDa4krjEeZHI/LVrTm2edGdjuMUpd0MdhYNoc/P0+w5Yn4GGUPjoyQfccaF3pSVsw/WA1tpKp5QfcJrV6Rgjwj8hh7swzrjW0XL4H8tAgoceoGivxTVmbPDek3kERIMZ0+D7xiF4+z4z7Rlmn/0sWKa7xRueuHypplIqrGgn38PNsU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(376002)(346002)(396003)(39830400003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(38350700005)(6916009)(66476007)(6666004)(66556008)(66946007)(6486002)(86362001)(54906003)(2616005)(83380400001)(478600001)(6512007)(38100700002)(316002)(1076003)(52116002)(26005)(107886003)(5660300002)(6506007)(2906002)(4326008)(8676002)(36756003)(44832011)(41300700001)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wYnL/RiK74f87xD6JA/bwRMeZ6aOeRL0fPhXmo1doeLC961PKMa/wyUwUN0jA5RQSXZtNyp99LEw+nnpsb++B3OotVoJa57bIggocO+2R8vvsPnxSL0pukevIFREIKPi51uTR/l7PFEAH0+mnMO7jmmmyoDWI7fiBye9xRS4U7Ib7Cra5fBQ+Pkd4KdWYTVYOVIe3+PU4UuZKRHCPEE9fZ7TvL9QQC8EAHkUPdEh2r5XSfTHW0ibbomdeWAGpWQwTRhy87w2cf+8wzqLeI3OpMfeHvCGSJpRMRuLLhlXrmJsDYqNPbr+Wk8eLunNe9M5xUTwQg8K/c6LVLfBvMEA46W+thbSXBJuyXUcI9Xdg5ekoK+e9JAqpKiUb3TIJBLQfnj4SYkPTmPbuclERoaCB60V3GiGYIYgnPsjL1jB0xgWyiMTKNvDAz0tENvblV1MQw7uHzceeMKcYVSbRDpnOZgZYksH+QbFK7ryr5LQpwTIkBLqK0n/TQiZurfvwXloFac1rXkSvsFAKHOEuPPkWfJXs906y1Ub3eOUCF15C6UjEMyFSKAjfwvnDMTbF9a6U0VlqeA4E0xd2SCgjWsNsuZxEWc6krdpb8N7mhpWJnNHQra5rDUbT5wpXYVvhdQRJtRj2Vd1S9k/G4PtrIGKKLd/HjNTBbBHjtQr9cOG/2iwU9LmIcVjtgKgbjdxVSA2N2H47BgwIfbMdRzf3XAtimuntSogD2KwgoMYqx+lS6zBvorzdTb4EMKlwc4jwdEysK7cWdI1nIT9DqiIvNktQN8nRaPhGZYfJWUYlZE51E5AejF2S+964UBSF8+BU24KB6QMBeIqK9uViEnv5LPgoc4v4pAbvaeUhHW5LJOGO3Jnkzl+0l+Fh/VBoIVCOaZxxaDqZVHjUjmcqul6jgaAaDUKwdd3pZswb0EPgsNjqKUe1NcccH94FehcOwmjHWUvmzBovG+3E1VstJ4VURUU2oGpGPsdy5Ly3N+Z/M5Ozg6K3XjWWoL3hgOVkBHO/kuOIVEG/4vFIHvFqSddf0UpQtc34WWbPnr7lBQi6DjLb+AE8IZOT1KE1V+gmpOk2S6lt4zvZhObyHeM11jBpNc/0/URDwVBUOdscEPilfiBYs2L2QDxyD6+yz+FNh5vIxwDPjhdNhPRH+OPMBRGtHmC0B9e/CY+epcaS9r49x0nO0JF6a3CerE7WjOcm3MklBwg+KryTq50ezzEtnVARtJbMclk8E4HSHiJKU04ZWYIquTXqSJvJXaUt1Z6EjA8MhoEWAq0VH945AGzYycdoLMYSu25Pj/liqIdCTdZVnRrSdZaDWNvnUz4dxmlLuAfPxguoM6GxzfTVvo0jiDNi0xfbzEKOEWu+aJ6UoiQeWJJ8SCd+dMwu98s11VSGESk4H/3FeVMTImfOdjjyn0nz0/3gNvSy+tlO88SXtLKPWojkYY27gHuQH9W2+t/ggEanEk3lq+ZS1dK5eAhw93pd80QxRkT2ErWwJldCLqSDnnOt2ZnJSI6LlD9A5INrtRlkkuQH68kbgZsPNA0gbJkwt8kQUM5RtZpDKgtzoBSqGRWIf79hkPepaRKqOEoLwVwCtnrSnV+SvAU/4itMm+gaa6DRg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 18186f39-2a8e-4339-8b90-08dbced48a0b X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:25.6827 (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: V2m1tgjiOq0+nVPBg6qj/LNHicBnCoEgOHvwGwU34SvJmx6l2gHEpDET6KJxJRgIPjQY9zvWSXPhTYq3bYtBNKHog8UvCiDy23izc1OC7kM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5272 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Implement the corresponding nfp vDPA opetation functions. Signed-off-by: Shujing Dong Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/vdpa/nfp/nfp_vdpa.c | 213 ++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c index 01a59e2cfd..860b5cce63 100644 --- a/drivers/vdpa/nfp/nfp_vdpa.c +++ b/drivers/vdpa/nfp/nfp_vdpa.c @@ -57,6 +57,29 @@ static struct vdpa_dev_list_head vdpa_dev_list = static pthread_mutex_t vdpa_list_lock = PTHREAD_MUTEX_INITIALIZER; +static struct nfp_vdpa_dev_node * +nfp_vdpa_find_node_by_vdev(struct rte_vdpa_device *vdev) +{ + bool found = false; + struct nfp_vdpa_dev_node *node; + + pthread_mutex_lock(&vdpa_list_lock); + + TAILQ_FOREACH(node, &vdpa_dev_list, next) { + if (vdev == node->device->vdev) { + found = true; + break; + } + } + + pthread_mutex_unlock(&vdpa_list_lock); + + if (found) + return node; + + return NULL; +} + static struct nfp_vdpa_dev_node * nfp_vdpa_find_node_by_pdev(struct rte_pci_device *pdev) { @@ -575,7 +598,197 @@ update_datapath(struct nfp_vdpa_dev *device) return ret; } +static int +nfp_vdpa_dev_config(int vid) +{ + int ret; + struct nfp_vdpa_dev *device; + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + device = node->device; + device->vid = vid; + __atomic_store_n(&device->dev_attached, 1, __ATOMIC_RELAXED); + update_datapath(device); + + ret = rte_vhost_host_notifier_ctrl(vid, RTE_VHOST_QUEUE_ALL, true); + if (ret != 0) + DRV_VDPA_LOG(INFO, "vDPA (%s): software relay is used.", + vdev->device->name); + + return 0; +} + +static int +nfp_vdpa_dev_close(int vid) +{ + struct nfp_vdpa_dev *device; + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + device = node->device; + __atomic_store_n(&device->dev_attached, 0, __ATOMIC_RELAXED); + update_datapath(device); + + return 0; +} + +static int +nfp_vdpa_get_vfio_group_fd(int vid) +{ + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + return node->device->vfio_group_fd; +} + +static int +nfp_vdpa_get_vfio_device_fd(int vid) +{ + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + return node->device->vfio_dev_fd; +} + +static int +nfp_vdpa_get_notify_area(int vid, + int qid, + uint64_t *offset, + uint64_t *size) +{ + int ret; + struct nfp_vdpa_dev *device; + struct rte_vdpa_device *vdev; + struct nfp_vdpa_dev_node *node; + struct vfio_region_info region = { + .argsz = sizeof(region) + }; + + vdev = rte_vhost_get_vdpa_device(vid); + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + device = node->device; + region.index = device->hw.notify_region; + + ret = ioctl(device->vfio_dev_fd, VFIO_DEVICE_GET_REGION_INFO, ®ion); + if (ret != 0) { + DRV_VDPA_LOG(ERR, "Get not get device region info."); + return -EIO; + } + + *offset = nfp_vdpa_get_queue_notify_offset(&device->hw, qid) + region.offset; + *size = NFP_VDPA_NOTIFY_ADDR_INTERVAL; + + return 0; +} + +static int +nfp_vdpa_get_queue_num(struct rte_vdpa_device *vdev, + uint32_t *queue_num) +{ + struct nfp_vdpa_dev_node *node; + + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + *queue_num = node->device->max_queues; + + return 0; +} + +static int +nfp_vdpa_get_vdpa_features(struct rte_vdpa_device *vdev, + uint64_t *features) +{ + struct nfp_vdpa_dev_node *node; + + node = nfp_vdpa_find_node_by_vdev(vdev); + if (node == NULL) { + DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p", vdev); + return -ENODEV; + } + + *features = node->device->hw.features; + + return 0; +} + +static int +nfp_vdpa_get_protocol_features(struct rte_vdpa_device *vdev __rte_unused, + uint64_t *features) +{ + *features = 1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD | + 1ULL << VHOST_USER_PROTOCOL_F_REPLY_ACK | + 1ULL << VHOST_USER_PROTOCOL_F_BACKEND_REQ | + 1ULL << VHOST_USER_PROTOCOL_F_BACKEND_SEND_FD | + 1ULL << VHOST_USER_PROTOCOL_F_HOST_NOTIFIER; + + return 0; +} + +static int +nfp_vdpa_set_features(int32_t vid) +{ + DRV_VDPA_LOG(DEBUG, "Start vid=%d", vid); + return 0; +} + +static int +nfp_vdpa_set_vring_state(int vid, + int vring, + int state) +{ + DRV_VDPA_LOG(DEBUG, "Start vid=%d, vring=%d, state=%d", vid, vring, state); + return 0; +} + struct rte_vdpa_dev_ops nfp_vdpa_ops = { + .get_queue_num = nfp_vdpa_get_queue_num, + .get_features = nfp_vdpa_get_vdpa_features, + .get_protocol_features = nfp_vdpa_get_protocol_features, + .dev_conf = nfp_vdpa_dev_config, + .dev_close = nfp_vdpa_dev_close, + .set_vring_state = nfp_vdpa_set_vring_state, + .set_features = nfp_vdpa_set_features, + .get_vfio_group_fd = nfp_vdpa_get_vfio_group_fd, + .get_vfio_device_fd = nfp_vdpa_get_vfio_device_fd, + .get_notify_area = nfp_vdpa_get_notify_area, }; static int From patchwork Tue Oct 17 05:45:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132715 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 4621643186; Tue, 17 Oct 2023 07:49:19 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8281242D99; Tue, 17 Oct 2023 07:47:32 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2092.outbound.protection.outlook.com [40.107.94.92]) by mails.dpdk.org (Postfix) with ESMTP id 6677C42D99 for ; Tue, 17 Oct 2023 07:47:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oN9PcrmTgiimSgJm3DvsOGNDUxJRN1JXlxlDNX0JrstPuTh0VNPD9Ag2PfXMekKAT5CGMmbuAe3+RPn618L4cS7RQ0NRDXNHQ6WbWGHrHzi1uppm9ZChl4f8qhcRjFWc7/CxXg6jwzC5GJHQpShu6wwAUdNb7Cx9QofZAGl2sLRZsEDeySeKgtNzzdKIQIcpCT5jVV+FwgSAdOXt6CIbC+8AHbHT7Z13k6MM62T1FPMcDBB7gykE7AT8CvcoXhF6ZsJR1NolfB71KqV5mr1H/KzykcmI8UCJLg0aZ6dsKIePrmJoMk8RaxiML9bTh0pQHPQ0BQIYwNQC8FqmVByi+A== 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=2RR/IqsBOP9bQS1WS0plQi53c9S0eDytPV+wezJvEN0=; b=Qa8HgI85F3/zhrpQPa+Lss3Gzc0zJa5r9PfSdgHITSlDeIPdTtT7fwKXkUSo0NbOk2wtj8nmWF3DwUQKIlSNiEGjJXphyY57TEYEQXhBWhOhHyG+8RYFoMT/9ZZ5t3mHA3wbSbTe89cqPa/djHSn0hSXOEmthpz4ZE3E7QIWS7SFosko4NBt3VxC1Wt9o1P8Yp18MTdbUJGeUVigsquhxmbBYtHxlFmjZTArN1MwMIjzm8dZhCkNEQYKpSRCaHTWgtSDapDF1wAr9kjrqOX8bK2HLZknHNZiOEUv44CcOEd7MJ0FGnuPZU1L7hPYaZacphcIYDSjNXK41LzWjMB6eQ== 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=2RR/IqsBOP9bQS1WS0plQi53c9S0eDytPV+wezJvEN0=; b=RoMfIrLa5gG1RQQDoM/KJxmVG/+itJvyhDAR199CFiLkvMHJzP5AhMt0VN+YuzEdDlP8p90R4RsNdFSUneub3x3cYLjC7C2JWZ0fs0rf/M4Pml+yiVStkTwBNdr0WCL6ZK65IbkEYVikyXOjtZrCbK2aDWKfGyFzM7E770+UqK8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) by SJ0PR13MB5272.namprd13.prod.outlook.com (2603:10b6:a03:3e3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.46; Tue, 17 Oct 2023 05:47:28 +0000 Received: from PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7]) by PH0PR13MB5568.namprd13.prod.outlook.com ([fe80::b070:92e1:931e:fee7%4]) with mapi id 15.20.6863.047; Tue, 17 Oct 2023 05:47:28 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 25/25] doc: add the common and vDPA document Date: Tue, 17 Oct 2023 13:45:45 +0800 Message-Id: <20231017054545.1692509-26-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231017054545.1692509-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH7PR17CA0069.namprd17.prod.outlook.com (2603:10b6:510:325::29) To PH0PR13MB5568.namprd13.prod.outlook.com (2603:10b6:510:12b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB5568:EE_|SJ0PR13MB5272:EE_ X-MS-Office365-Filtering-Correlation-Id: 669ef01d-528b-4b3a-ed4d-08dbced48ba7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nYoVljWxrejmZfBgSzqJRO2jlkP8pnsdBEkln29yDeCSRWq+Ikr2n0sgodKCgNEQcrB5J1GK3KLWDPg+sP4kP7uXn7mKTFrfYEsBM96RI32xly2eW3i6X9Eox7/JNSZaeo5ZTGiVHmlwLLy2ideg8M+fZL6ubFEHBn8NUMahxxRQFnsWVHCPBz2FhNapQZY+is1OFGucTtyNxM9IyecTxy1m2f/nLvnzaTYZrrcUU3MLsYW3IOxt/HwMVdzY4Gk44ey97K2VQVTqtKv+e0CRFXQBce/7QnfYwzv6APKGudHRLizOQqcuSKZgUC0qeXeCtESHfpJMM4w3dDKFgqvZkCKpYShD9V5yBNR9hrCf6urI7+P92GZb4IvfU/WvXyJELsO0D2nZQYbWBbA/dRPppS0GVnXO91+iScqzGTx/wj9FonNAEGLiTYvGF2Twdf///DIIEXP1Plhnu+yhVJZQ9ac6U2vnH4MXZeCMw+yeax4jAfGyiMgeMHEOBJpRQj2Ai6bfexMumnDj7usaXYiYp8tLSMDpUS/hFOs9PBkIyZHUDcdiSx2YQA+OeAKqetSh25WNwgKaw97aCShsBE3pcBuwnppT/EDqC0NpWXC0bFz8Wd9019m1juuVrMy63Lr/ECSg6OEK4im9ONjlWdy8bC+HECvhHM3Dz2TGT4ubtAE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB5568.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(376002)(346002)(396003)(39830400003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(38350700005)(6916009)(66476007)(6666004)(66556008)(66946007)(6486002)(86362001)(54906003)(2616005)(83380400001)(478600001)(6512007)(38100700002)(316002)(1076003)(52116002)(26005)(107886003)(5660300002)(6506007)(2906002)(4326008)(8676002)(36756003)(44832011)(41300700001)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: m2SQB7LyAU6i/T68SZgFakNYsBEhJd3qxt8KNmy5Jc2Xh7WhiCzTiNyvdzOx+JpDvD5jh5XeZmg/2SX80qxkBtMN60gvI8gvjCtscarvtLaW+d5+93pP6wuNlaUW0IOJzzBHJJD61QeITOhjh7lSacfcQsozO6ZXHSLdvCH4UDwX8NEql/ctXWwO+Jd6N5eozcm8LhsusoVHd4QqVqHLFY2Lo0wd2A2nEJzyOOl5pQFQOprJ4uft8UdK5ccPtGMZS36VpH7ItvDrsFqPKwLdTBicRoBXDrdJVukRNihLirzX2xhQG2W5sN6XKATP4UIsv5erQGBFS9NMD2UPvvtNEalhbC3wD1k1QJGQF3e6yHWnuZ29vC4mn8kSzKvaeSV1qety10p2kxXiMfcC7dBhqPsFU6cUMckhxRgryEGAodxqy88uPa6vcC24PjDIwDHyEFYF1Kwac8Gwz79bBbKxvPOEpdftC5sZcxuVZ2yPoA8JcXszzTbDu+UXfIE5/U7bCMr3/2s79rMpLRAPJfgSzi7ZaDwIF6K+LHIBaNFhNDdQK29E/ZWtnYEXv4Jq7cxMCsyUBLEnF09efO/8VMtfbwiW8ZUpX/UqPMmN58I0p+nEgc3m2kgGhFO5rr+3OHg6rGbTw7gM0lrc7PNJzF1NOpx3crP2167rY8jMsiDuijf+CLjYO6luefpF7Ns/KCODl4Lp2omXUoUTVxA5XUvSiu/8MDXm2jRVO02d0ANjCdow2eCN/YTqeAjMOhPgwJVJJutL4mKXEUC38iURscE6WMrf5RJc9cYk1/rp+DwGoAwVU4maEeeShRIov/4juWo1nQzqFiUWA45a0j/dvyrBWbq97pi1uKBcTUsHZNJ+W9LceQwL1BCSJs4hMOf+5ujtQLAnH50Q1nw2Rx4YngALYyRqwaAJxebWWRqLlMfFSzEPvcqq1HrHoX4Wsz6L8+GWsxK54EL6vMRzpJvpd6dQCWVc3W0e+zx/JH/EW3o+NY5Y9rI+2n1uLW2WNhXEU2DHzpLZy76ndxirtQHe7MbkQCkfHdH0Rzsn/fTuf+GPmP2X8M7UfZBY7K52XumYCYGIxatddal4QtQaC3LutBN5R1q3LsjPlN8hQuDwLmC2WeVy/8o7jAJDt4fYHtlac7cs216X7aiTYTXSXO5ASNyZ3tkzi6Gg+HO8dmcf+FJVXXtZG0OJ+rWNRiATmfvR6pXtG3zWzG7yv6GLBiezfZ6NtQsrH/IrpKR2N2EuFTKnd+yohc88F+8Hs9ACJxlo0K30PNUo/0+X7X1AZMlvbnTdPFEcEnsWi4hHx/dO316tMyyZFOmRjHPVoJfwLatcgc/FzcHpKUUTID9QDWWRF0HqF//s4vTMGfP7NL8kkznD3RozGmd7lFcHzaEuTzgNbs782KUh5u99RtblgTfTpi9HUMixcbPblv0InkhmKpg5C4JlAl9II7MqgfWFcu/TMn167R0+nUR+1QLFFUFvImvrhbPrJ1HOyDyKTOQURK8MGkJPYKU+5m0lmnUjl2QTbLHsxyPWVo6uhtiV5H8Uc10GT3qM8fyptcFCTdU8k09q0jH0ZpqCxVxFevGFWgw4dDkBj2dIL9LSBYLjCw5ozNmNnA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 669ef01d-528b-4b3a-ed4d-08dbced48ba7 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB5568.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 05:47:28.6547 (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: +wrYw7VfAJegKSpi9wJ9WXRWBXA3QTORXAVrBvtA/IIcdNhpD0wXaboFj9Nzn82M81rNENUpbvQ2o5CB9w3ti790uRiG2ACOe0w7YELn+6Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR13MB5272 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add the document for nfp common library and vDPA PMD. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- MAINTAINERS | 8 ++++ doc/guides/platform/index.rst | 1 + doc/guides/platform/nfp.rst | 30 ++++++++++++++ doc/guides/rel_notes/release_23_11.rst | 5 +++ doc/guides/vdpadevs/features/nfp.ini | 8 ++++ doc/guides/vdpadevs/index.rst | 1 + doc/guides/vdpadevs/nfp.rst | 54 ++++++++++++++++++++++++++ 7 files changed, 107 insertions(+) create mode 100644 doc/guides/platform/nfp.rst create mode 100644 doc/guides/vdpadevs/features/nfp.ini create mode 100644 doc/guides/vdpadevs/nfp.rst diff --git a/MAINTAINERS b/MAINTAINERS index 80e071d13e..4891bb6203 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -904,9 +904,11 @@ F: doc/guides/nics/features/nfb.ini Netronome nfp M: Chaoyong He M: Niklas Soderlund +F: drivers/common/nfp/ F: drivers/net/nfp/ F: doc/guides/nics/nfp.rst F: doc/guides/nics/features/nfp*.ini +F: doc/guides/platform/nfp.rst NXP dpaa M: Hemant Agrawal @@ -1310,6 +1312,12 @@ F: drivers/vdpa/ifc/ F: doc/guides/vdpadevs/ifc.rst F: doc/guides/vdpadevs/features/ifcvf.ini +Corigine nfp vDPA +M: Chaoyong He +F: drivers/vdpa/nfp/ +F: doc/guides/vpdadevs/nfp.rst +F: doc/guides/vdpadevs/features/nfp.ini + NVIDIA mlx5 vDPA M: Matan Azrad M: Viacheslav Ovsiienko diff --git a/doc/guides/platform/index.rst b/doc/guides/platform/index.rst index b1ba11df73..07dd273821 100644 --- a/doc/guides/platform/index.rst +++ b/doc/guides/platform/index.rst @@ -15,4 +15,5 @@ The following are platform specific guides and setup information. dpaa dpaa2 mlx5 + nfp octeontx diff --git a/doc/guides/platform/nfp.rst b/doc/guides/platform/nfp.rst new file mode 100644 index 0000000000..f6c7be6fff --- /dev/null +++ b/doc/guides/platform/nfp.rst @@ -0,0 +1,30 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright (c) 2023 Corigine, Inc. + +NFP Common Driver +================= + +The NFP common driver library (**librte_common_nfp**) provides support for +the Netronome and Corigine's NFP-6xxx, NFP-4xxx and NFP-38xx product lines. + +Classes +------- + +One NFP device can be probed by a number of different PMDs. +To select a specific PMD, its name should be specified as a device parameter +(e.g. ``0000:08:00.1,class=eth``). + + +Supported Classes +~~~~~~~~~~~~~~~~~ + +- ``class=eth`` for :doc:`../nics/nfp`. +- ``class=vdpa`` for :doc:`../vdpadevs/nfp`. + +By default, the NFP device will be probed by the ``eth`` PMD. + + +Limitations +~~~~~~~~~~~ + +- ``eth`` and ``vdpa`` PMDs cannot be probed at the same time. diff --git a/doc/guides/rel_notes/release_23_11.rst b/doc/guides/rel_notes/release_23_11.rst index d0c8b8364c..64e1e113a7 100644 --- a/doc/guides/rel_notes/release_23_11.rst +++ b/doc/guides/rel_notes/release_23_11.rst @@ -158,6 +158,11 @@ New Features * Added inline IPsec offload based on the security framework. +* **Add new vDPA PMD based on Corigine NFP devices.** + + Added a new Corigine NFP vDPA (``nfp_vdpa``) PMD. + See the :doc:`../vdpadevs/nfp` guide for more details on this driver. + * **Updated Wangxun ngbe driver.** * Added 100M and auto-neg support in YT PHY fiber mode. diff --git a/doc/guides/vdpadevs/features/nfp.ini b/doc/guides/vdpadevs/features/nfp.ini new file mode 100644 index 0000000000..d830feafe0 --- /dev/null +++ b/doc/guides/vdpadevs/features/nfp.ini @@ -0,0 +1,8 @@ +; +; Supported features of the 'nfp' vDPA driver. +; +; Refer to default.ini for the full list of available driver features. +; +[Features] +Linux = Y +x86-64 = Y diff --git a/doc/guides/vdpadevs/index.rst b/doc/guides/vdpadevs/index.rst index cc2f858042..b0191a3a1d 100644 --- a/doc/guides/vdpadevs/index.rst +++ b/doc/guides/vdpadevs/index.rst @@ -14,4 +14,5 @@ which can be used from an application through vhost API. features_overview ifc mlx5 + nfp sfc diff --git a/doc/guides/vdpadevs/nfp.rst b/doc/guides/vdpadevs/nfp.rst new file mode 100644 index 0000000000..63636b2882 --- /dev/null +++ b/doc/guides/vdpadevs/nfp.rst @@ -0,0 +1,54 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright (c) 2023 Corigine, Inc. + +NFP vDPA driver +=============== + +The NFP vDPA (vhost data path acceleration) driver (**librte_nfp_vdpa**) +provides support for the Netronome and Corigine's NFP-6xxx, NFP-4xxx +and NFP-38xx product lines. + +NFP vDPA implementation +----------------------- + +NFP VF device can be configured in the net device or vDPA mode. +Adding "class=vdpa" parameter helps to specify that this device is to +be used in vDPA mode. If this parameter is not specified, device +will be probed by net/nfp driver and will used as a VF net device. + +This PMD uses (common/nfp) code to access the device firmware. + +Per-Device Parameters +~~~~~~~~~~~~~~~~~~~~~ + +The following per-device parameters can be passed via EAL PCI device +allowlist option like "-a 02:00.0,arg1=value1,...". + +- ``class`` [net|vdpa] (default **net**) + + Choose the mode of operation of nfp device. + **net** device will work as network device and will be probed by net/nfp driver. + **vdpa** device will work as vdpa device and will be probed by vdpa/nfp driver. + If this parameter is not specified then nfp device will operate as network device. + +Dynamic Logging Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +One may leverage EAL option "--log-level" to change default levels +for the log types supported by the driver. The option is used with +an argument typically consisting of two parts separated by a colon. + +Level value is the last part which takes a symbolic name (or integer). +Log type is the former part which may shell match syntax. +Depending on the choice of the expression, the given log level may +be used either for some specific log type or for a subset of types. + +NFP vDPA PMD provides the following log types available for control: + +- ``pmd.vdpa.nfp.vdpa`` (default level is **notice**) + + Affects driver-wide messages unrelated to any particular devices. + +- ``pmd.vdpa.nfp.core`` (default level is **notice**) + + Affects the core logic of this PMD.