get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/133549/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 133549,
    "url": "https://patches.dpdk.org/api/patches/133549/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20231028061558.1842855-11-chaoyong.he@corigine.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20231028061558.1842855-11-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231028061558.1842855-11-chaoyong.he@corigine.com",
    "date": "2023-10-28T06:15:57",
    "name": "[10/11] net/nfp: extract a helper function",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "85bafbdfd277bd65446c1a0b27799b0ccab8e761",
    "submitter": {
        "id": 2554,
        "url": "https://patches.dpdk.org/api/people/2554/?format=api",
        "name": "Chaoyong He",
        "email": "chaoyong.he@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20231028061558.1842855-11-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 30037,
            "url": "https://patches.dpdk.org/api/series/30037/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=30037",
            "date": "2023-10-28T06:15:47",
            "name": "Clean up NFP PMD",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/30037/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/133549/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/133549/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 49DB843220;\n\tSat, 28 Oct 2023 08:17:48 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 86EAF40E2D;\n\tSat, 28 Oct 2023 08:16:50 +0200 (CEST)",
            "from NAM10-BN7-obe.outbound.protection.outlook.com\n (mail-bn7nam10on2091.outbound.protection.outlook.com [40.107.92.91])\n by mails.dpdk.org (Postfix) with ESMTP id 15BDB40A7A\n for <dev@dpdk.org>; Sat, 28 Oct 2023 08:16:48 +0200 (CEST)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by PH7PR13MB6268.namprd13.prod.outlook.com (2603:10b6:510:24f::16)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.22; Sat, 28 Oct\n 2023 06:16:45 +0000",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.022; Sat, 28 Oct 2023\n 06:16:45 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=D+ecey2jeW71M02C/oYEtZr5Jn+8Kn2Q6iByd0phXipKo/5gdr5mUBxHZ+dvJnO53XiBMsVZ0TGbabjIOevCvRS04se65HGlEL8aoGE9WfVQwNLbS9CeFaC8wk4QMlnAA8IMY/+p3TELxFTFeriT3how6SJhi9YBCnX/LIuuieJaIRpo+HEmRPFOr+T+ngDXIFNaZj9bzhumUqVXVSIj8U4MWPORtZ4bgs+1FEEFR7IjP/P4o8X6iiDULzKfgiSe/yi89whIYMXoC22LlC7W5mPwAoES+femzCSkeJZAAZ/5mXbAXTZX5tjAD0aBCAYhxHELK9YlagMyztZ3AflTPw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n 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;\n bh=PQigPAiWim0+bmcoIU2urP+6uWNTejjBtHXylQfT7Do=;\n b=RSJ8IULWhBhy/nYVtAe0KG2Rk+U3+lW1tES2a6E4uTCWOOdNArziUY2ZjpodB8RDdVQUyTgbmCwckKkRJUsrDLi7/3KMPlDLwPfQAqcXN0Xn6Rnv5RtIvc065jNFjeE0B/DqYp8v0EFwyiCf/ADc+8XXEMGL5oWoTH6EbZm6eECyiHyq0puLNb6xR7LhZKPgaXUnAsCLvP5EFtxyVLMw8sL1k/u3NxkKaJfckEUeswh0nQGva+VB+Uz99AIpUphWEOPdvI6TZVmc1WEw/D0HbKnfyy2xe75er/IXewMbdk4dx6PPMiv0umgAyV+ZK4ea1Jbke/zp0Xmqqi5MjFYKxw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com;\n dkim=pass header.d=corigine.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=PQigPAiWim0+bmcoIU2urP+6uWNTejjBtHXylQfT7Do=;\n b=aGrV/sVivSGD+U5Kg6OOsmWrOYTVekjTxsBhhApncrEDVAlfqqzRM9qGOkjeYhYM1hFpCAlMkV6MbS2mltfSZC/bXzWlvKW5snqQZoJNohh1tz63XOHSAxX0MLSMwV2+GhlEM8oJZACJYhOOxaJgfxNfN3SOUOZbb0hIku3xJEk=",
        "Authentication-Results": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=corigine.com;",
        "From": "Chaoyong He <chaoyong.he@corigine.com>",
        "To": "dev@dpdk.org",
        "Cc": "oss-drivers@corigine.com, Chaoyong He <chaoyong.he@corigine.com>,\n Peng Zhang <peng.zhang@corigine.com>",
        "Subject": "[PATCH 10/11] net/nfp: extract a helper function",
        "Date": "Sat, 28 Oct 2023 14:15:57 +0800",
        "Message-Id": "<20231028061558.1842855-11-chaoyong.he@corigine.com>",
        "X-Mailer": "git-send-email 2.39.1",
        "In-Reply-To": "<20231028061558.1842855-1-chaoyong.he@corigine.com>",
        "References": "<20231028061558.1842855-1-chaoyong.he@corigine.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "SJ0PR03CA0246.namprd03.prod.outlook.com\n (2603:10b6:a03:3a0::11) To SJ0PR13MB5545.namprd13.prod.outlook.com\n (2603:10b6:a03:424::5)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "SJ0PR13MB5545:EE_|PH7PR13MB6268:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "800e64e5-8be9-4a5b-06a2-08dbd77d75a4",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n odswahzc4aqqIPRzgEVRJBmwAyoy1fPVC4zH0YmiTjb1WSKaIwpzpeLor08Jd5HcaT5wW0Mi3RXr2zti7UdRAjpl9+Aranw21PK9qxK3b3SBrdG1YUlA6dS70FvmEu33MLv2XWbzJjxb0+KHmcXe1VS4UAqDQ5WBa0EWB7GK4CAmB9kOdT6x5dKtpdwgrNbKz54Kd4w5qUdsKtdy4IrnDjnl/QbFscEkgtEYXQgOGpSjwe3/t+SHsQGC4VbW6SZvHDrZ8gYSOM8fOrU/VHQmXeZZ6o6MZ4sPyov1HpYNvWFyxFodkH/JUut3LH4p4IxArWbibkVt0N7DsnaDVFi55S+8vCh1GA0alG1kzqxd0VVjg+TSdHVt/rbO9A0zP4HKifb9OLZr7RrJlpV1WeU4Kg7s94yhuTFDfaGV8tWaLlQE5NF6mtzbaId7+/38whAmQ6QOFDvMOt9Y98NWIi9npEP+Tm73H4D9cCP6CuIAl1PIS7MKcLGQ1rrCkp8J5FrHDWPVP5yDRnKiz7o4XEvOpEjLCLZ7Gyy5lpZ88D5R3+d9oBpmHETeutAEzNxmON/qeo4GbKZBO3fly3rSC6DwxAPlDPAP7ZxL3Zptq94o+jYpbUiKmO0GaEoxB1khTA5WY4whX5KjBezqs0lJl2t5XU9ZytSxXmuQ2ZrWxGD2qxA=",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230031)(396003)(39830400003)(366004)(346002)(376002)(136003)(230922051799003)(186009)(1800799009)(451199024)(64100799003)(2906002)(38100700002)(30864003)(83380400001)(1076003)(107886003)(5660300002)(2616005)(86362001)(6512007)(41300700001)(44832011)(36756003)(38350700005)(66476007)(316002)(6916009)(66946007)(54906003)(66556008)(52116002)(6666004)(6506007)(6486002)(8676002)(26005)(478600001)(4326008)(8936002);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n 33MXvIu22r2e4poYokgFl2NKzjBb2kVosO5leTRM2hm9LOLvM0sJjp0v6Gjz3iGXL0BidvBDjiLF1nJVJ9v/i70+qWk3EewV1ikO3f5Mqsdlkmg59v6d24j9y2BVV4506F2GczIyYJUboZhpLdWvHjXox/DLWsinBgY1Rqj/iirOdH/8pHt5sfly+Rpo1Z2f9V5fl4+nI0YQFzEgKrH+JUUFu+UEUQvizCdp9+h+AnakfQt3BOWxItqWOZhrMKPmTu/aXTjrvd+7Vb1zTY6F+V3pRBP+z4vgL8brWIWFJPl0Y0zloQ66kWrIpmVgeF9J+jSkCryTuHdPrHwilk/SmMEQdsHgZRtY77MX1IWylCSKh9uJAjGFDjIMHUD1TCRj+NWxsluHyfFr4KM9eJeDMlE1Iw1OuvNJdOp8uWwxLoi6fCgvHgQCPPvkN0rNUurXRO1y+f6OQ3wx4/ufW5hcH4pHmyKwmZvZyWT4xHCimPGQn2WD2vOokrXMsS9BMBdPYc0QzY2Yc1if7K67sYAXCPrrGZCPIzkCbIZlvVqiwS1zL+1Cl+xUUQ46FoCtWW6Drh29nmv+7FXPDi4YoLVAyKAgMLcb/LJW/Hw4JqsbtjhjPLf+s2wcymXRaEyvfTdnxEU1fqy18fE2ILgyVm4NKTke/BsAMOGkzxg+KPp0gD+bMn4I7UceJBmcBIjE7dgseGUWAQz5NKR4qYJ8fY9ZYpJZct6Scdsw1jEsTr7ALZwnxxLFpXPC7LIYdfqPl8vfVdvgmjgEfhH4hFCR3IGnuXrIDgiP2GbbOolEXdaHCCfZ2FMJ+iLz9M6WW3FPeAGf/Q33jETWCCgiunHHzRLMHX7iC15VckmkfXyKYZ0ON5fL2u9w5mfAnVjKWv32IS7Q9/ujo1Tr2m8XH1X1UR2wYUB7SftB4LLp15m5myhC0xtIy4vMu55hi0w3bjsoDnGeF/UxYZcuBcwNvw6WlF8ICwz5uWe+QJwGvTY0gf4jdHo9oRl0FNZd/ZJndti8zYGoXSWTWZJDiIFiHTEOIdX3jjeVQ/UXD4aJbQ01yDxPFeArOYMzckuIiFU8j0Kz/ZgqoOE7sW8v8gOVQ9aR9cQvMa73vnvKEr3/1c1wCXKYacS8FgEn/yPPEPJQn/27z2MtjDFDR6wf2wvx/DYNrZveNvNmAJHtY5rvfHsQWYjFvPFWFOMk7HD5eo2+OAn9SgFgT7aRHyPOJU/7cC85IgZhKV5Xg01GTWYvNMg1chccWc6b3j4K2jeVRB9/DmXOUgipTXqhVxYnvEnjqDuvKYeq4UGkgBU5wFNZ6YMLRisboGFLI8BYZcJXeJE7cc2/lJSg9IX9cUnhIpHpmTQIuERrjOSbozOXhpkDMAchSdW5VPRU1azUPhRGIlnk9wi/5g2EHIti4Lh4emWnE4yWLXSjPpOzpzU+Kl7p6a+9V0+mSehf/ke8ETKtxVXJWki4OOTDPf4LL4mVCq+A/TbRPoe49iJeTXguOI3yFF1Ni3WUFTahJ0zzG8EfBgqPj7h8VWFB6TOIE+5In3P2Jr/7c+6uynhMfvxDDcJ3xZzbYd46q3CqQPWIc7c8+Rm9pC6g7dT0ObXpbOfoJFeuzeb/ZbnomA==",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 800e64e5-8be9-4a5b-06a2-08dbd77d75a4",
        "X-MS-Exchange-CrossTenant-AuthSource": "SJ0PR13MB5545.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "28 Oct 2023 06:16:45.0627 (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": "\n EVxeWVcy83Vx54zCBrwInXa4LMsc0kZ1/O5zSP8CyIWK/8OXeN9MymnO3k9qeSK9NWK4G9FMtAwmvWq494dgWEd0qDffMSWC9XbpZxF3PN0=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PH7PR13MB6268",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Extract a helper function to get the pointer of 'struct nfp_net_hw' for\nboth normal port and representor pot, this will make the operation\nfunction can be used for both type port.\n\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nReviewed-by: Peng Zhang <peng.zhang@corigine.com>\n---\n drivers/net/nfp/flower/nfp_flower.c | 64 ++-----------------------\n drivers/net/nfp/nfp_net_common.c    | 74 ++++++++++++++++-------------\n drivers/net/nfp/nfp_net_common.h    |  1 +\n 3 files changed, 47 insertions(+), 92 deletions(-)",
    "diff": "diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c\nindex 246dd2d454..0727e7fd9f 100644\n--- a/drivers/net/nfp/flower/nfp_flower.c\n+++ b/drivers/net/nfp/flower/nfp_flower.c\n@@ -21,62 +21,6 @@\n \n #define CTRL_VNIC_NB_DESC 512\n \n-static void\n-nfp_pf_repr_enable_queues(struct rte_eth_dev *dev)\n-{\n-\tuint16_t i;\n-\tstruct nfp_hw *hw;\n-\tuint64_t enabled_queues = 0;\n-\tstruct nfp_flower_representor *repr;\n-\n-\trepr = dev->data->dev_private;\n-\thw = &repr->app_fw_flower->pf_hw->super;\n-\n-\t/* Enabling the required TX queues in the device */\n-\tfor (i = 0; i < dev->data->nb_tx_queues; i++)\n-\t\tenabled_queues |= (1 << i);\n-\n-\tnn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues);\n-\n-\tenabled_queues = 0;\n-\n-\t/* Enabling the required RX queues in the device */\n-\tfor (i = 0; i < dev->data->nb_rx_queues; i++)\n-\t\tenabled_queues |= (1 << i);\n-\n-\tnn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues);\n-}\n-\n-static void\n-nfp_pf_repr_disable_queues(struct rte_eth_dev *dev)\n-{\n-\tuint32_t update;\n-\tuint32_t new_ctrl;\n-\tstruct nfp_hw *hw;\n-\tstruct nfp_net_hw *net_hw;\n-\tstruct nfp_flower_representor *repr;\n-\n-\trepr = dev->data->dev_private;\n-\tnet_hw = repr->app_fw_flower->pf_hw;\n-\thw = &net_hw->super;\n-\n-\tnn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0);\n-\tnn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0);\n-\n-\tnew_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE;\n-\tupdate = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING |\n-\t\t\tNFP_NET_CFG_UPDATE_MSIX;\n-\n-\tif (hw->cap & NFP_NET_CFG_CTRL_RINGCFG)\n-\t\tnew_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG;\n-\n-\t/* If an error when reconfig we avoid to change hw state */\n-\tif (nfp_reconfig(hw, new_ctrl, update) < 0)\n-\t\treturn;\n-\n-\thw->ctrl = new_ctrl;\n-}\n-\n int\n nfp_flower_pf_start(struct rte_eth_dev *dev)\n {\n@@ -93,10 +37,10 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)\n \thw = &net_hw->super;\n \n \t/* Disabling queues just in case... */\n-\tnfp_pf_repr_disable_queues(dev);\n+\tnfp_net_disable_queues(dev);\n \n \t/* Enabling the required queues in the device */\n-\tnfp_pf_repr_enable_queues(dev);\n+\tnfp_net_enable_queues(dev);\n \n \tnew_ctrl = nfp_check_offloads(dev);\n \n@@ -157,7 +101,7 @@ nfp_flower_pf_stop(struct rte_eth_dev *dev)\n \trepr = dev->data->dev_private;\n \thw = repr->app_fw_flower->pf_hw;\n \n-\tnfp_pf_repr_disable_queues(dev);\n+\tnfp_net_disable_queues(dev);\n \n \t/* Clear queues */\n \tfor (i = 0; i < dev->data->nb_tx_queues; i++) {\n@@ -207,7 +151,7 @@ nfp_flower_pf_close(struct rte_eth_dev *dev)\n \t * We assume that the DPDK application is stopping all the\n \t * threads/queues before calling the device close function.\n \t */\n-\tnfp_pf_repr_disable_queues(dev);\n+\tnfp_net_disable_queues(dev);\n \n \t/* Clear queues */\n \tfor (i = 0; i < dev->data->nb_tx_queues; i++) {\ndiff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c\nindex e3c3fa9985..6abd91965c 100644\n--- a/drivers/net/nfp/nfp_net_common.c\n+++ b/drivers/net/nfp/nfp_net_common.c\n@@ -233,6 +233,22 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *net_hw,\n \treturn nn_cfg_readl(&net_hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET);\n }\n \n+struct nfp_net_hw *\n+nfp_net_get_hw(const struct rte_eth_dev *dev)\n+{\n+\tstruct nfp_net_hw *hw;\n+\n+\tif ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {\n+\t\tstruct nfp_flower_representor *repr;\n+\t\trepr = dev->data->dev_private;\n+\t\thw = repr->app_fw_flower->pf_hw;\n+\t} else {\n+\t\thw = dev->data->dev_private;\n+\t}\n+\n+\treturn hw;\n+}\n+\n /*\n  * Configure an Ethernet device.\n  *\n@@ -252,7 +268,7 @@ nfp_net_configure(struct rte_eth_dev *dev)\n \tstruct rte_eth_rxmode *rxmode;\n \tstruct rte_eth_txmode *txmode;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \tdev_conf = &dev->data->dev_conf;\n \trxmode = &dev_conf->rxmode;\n \ttxmode = &dev_conf->txmode;\n@@ -329,7 +345,7 @@ nfp_net_enable_queues(struct rte_eth_dev *dev)\n {\n \tstruct nfp_net_hw *hw;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \n \tnfp_enable_queues(&hw->super, dev->data->nb_rx_queues,\n \t\t\tdev->data->nb_tx_queues);\n@@ -340,7 +356,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev)\n {\n \tstruct nfp_net_hw *net_hw;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \n \tnfp_disable_queues(&net_hw->super);\n }\n@@ -367,7 +383,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev,\n \tstruct nfp_hw *hw;\n \tstruct nfp_net_hw *net_hw;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \tif ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 &&\n \t\t\t(hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) {\n@@ -407,7 +423,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \n \tif (rte_intr_type_get(intr_handle) == RTE_INTR_HANDLE_UIO) {\n \t\tPMD_DRV_LOG(INFO, \"VF: enabling RX interrupt with UIO\");\n@@ -443,7 +459,7 @@ nfp_check_offloads(struct rte_eth_dev *dev)\n \tstruct nfp_net_hw *hw;\n \tstruct rte_eth_conf *dev_conf;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \tcap = hw->super.cap;\n \n \tdev_conf = &dev->data->dev_conf;\n@@ -510,14 +526,8 @@ nfp_net_promisc_enable(struct rte_eth_dev *dev)\n \tuint32_t new_ctrl;\n \tstruct nfp_hw *hw;\n \tstruct nfp_net_hw *net_hw;\n-\tstruct nfp_flower_representor *repr;\n \n-\tif ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {\n-\t\trepr = dev->data->dev_private;\n-\t\tnet_hw = repr->app_fw_flower->pf_hw;\n-\t} else {\n-\t\tnet_hw = dev->data->dev_private;\n-\t}\n+\tnet_hw = nfp_net_get_hw(dev);\n \n \thw = &net_hw->super;\n \tif ((hw->cap & NFP_NET_CFG_CTRL_PROMISC) == 0) {\n@@ -551,7 +561,7 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev)\n \tstruct nfp_hw *hw;\n \tstruct nfp_net_hw *net_hw;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \n \tif ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) {\n@@ -588,7 +598,7 @@ nfp_net_link_update(struct rte_eth_dev *dev,\n \tstruct rte_eth_link link;\n \tstruct nfp_eth_table *nfp_eth_table;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \n \tmemset(&link, 0, sizeof(struct rte_eth_link));\n \n@@ -654,7 +664,7 @@ nfp_net_stats_get(struct rte_eth_dev *dev,\n \tif (stats == NULL)\n \t\treturn -EINVAL;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \n \tmemset(&nfp_dev_stats, 0, sizeof(nfp_dev_stats));\n \n@@ -732,7 +742,7 @@ nfp_net_stats_reset(struct rte_eth_dev *dev)\n \tuint16_t i;\n \tstruct nfp_net_hw *hw;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \n \t/* Reading per RX ring stats */\n \tfor (i = 0; i < dev->data->nb_rx_queues; i++) {\n@@ -794,7 +804,7 @@ nfp_net_xstats_size(const struct rte_eth_dev *dev)\n \tconst uint32_t size = RTE_DIM(nfp_net_xstats);\n \n \t/* If the device is a VF, then there will be no MAC stats */\n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \tif (hw->mac_stats == NULL) {\n \t\tfor (count = 0; count < size; count++) {\n \t\t\tif (nfp_net_xstats[count].group == NFP_XSTAT_GROUP_MAC)\n@@ -828,7 +838,7 @@ nfp_net_xstats_value(const struct rte_eth_dev *dev,\n \tstruct nfp_net_hw *hw;\n \tstruct nfp_xstat xstat;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \txstat = nfp_net_xstats[index];\n \n \tif (xstat.group == NFP_XSTAT_GROUP_MAC)\n@@ -967,7 +977,7 @@ nfp_net_xstats_reset(struct rte_eth_dev *dev)\n \tuint32_t read_size;\n \tstruct nfp_net_hw *hw;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \tread_size = nfp_net_xstats_size(dev);\n \n \tfor (id = 0; id < read_size; id++) {\n@@ -1015,7 +1025,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \tuint16_t max_tx_desc;\n \tstruct nfp_net_hw *hw;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \n \tnfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);\n \tnfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);\n@@ -1242,7 +1252,7 @@ nfp_rx_queue_intr_enable(struct rte_eth_dev *dev,\n \t/* Make sure all updates are written before un-masking */\n \trte_wmb();\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \tnn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id),\n \t\t\tNFP_NET_CFG_ICR_UNMASKED);\n \treturn 0;\n@@ -1263,7 +1273,7 @@ nfp_rx_queue_intr_disable(struct rte_eth_dev *dev,\n \t/* Make sure all updates are written before un-masking */\n \trte_wmb();\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \tnn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX);\n \n \treturn 0;\n@@ -1301,7 +1311,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev)\n \tstruct nfp_net_hw *hw;\n \tstruct rte_pci_device *pci_dev;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \tpci_dev = RTE_ETH_DEV_TO_PCI(dev);\n \n \t/* Make sure all updates are written before un-masking */\n@@ -1376,7 +1386,7 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev,\n {\n \tstruct nfp_net_hw *hw;\n \n-\thw = dev->data->dev_private;\n+\thw = nfp_net_get_hw(dev);\n \n \t/* MTU setting is forbidden if port is started */\n \tif (dev->data->dev_started) {\n@@ -1412,7 +1422,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev,\n \tstruct nfp_net_hw *net_hw;\n \tuint32_t rxvlan_ctrl = 0;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \trx_offload = dev->data->dev_conf.rxmode.offloads;\n \tnew_ctrl = hw->ctrl;\n@@ -1462,7 +1472,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev,\n \tstruct nfp_hw *hw;\n \tstruct nfp_net_hw *net_hw;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \n \tif (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) {\n@@ -1518,7 +1528,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev,\n \tstruct nfp_hw *hw;\n \tstruct nfp_net_hw *net_hw;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \n \tif ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)\n@@ -1551,7 +1561,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev,\n \tstruct nfp_hw *hw;\n \tstruct nfp_net_hw *net_hw;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \n \tif ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)\n@@ -1601,7 +1611,7 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,\n \tstruct nfp_net_hw *net_hw;\n \tuint32_t cfg_rss_ctrl = 0;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \n \t/* Writing the key byte by byte */\n@@ -1657,7 +1667,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev,\n \tstruct nfp_hw *hw;\n \tstruct nfp_net_hw *net_hw;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \n \trss_hf = rss_conf->rss_hf;\n@@ -1698,7 +1708,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev,\n \tuint32_t cfg_rss_ctrl;\n \tstruct nfp_net_hw *net_hw;\n \n-\tnet_hw = dev->data->dev_private;\n+\tnet_hw = nfp_net_get_hw(dev);\n \thw = &net_hw->super;\n \n \tif ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)\ndiff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h\nindex 829e9c5333..e242251bc2 100644\n--- a/drivers/net/nfp/nfp_net_common.h\n+++ b/drivers/net/nfp/nfp_net_common.h\n@@ -237,6 +237,7 @@ void nfp_net_cfg_read_version(struct nfp_net_hw *hw);\n int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);\n int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);\n bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);\n+struct nfp_net_hw *nfp_net_get_hw(const struct rte_eth_dev *dev);\n \n #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\\\n \t((struct nfp_app_fw_nic *)app_fw_priv)\n",
    "prefixes": [
        "10/11"
    ]
}