get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 134729,
    "url": "http://patches.dpdk.org/api/patches/134729/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231130085238.60290-6-chaoyong.he@corigine.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20231130085238.60290-6-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231130085238.60290-6-chaoyong.he@corigine.com",
    "date": "2023-11-30T08:52:36",
    "name": "[5/7] net/nfp: fix resource leak for exit of CoreNIC firmware",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "42aaf7c5baeb1bd761dce9ca935e97f6d11253db",
    "submitter": {
        "id": 2554,
        "url": "http://patches.dpdk.org/api/people/2554/?format=api",
        "name": "Chaoyong He",
        "email": "chaoyong.he@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231130085238.60290-6-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 30421,
            "url": "http://patches.dpdk.org/api/series/30421/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30421",
            "date": "2023-11-30T08:52:31",
            "name": "fix resource leak problems",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/30421/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/134729/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/134729/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 173454340A;\n\tThu, 30 Nov 2023 09:53:44 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id F1BC942EC9;\n\tThu, 30 Nov 2023 09:53:12 +0100 (CET)",
            "from NAM11-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam11on2099.outbound.protection.outlook.com [40.107.223.99])\n by mails.dpdk.org (Postfix) with ESMTP id 619B742EC9;\n Thu, 30 Nov 2023 09:53:10 +0100 (CET)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by SJ0PR13MB5381.namprd13.prod.outlook.com (2603:10b6:a03:3d2::17)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7025.25; Thu, 30 Nov\n 2023 08:53:08 +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.7046.023; Thu, 30 Nov 2023\n 08:53:08 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=DWJIBo4HshvQbTbAFw8o+c/0YR9RkCIoNCZk4qM3hb5caM9Dt0zDqagb/BLPxMFWX+ki8krlAXBNqWeP5vQKOVW0W0HCckhYp8kbbXbuULgVgsRSak9DGiREd6yyYSXHnSjQoiWoYgwQ7PYQJOQgea/amio78vS1yau8ZOqwdySQUYvS3/TihwBbaWUsMbSDShAvQEMGYuBOaFsK/EfHq1CSRtqhuMAYzLj8EXtjM6w5YoZQoL97FxblywzkEzJiaCTTxpXx0LRmjMouNaQGvdmmkUojtIN9yNNUHas6e3yE788qbMbHCtdlV0c6mWv78cggPxFXrhils52Y6DAH9g==",
        "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=UEYYwTk+z6anJFza+U8Iix1gyJnKBCwM6XjaJzUh5uU=;\n b=iLxKf/T5sH6kQMcsfjT5FICmEQ1g1QE4i3jkXsjkaDH5AGmu1zHM5DkV7iyAyRgyetwsZ7hLlEJpuFODkTwDdBMMi13l83GjLX38dVUawcLznsdoyyPixcgwqleVw0uYfhQ2C4JFcjj/5Tng1raAfS9NBeYV3izICddvoyEC5gQftm0432JD8Of+K1HxzWJDNSseOddjFcHgXMUFIaz/NVCn3Wgw/bg9nRDKU488jWadvU5LU1GgiOPSJ7t0zXpM3qM+ejmOS1TXiM8FNLyEy//EM2/PApJjoHbiptlWx4dqEmQMctei2vbm8dxS6jTSK+KVWfpi+weiXp8QyQTyaQ==",
        "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=UEYYwTk+z6anJFza+U8Iix1gyJnKBCwM6XjaJzUh5uU=;\n b=ElgOJETQATanl2fgJHmuO2J7O0/tMC7EEKEx7EniQd31ukE72UN0lwSx6ZQfx58UIejmYUE4+t7kOd43j/7uGDgpxwBJjS+gLK9rBdO97I1n2aHJgW5XBG+REPTJStove+XQsfM0yUpjXckY81exymoHqIb8j+gFXj25uqGOYwo=",
        "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 stable@dpdk.org, Long Wu <long.wu@corigine.com>,\n Peng Zhang <peng.zhang@corigine.com>",
        "Subject": "[PATCH 5/7] net/nfp: fix resource leak for exit of CoreNIC firmware",
        "Date": "Thu, 30 Nov 2023 16:52:36 +0800",
        "Message-Id": "<20231130085238.60290-6-chaoyong.he@corigine.com>",
        "X-Mailer": "git-send-email 2.39.1",
        "In-Reply-To": "<20231130085238.60290-1-chaoyong.he@corigine.com>",
        "References": "<20231130085238.60290-1-chaoyong.he@corigine.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "BYAPR08CA0056.namprd08.prod.outlook.com\n (2603:10b6:a03:117::33) 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_|SJ0PR13MB5381:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "8ba350eb-ac1f-4a71-0163-08dbf181c63e",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n UtJoo4aSaydbbEcbNGce9Swkhod1E7oym0UFq5K0LiD2P38JLMWBMIJ+3ur0vL6kH/lZR8IgbPwdJbNkQ6lRtg6AdMdXKpwYFtqX/iuzcRj0BW/f1fbNRBGBKiEG1L8rn3kwBEdyAwaExIK5Gr6foOULHYNRSErYrii0mDUwh09EeZgMiQCcv3BwCcEsYjFATywYR5Rv/7NwvotZAXqf9d9/BzutwQUQwTlfIw551piVc8CB26g46c7/ctMn2+d9ovUIKIsydl+9DDTD/Hq7rxw59XyGsyMaCYrWqBswEyU2SIT/T3l/6kO4LGbzmCtPaBFsY9/WvVzFmuGVAta0OWY39ZZknLtwk2FylwEpm/K1Pl3gSSdCg5qBz7ijNem03gmXHxrnwv7KkKVeB4bVfoHIOaBdb1/2eCycLfDzGQ20ddCvhAvgp7USfeeWtg9XZfSzT8DyaO3XaanB4Ty/tYDMFP6XyNHF8PPA3J7jIVlMt/bF9w5rqiF4UW+ya6rtM3QUR/40nm3hRI9q/fACx/zvidS4Ftnoog7ES/JUQDAs8AxAHNeHJVw/X7nzv+5X8+dHm7QLe/ItLJ5QRvahG2PZRGCeeWZKqmYBjFM1vZlR6sxJVbg/OGAsUCvnu4mys5/TJ+sADsWUzs+pH0kBrlKVWNBUttf/XwcvJe83ytMgntzGL3WGkR2ctRGiH28RZ9Tgla+oXV3I/A3/Mlz2uw==",
        "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)(39840400004)(376002)(366004)(136003)(396003)(346002)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(5660300002)(38100700002)(2906002)(36756003)(38350700005)(41300700001)(202311291699003)(86362001)(66476007)(107886003)(316002)(478600001)(54906003)(66556008)(6666004)(83380400001)(6916009)(52116002)(6486002)(6512007)(66946007)(1076003)(26005)(44832011)(2616005)(450100002)(8936002)(8676002)(4326008)(6506007);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n jSlf07DWWg+432L6qbEtPoH+4gcqir1zA9ATWwZHLyg1rS5i+XEKN3ZOqLtVZKHqJbrdHfAdixtB5qRf5MvBcrtos1sylnUb7wyFJJShDCSklN1DPRs2PsatDY6SbCp42N9AlKQNJQjxIdYKKJ7V83KeFzX1R5OnoK20rAChM9Ryj1Ihk2O1ChYAC0x8TauXKDjbPwTcCnoJbKI2CWzv0tPJd+ALvthpmVCaCFTKYtB5MUOJb+rRagO61uoMDVYLlGRn5yJnMRPtbTNIMbCkv5x8haV/ymj6AhNbQ/cAMMWF53MtP78t3TRtVpTx1P7Jastj7NSOjXqyK0fa+2rcoCbyKbKjkx+e44hlSGE7hnEhZoWK7OH0LfyPeqcDzVnIdJdAX4u5ZAULamyzvIA+42IZzk2PhlqmLmoZ8NUPZ0wbFMjqsfvkCbjaRYKhv2aQ1jVGDaOZ11s2ruHXFUm1bom0qpnRueuccTswpkyTMVOINsJYHZ3mJFgGZ74Wp8zGELjeqBbXRwqW2T+Q7WJSJZ2LCfaav+qF1c5JEK/YRovvpPCn2ST+zWmbx4YngGPEhIq8zjfl8quqaXHIJnrqlOFyWU3AtUWR94V0fyGpAkkWCsArKrqH5tH1PUgTY0h+CnaPFsdWR3H/DkCg5kzsVKy90KmRyvYbS1Git36pDFmjwZQ0PGkDPfMuaAIABPiJL/8gWxG6HPj/DjCy+mzcPFy2G5Ge2RupWj1zfsRb1ObQbWQLoARBkU490yttwTHiCCW+bsigiQvl4CYa3+kNONC2RKPIQpYNfa7Ss1f5UmSoyu9Bp8+Gibher2cnWRYXD0A0CzC1u8hV7WMTpk/FYcdv/UJC15p+eo+n4rfGYYH2iMOXaDFb6gs5RIpmAa6aB/s3fLJ+pnj+erwZY9tS840+iIHBS0sWWxleTBZcbe3zwkG3HGsbJsvc0p9RyW5vkBLITO6YAJPE8OZeVbmSSUNGBhUqRHigYgMMAy2bzoMClWHWr2NiyOk4vFcH4xwm8THHQjc5QcA84r+tddrW6HWnU2pCUp6CsVqNXKpfngPILez/5u6ECQaHUo/ZjajTPOI2gqOfbPMFKXoOVvtiy/XyYfBTwo6bKLbSh/HT+1rRLMjaSoCuWP72gCEs4NT4h17+ifEvf2y42rbB9998zG9GLznCeUkVTEAk1uj2RTA6DHbutLnPnFqLyaPgthDNg//2zm9838q1q89zvCYmRT1PdEPl+KpWouKsdB7sUmjThXrqKMWyr+w3PEFptaBKgYeUNoq22ESbKnLeK5M2UXENf72VXDTzHI3fLQoXZ9pQ0yDHxV1h/RSH4WOxlCtp0g+LHA0/ngTn6MmzCciulrioF5mv2EBPkDtVkXJe1BROsyIJCVFhwi5W0fWkjlAFM4KWSqb2OHoGYGFqPmaB3Yirpiw8XOaTmUk/XBiDfwoY3PJr4d/hsJlQz3cwQFPzq99BDbGwtCyM86gdH39mii2jjHIHOri5afhXVSwV0Rp/3htPas7N9W+UflF9a/0V3iU0ZacS+kg2acWwW5xaE7UbcZoXpOVPcZtXDwMCxM7OhLRz1F7+Zzl4nXOUGoPhGl+P5V0GJ0c4nXr0u9cDag==",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 8ba350eb-ac1f-4a71-0163-08dbf181c63e",
        "X-MS-Exchange-CrossTenant-AuthSource": "SJ0PR13MB5545.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "30 Nov 2023 08:53:08.4969 (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 D+eeWRse+hPczDeE5J7XP+WyStdD6vkhQfwnOSeJcwmqMW7I+dSahc/ZXpq1Rm8+8LNynaAYH9lCVYIFKmfbK3jlozcfQwmSCEpRd0m7ouc=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SJ0PR13MB5381",
        "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": "Fix the resource leak problem in the exit logic of CoreNIC firmware.\n\nFixes: 646ea79ce481 (\"net/nfp: move PF functions into its own file\")\nCc: stable@dpdk.org\n\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nReviewed-by: Long Wu <long.wu@corigine.com>\nReviewed-by: Peng Zhang <peng.zhang@corigine.com>\n---\n drivers/net/nfp/nfp_ethdev.c     | 94 ++++++++++++++++++++++++--------\n drivers/net/nfp/nfp_net_common.h |  1 +\n 2 files changed, 73 insertions(+), 22 deletions(-)",
    "diff": "diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c\nindex bb0ddf3d54..5c5e658671 100644\n--- a/drivers/net/nfp/nfp_ethdev.c\n+++ b/drivers/net/nfp/nfp_ethdev.c\n@@ -322,6 +322,54 @@ nfp_net_uninit(struct rte_eth_dev *eth_dev)\n \t\tnfp_cpp_area_release_free(net_hw->mac_stats_area);\n }\n \n+static void\n+nfp_cleanup_port_app_fw_nic(struct nfp_pf_dev *pf_dev,\n+\t\tuint8_t id)\n+{\n+\tstruct rte_eth_dev *eth_dev;\n+\tstruct nfp_app_fw_nic *app_fw_nic;\n+\n+\tapp_fw_nic = pf_dev->app_fw_priv;\n+\tif (app_fw_nic->ports[id] != NULL) {\n+\t\teth_dev = app_fw_nic->ports[id]->eth_dev;\n+\t\tif (eth_dev != NULL)\n+\t\t\tnfp_net_uninit(eth_dev);\n+\n+\t\tapp_fw_nic->ports[id] = NULL;\n+\t}\n+}\n+\n+static void\n+nfp_uninit_app_fw_nic(struct nfp_pf_dev *pf_dev)\n+{\n+\tnfp_cpp_area_release_free(pf_dev->ctrl_area);\n+\trte_free(pf_dev->app_fw_priv);\n+}\n+\n+void\n+nfp_pf_uninit(struct nfp_pf_dev *pf_dev)\n+{\n+\tnfp_cpp_area_release_free(pf_dev->qc_area);\n+\tfree(pf_dev->sym_tbl);\n+\tif (pf_dev->multi_pf.enabled) {\n+\t\tnfp_net_keepalive_stop(&pf_dev->multi_pf);\n+\t\tnfp_net_keepalive_uninit(&pf_dev->multi_pf);\n+\t}\n+\tfree(pf_dev->nfp_eth_table);\n+\tfree(pf_dev->hwinfo);\n+\tnfp_cpp_free(pf_dev->cpp);\n+\trte_free(pf_dev);\n+}\n+\n+static int\n+nfp_pf_secondary_uninit(struct nfp_pf_dev *pf_dev)\n+{\n+\tfree(pf_dev->sym_tbl);\n+\trte_free(pf_dev);\n+\n+\treturn 0;\n+}\n+\n /* Reset and stop device. The device can not be restarted. */\n static int\n nfp_net_close(struct rte_eth_dev *dev)\n@@ -333,14 +381,25 @@ nfp_net_close(struct rte_eth_dev *dev)\n \tstruct rte_pci_device *pci_dev;\n \tstruct nfp_app_fw_nic *app_fw_nic;\n \n-\tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n-\t\treturn 0;\n-\n \thw = dev->data->dev_private;\n \tpf_dev = hw->pf_dev;\n \tpci_dev = RTE_ETH_DEV_TO_PCI(dev);\n \tapp_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);\n \n+\t/*\n+\t * In secondary process, a released eth device can be found by its name\n+\t * in shared memory.\n+\t * If the state of the eth device is RTE_ETH_DEV_UNUSED, it means the\n+\t * eth device has been released.\n+\t */\n+\tif (rte_eal_process_type() == RTE_PROC_SECONDARY) {\n+\t\tif (dev->state == RTE_ETH_DEV_UNUSED)\n+\t\t\treturn 0;\n+\n+\t\tnfp_pf_secondary_uninit(pf_dev);\n+\t\treturn 0;\n+\t}\n+\n \t/*\n \t * We assume that the DPDK application is stopping all the\n \t * threads/queues before calling the device close function.\n@@ -351,16 +410,17 @@ nfp_net_close(struct rte_eth_dev *dev)\n \tnfp_net_close_tx_queue(dev);\n \tnfp_net_close_rx_queue(dev);\n \n-\t/* Clear ipsec */\n-\tnfp_ipsec_uninit(dev);\n-\n \t/* Cancel possible impending LSC work here before releasing the port */\n \trte_eal_alarm_cancel(nfp_net_dev_interrupt_delayed_handler, (void *)dev);\n \n \t/* Only free PF resources after all physical ports have been closed */\n \t/* Mark this port as unused and free device priv resources */\n \tnn_cfg_writeb(&hw->super, NFP_NET_CFG_LSC, 0xff);\n-\tapp_fw_nic->ports[hw->idx] = NULL;\n+\n+\tif (pf_dev->app_fw_id != NFP_APP_FW_CORE_NIC)\n+\t\treturn -EINVAL;\n+\n+\tnfp_cleanup_port_app_fw_nic(pf_dev, hw->idx);\n \n \tfor (i = 0; i < app_fw_nic->total_phyports; i++) {\n \t\tid = nfp_function_id_get(pf_dev, i);\n@@ -370,26 +430,16 @@ nfp_net_close(struct rte_eth_dev *dev)\n \t\t\treturn 0;\n \t}\n \n-\t/* Now it is safe to free all PF resources */\n-\tPMD_INIT_LOG(INFO, \"Freeing PF resources\");\n-\tif (pf_dev->multi_pf.enabled) {\n-\t\tnfp_net_keepalive_stop(&pf_dev->multi_pf);\n-\t\tnfp_net_keepalive_uninit(&pf_dev->multi_pf);\n-\t}\n-\tnfp_cpp_area_free(pf_dev->ctrl_area);\n-\tnfp_cpp_area_free(pf_dev->qc_area);\n-\tfree(pf_dev->hwinfo);\n-\tfree(pf_dev->sym_tbl);\n-\tnfp_cpp_free(pf_dev->cpp);\n-\trte_free(app_fw_nic);\n-\trte_free(pf_dev);\n-\n+\t/* Enable in nfp_net_start() */\n \trte_intr_disable(pci_dev->intr_handle);\n \n-\t/* Unregister callback func from eal lib */\n+\t/* Register in nfp_net_init() */\n \trte_intr_callback_unregister(pci_dev->intr_handle,\n \t\t\tnfp_net_dev_interrupt_handler, (void *)dev);\n \n+\tnfp_uninit_app_fw_nic(pf_dev);\n+\tnfp_pf_uninit(pf_dev);\n+\n \treturn 0;\n }\n \ndiff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h\nindex 30fea7ae02..ded491cbdc 100644\n--- a/drivers/net/nfp/nfp_net_common.h\n+++ b/drivers/net/nfp/nfp_net_common.h\n@@ -272,6 +272,7 @@ int nfp_net_flow_ctrl_get(struct rte_eth_dev *dev,\n \t\tstruct rte_eth_fc_conf *fc_conf);\n int nfp_net_flow_ctrl_set(struct rte_eth_dev *dev,\n \t\tstruct rte_eth_fc_conf *fc_conf);\n+void nfp_pf_uninit(struct nfp_pf_dev *pf_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": [
        "5/7"
    ]
}