From patchwork Tue Oct 24 02:28:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133213 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A079D431EB; Tue, 24 Oct 2023 04:30:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E9ABF41148; Tue, 24 Oct 2023 04:29:56 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2093.outbound.protection.outlook.com [40.107.93.93]) by mails.dpdk.org (Postfix) with ESMTP id 30408410F6 for ; Tue, 24 Oct 2023 04:29:54 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jzm2zNcvJafY2ZX7PV635wSDgTOqBpzJZRurjTZgz1o7nEnpQb5Pio69h82/qwPd9LWw2OTy8FeyV1aguc6mqO4q39lOl8j6is1KhU6O+C8OSi3NXVPktxJg54bUR7rWpaNEeWDC++VUy7i7IaDgiV9uZZWXy890QS1bbS2l80N0fSvoXYEIl88dqFRl31+ksvrbJC8GGcaYUMdUlWJDGwGeDA0fk5LkScB3uX+pSMMr+nYTrmvuxPiTfJkOKos8dtopdSU2xVJ1R0qV3cv5m6J+NFxRaCTpSf3cgV82sEbNYDEDPzIEb3+RrUEMyPqvbUnN/FCZ2Z1NwgIpkD6tYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RRhMHhn0YXvamlaXgWH2i+WpWihtdLcmMZwtXwxDeso=; b=XLNVYdtPYfFC8/OcCfxZUAfRVGk/mX7zIWJrUTE5vW6ut1AlxrrtFaoaYTao+Fiy221eNa5iyaJjHxFu7XT8MAcxDodpRY5C6xiAjt7RDW4bsphrAWdjt5QSQLrV0CMmfOS0jUFmTbkeRBW/Lp16F0R2fgLLx657UJpc7om1zuHep8tPf9jFjnuSAMZ0kVlf6EFw9yvOrhCv2xPn3PsoojfVX0BubmE4hwbmlRrNIQQJWpBhMDFX8PLVpQdHdzDpVlh282CZAcICJb/HBxMcgG7mfwJHmQgbZd/u74pjLpWFWo5MBsoh2Abebn47otP1B6BZMMXlIrUTKxgQM6K2Bg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RRhMHhn0YXvamlaXgWH2i+WpWihtdLcmMZwtXwxDeso=; b=oxI0laULTxQUaOKexymG30GCOPeq9xh2VkQYjit233cEDfWLq9JIwMZI9VD2DwowudfeyqNiO226hjoPSfW2cukT6tjHIr9nLhg83CiHw+9B5PRbcNeP3naVoaEq+aE97bU1xPmYoi1WUPA7YrLrFrRv2S56X0ztlxrKpf+nRfc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by BLAPR13MB4691.namprd13.prod.outlook.com (2603:10b6:208:306::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 02:29:52 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Tue, 24 Oct 2023 02:29:52 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH v2 08/25] net/nfp: extract the ctrl data field Date: Tue, 24 Oct 2023 10:28:32 +0800 Message-Id: <20231024022849.3092506-9-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231024022849.3092506-1-chaoyong.he@corigine.com> References: <20231017054545.1692509-1-chaoyong.he@corigine.com> <20231024022849.3092506-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BYAPR04CA0015.namprd04.prod.outlook.com (2603:10b6:a03:40::28) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BLAPR13MB4691:EE_ X-MS-Office365-Filtering-Correlation-Id: 21501d0b-7095-4d29-4d82-08dbd4391a1c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Cy18ynUggsTfbNE8zYDZs8qQbIJM53n7zJ5989VxoEwxFWrZOhmwWhalND2AP4eXcfW16bSsKfFH9vJ+50xhXrBgGQBkmQDKkyrGAivv154vV8jSI9QHXJNUl1INjDeGy0ZjD2vSvo/3gUvndpTiYZQ61kKW7GdPSl+tn3G0/9K6c/qxGrG6tWgG7QJ9pt+SUCSfIspVfSaf1/L4SX5MW9XEwxnnnOiF4IU8qFVH2paf0cWHlkEzpu6CPIWO8F3cX5hCHuLMfRNeGdU2AuycZEa8/pj08ergJwGXoTw7CIjktwdgv2i3gerJCYkxIaHOTH68XfkbWC2TzRsIY9CPD3zUslWTvKhQnWPJjDdcjnPhEJMWfvndVNvDGk/BPV1z0Aj5IhwZrCsSl2bpMqp44gLCrsFVMlA2hD/Ka77tz7FrcRg0B3tDKo9/GN13bLoJLQtM9s5rb49vjr4/qGTp8EQ8wIT9Mt6LNvS6RbVJomZnETiJLRW92F/UNaLt46S8HhUOHQ4eh2kjkAkK6HevUv9vijqRPkJpAP3s9Ibj3qSAEmkvKtCiQGNAUdSYQviL0kHA0rtAuagZjt2OOQv3GdLDd1VlAepC3dGqdy+hn64evBsfwHL/4wYBTcrb3u2vX29VR11deR6lmPcMc66s9wsJ+fBJBulKOpEnc5kMwqM= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(366004)(376002)(346002)(396003)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(83380400001)(38350700005)(30864003)(2906002)(4326008)(8936002)(36756003)(44832011)(8676002)(26005)(52116002)(107886003)(2616005)(1076003)(38100700002)(6506007)(6666004)(6512007)(316002)(6916009)(478600001)(6486002)(5660300002)(66476007)(86362001)(54906003)(41300700001)(66946007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: u5CrV9R3AVpvuyW9CCvBD00SMVCO7FfNaIQZBAAGK+SQrMbMit0yuKGItgULi19ib2x6n+eycWXAWmO7+q7GFpgM5vf1Bt1U8i+DQ1SGYF+/sHkMKD/nsHenOhaiMG2mw/qFboPWlGDl9/Kh9yyYmSRfSaAilV9LjnPfPEylS9g607dQ5X8ztQaCZuqk144NYJCqcFxXNV/hVB4D1vFNH1DMy01Qf5F6YVVmaz9f5Ks3mfXVOASV3OkwuD7B2vWWISN6Pk+EF2nZq6HNs1SyDCw4BsQ+ruTRwc9K+fEgqOtDFdZPYLdL5L8Q175/oBq9E2IeRRIDIvoWrTjuctxoyzdoF/pRa3cynNfDYW7pxZQn4FtDIwcSGFvbqv/RfHa+FAWFUY8A+6hD6XFz6FiBp5NnUmFaO/3a3JiKzgHNvyCyUxhAxiYKbUMkGf1O0q4TifbtpTugqiotv0X2LnYmiLrV+3YuPOC7jA0nTSf6b2zIqlwB9XmwKt8SH427WkLr+5s1Zg3QHB6PRB5pwNEd0pQJeAmTTjNB71Bp0Tc/Qkxv2h/zLd98iCBvGGELIzJ8uoRteEFPwUXEh56b5XyaCvBeB8kCY7Ju3yw7BrWz8++wFUPmHtUSmW6Ey5EF8P5SksividjoIdBMb+mCjtSk+AK2gSN5xOFFxxKAaX3X/u6dH41goD+wAD51OVd0gb7DZpygRv6t6Xm2mNthmTiH967uH+YNbJFDU+IfVWuYPZKVOhAn2uiLBf3l1WJRk/TIUBk+Ijz0AyOauJSpKi0XeXK9vmvLcwhzfPm03D5Zm8kApXC8KQTuHZA424z/zo1eXIVgDxy0E/bT0krfVZaUwWlLk/8Gc00HrT0Js/Ku8bmTaMuqWhji+H5HzisZunM4eRwgcn2ga5EfReS0UZ34IQ26lbNV3YsNtxGZFxgWo3mDZIts2/ideG/2PA5kD9spNlznsu7o8udXDZEsGmQOw3AFw/Or7yDpZh8/xthbzfaiUPb1fqbSn6pF4YJBdQ+hd9Sa5kWg5APFw5F0E/AlfGDV2SVjJSad0GjT60yuKiHQtxPtvxrgPcksyDSlo4jeNtb1kLs4Ai9PejnhX3CKuc3ns7Lufbgt6qMU5l3TgD8BalmFZCcEMdtyjLXeGLe43V4uuTsRaFSBb6dqlelNN3UZJncU8eMQBIBYVNuUize/dKS8c2wLSFCL7+xvx0IK9IJzfQTrpBjdy4V7JBS3/jpw/fr7M4Yy7HQq/MMWI3T6veMdku5ogr3JSvzPzkvqCNoRj/Y8onbQ2grSZe/eEK0txZu2++Rvw+KDRhMqBadKQjIFSOrZZu+qagU2PDSZ0CH3JHfEtHJSBOhO7EkaR7X7xKuM5cF14okLxDiev+w8RQ4eMKI7Juf8Ec/2fnD9+Oh0/wPIES69NY7q6pZgkLBfBN/r9AY/RIx+dkQC3tgefZ88R10/m4pYxa/m16TB1ULg9x27p+72nHkrL4LMAj13vqk++s42clHG9d9YvFxxim5UjIhulWKNIwvts+WwtbQESysBjGQpnevcUS2pYieqplBi8UCTSuZxAmFCeD4PQ961qg5mJX3mPe4wE6dyETwTcvy+ydl9juvGmiOCuw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 21501d0b-7095-4d29-4d82-08dbd4391a1c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 02:29:52.2192 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6cm22xz9lG5LAcmlYtVUOyFkog7a0dMaxl5f08tRIHybwfkazJLwbihJEF8e3XJC5ui9t0/eo4pnJAj+FCCxmQNmTyziKZ5oPmGCMZjDcFY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR13MB4691 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Extract the 'ctrl' data filed into the super class, prepare for the upcoming common library. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower.c | 8 ++--- drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 2 +- drivers/net/nfp/nfdk/nfp_nfdk_dp.c | 2 +- drivers/net/nfp/nfp_ethdev.c | 4 ++- drivers/net/nfp/nfp_ethdev_vf.c | 2 +- drivers/net/nfp/nfp_net_common.c | 46 ++++++++++++++--------------- drivers/net/nfp/nfp_net_common.h | 5 ++-- drivers/net/nfp/nfp_rxtx.c | 12 ++++---- 8 files changed, 41 insertions(+), 40 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index c8455e0241..8bb5914888 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -61,7 +61,7 @@ nfp_pf_repr_disable_queues(struct rte_eth_dev *dev) nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; + new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | NFP_NET_CFG_UPDATE_MSIX; @@ -72,7 +72,7 @@ nfp_pf_repr_disable_queues(struct rte_eth_dev *dev) if (nfp_net_reconfig(hw, new_ctrl, update) != 0) return; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; } int @@ -123,7 +123,7 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) return -EIO; } - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; /* Setup the freelist ring */ ret = nfp_net_rx_freelist_setup(dev); @@ -721,7 +721,7 @@ nfp_flower_start_ctrl_vnic(struct nfp_net_hw *hw) return -EIO; } - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; /* Setup the freelist ring */ ret = nfp_net_rx_freelist_setup(dev); diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c index bbf4530ae9..3045533857 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c +++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c @@ -154,7 +154,7 @@ nfp_net_nfd3_set_meta_data(struct nfp_net_meta_raw *meta_data, cap_extend = hw->super.cap_ext; if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) != 0 && - (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { + (hw->super.ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { if (meta_data->length == 0) meta_data->length = NFP_NET_META_HEADER_SIZE; meta_data->length += NFP_NET_META_FIELD_SIZE; diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c index 807666686f..63421ba796 100644 --- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c +++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c @@ -187,7 +187,7 @@ nfp_net_nfdk_set_meta_data(struct rte_mbuf *pkt, cap_extend = hw->super.cap_ext; if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) != 0 && - (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { + (hw->super.ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { if (meta_data.length == 0) meta_data.length = NFP_NET_META_HEADER_SIZE; meta_data.length += NFP_NET_META_FIELD_SIZE; diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index b7c60b642f..0f6f97be8e 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -152,6 +152,8 @@ nfp_net_start(struct rte_eth_dev *dev) if (nfp_net_ext_reconfig(hw, ctrl_extend, update) != 0) return -EIO; + hw->super.ctrl_ext = ctrl_extend; + /* * Allocating rte mbufs for configured rx queues. * This requires queues being enabled before. @@ -167,7 +169,7 @@ nfp_net_start(struct rte_eth_dev *dev) else nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 1); - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; for (i = 0; i < dev->data->nb_rx_queues; i++) dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED; diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 641fed6fcf..684968903c 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -110,7 +110,7 @@ nfp_netvf_start(struct rte_eth_dev *dev) goto error; } - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; for (i = 0; i < dev->data->nb_rx_queues; i++) dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED; diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 29f836c31e..058260bda3 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -500,7 +500,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0); nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0); - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE; + new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_ENABLE; update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING | NFP_NET_CFG_UPDATE_MSIX; @@ -512,7 +512,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev) if (nfp_net_reconfig(hw, new_ctrl, update) != 0) return; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; } void @@ -553,7 +553,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, struct nfp_net_hw *hw; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && (hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) { PMD_DRV_LOG(ERR, "MAC address unable to change when port enabled"); return -EBUSY; @@ -563,8 +563,8 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev, nfp_net_write_mac(hw, (uint8_t *)mac_addr); update = NFP_NET_CFG_UPDATE_MACADDR; - ctrl = hw->ctrl; - if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && + ctrl = hw->super.ctrl; + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 && (hw->super.cap & NFP_NET_CFG_CTRL_LIVE_ADDR) != 0) ctrl |= NFP_NET_CFG_CTRL_LIVE_ADDR; @@ -613,7 +613,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev, } /* Avoiding TX interrupts */ - hw->ctrl |= NFP_NET_CFG_CTRL_MSIX_TX_OFF; + hw->super.ctrl |= NFP_NET_CFG_CTRL_MSIX_TX_OFF; return 0; } @@ -705,19 +705,19 @@ nfp_net_promisc_enable(struct rte_eth_dev *dev) return -ENOTSUP; } - if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) != 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_PROMISC) != 0) { PMD_DRV_LOG(INFO, "Promiscuous mode already enabled"); return 0; } - new_ctrl = hw->ctrl | NFP_NET_CFG_CTRL_PROMISC; + new_ctrl = hw->super.ctrl | NFP_NET_CFG_CTRL_PROMISC; update = NFP_NET_CFG_UPDATE_GEN; ret = nfp_net_reconfig(hw, new_ctrl, update); if (ret != 0) return ret; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; return 0; } @@ -732,19 +732,19 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev) hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) { PMD_DRV_LOG(INFO, "Promiscuous mode already disabled"); return 0; } - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_PROMISC; + new_ctrl = hw->super.ctrl & ~NFP_NET_CFG_CTRL_PROMISC; update = NFP_NET_CFG_UPDATE_GEN; ret = nfp_net_reconfig(hw, new_ctrl, update); if (ret != 0) return ret; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; return 0; } @@ -1349,7 +1349,7 @@ nfp_net_common_init(struct rte_pci_device *pci_dev, else hw->rx_offset = nn_cfg_readl(hw, NFP_NET_CFG_RX_OFFSET_ADDR); - hw->ctrl = 0; + hw->super.ctrl = 0; hw->stride_rx = stride; hw->stride_tx = stride; @@ -1453,7 +1453,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev) /* Make sure all updates are written before un-masking */ rte_wmb(); - if ((hw->ctrl & NFP_NET_CFG_CTRL_MSIXAUTO) != 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_MSIXAUTO) != 0) { /* If MSI-X auto-masking is used, clear the entry */ rte_intr_ack(pci_dev->intr_handle); } else { @@ -1559,7 +1559,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); rx_offload = dev->data->dev_conf.rxmode.offloads; - new_ctrl = hw->ctrl; + new_ctrl = hw->super.ctrl; /* VLAN stripping setting */ if ((mask & RTE_ETH_VLAN_STRIP_MASK) != 0) { @@ -1578,7 +1578,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, new_ctrl &= ~NFP_NET_CFG_CTRL_RXQINQ; } - if (new_ctrl == hw->ctrl) + if (new_ctrl == hw->super.ctrl) return 0; update = NFP_NET_CFG_UPDATE_GEN; @@ -1587,7 +1587,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, if (ret != 0) return ret; - hw->ctrl = new_ctrl; + hw->super.ctrl = new_ctrl; return 0; } @@ -1660,7 +1660,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev, struct nfp_net_hw *hw; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; ret = nfp_net_rss_reta_write(dev, reta_conf, reta_size); @@ -1669,7 +1669,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev, update = NFP_NET_CFG_UPDATE_RSS; - if (nfp_net_reconfig(hw, hw->ctrl, update) != 0) + if (nfp_net_reconfig(hw, hw->super.ctrl, update) != 0) return -EIO; return 0; @@ -1690,7 +1690,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev, struct nfp_net_hw *hw; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) { @@ -1795,7 +1795,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev, rss_hf = rss_conf->rss_hf; /* Checking if RSS is enabled */ - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) { if (rss_hf != 0) { PMD_DRV_LOG(ERR, "RSS unsupported"); return -EINVAL; @@ -1813,7 +1813,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev, update = NFP_NET_CFG_UPDATE_RSS; - if (nfp_net_reconfig(hw, hw->ctrl, update) != 0) + if (nfp_net_reconfig(hw, hw->super.ctrl, update) != 0) return -EIO; return 0; @@ -1831,7 +1831,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return -EINVAL; rss_hf = rss_conf->rss_hf; diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index dd62ec6d83..3fb3b34613 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -117,6 +117,8 @@ struct nfp_hw { uint8_t *qcp_cfg; uint32_t cap; uint32_t cap_ext; + uint32_t ctrl; + uint32_t ctrl_ext; }; struct nfp_net_hw { @@ -139,9 +141,6 @@ struct nfp_net_hw { /** NFP ASIC params */ const struct nfp_dev_info *dev_info; - /** Current values for control */ - uint32_t ctrl; - uint8_t *tx_bar; uint8_t *rx_bar; diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index a0c7e0e9b5..a9dd464a6a 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -143,7 +143,7 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXCSUM) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXCSUM) == 0) return; /* If IPv4 and IP checksum error, fail */ @@ -307,7 +307,7 @@ nfp_net_parse_meta_hash(const struct nfp_meta_parsed *meta, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0) return; mbuf->hash.rss = meta->hash; @@ -339,7 +339,7 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, struct nfp_net_hw *hw = rxq->hw; /* Skip if firmware don't support setting vlan. */ - if ((hw->ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) + if ((hw->super.ctrl & (NFP_NET_CFG_CTRL_RXVLAN | NFP_NET_CFG_CTRL_RXVLAN_V2)) == 0) return; /* @@ -347,12 +347,12 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, * 1. Using the metadata when NFP_NET_CFG_CTRL_RXVLAN_V2 is set, * 2. Using the descriptor when NFP_NET_CFG_CTRL_RXVLAN is set. */ - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN_V2) != 0) { if (meta->vlan_layer > 0 && meta->vlan[0].offload != 0) { mb->vlan_tci = rte_cpu_to_le_32(meta->vlan[0].tci); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; } - } else if ((hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { + } else if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { if ((rxd->rxd.flags & PCIE_DESC_RX_VLAN) != 0) { mb->vlan_tci = rte_cpu_to_le_32(rxd->rxd.offload_info); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; @@ -385,7 +385,7 @@ nfp_net_parse_meta_qinq(const struct nfp_meta_parsed *meta, { struct nfp_net_hw *hw = rxq->hw; - if ((hw->ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || + if ((hw->super.ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || (hw->super.cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) return;