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; }