get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 133748,
    "url": "http://patchwork.dpdk.org/api/patches/133748/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20231102022321.2254224-2-chaoyong.he@corigine.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20231102022321.2254224-2-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231102022321.2254224-2-chaoyong.he@corigine.com",
    "date": "2023-11-02T02:23:11",
    "name": "[01/11] net/nfp: refactor the probe logic of the secondary process",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "3fa4d148e366619807922494d4d10f3446fd4d46",
    "submitter": {
        "id": 2554,
        "url": "http://patchwork.dpdk.org/api/people/2554/?format=api",
        "name": "Chaoyong He",
        "email": "chaoyong.he@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20231102022321.2254224-2-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 30106,
            "url": "http://patchwork.dpdk.org/api/series/30106/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=30106",
            "date": "2023-11-02T02:23:10",
            "name": "Add the support of multiple PF",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/30106/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/133748/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/133748/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 7301843267;\n\tThu,  2 Nov 2023 03:23:54 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 7A57342E4B;\n\tThu,  2 Nov 2023 03:23:49 +0100 (CET)",
            "from NAM02-SN1-obe.outbound.protection.outlook.com\n (mail-sn1nam02on2105.outbound.protection.outlook.com [40.107.96.105])\n by mails.dpdk.org (Postfix) with ESMTP id 5F0B6402D9\n for <dev@dpdk.org>; Thu,  2 Nov 2023 03:23:46 +0100 (CET)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by BY5PR13MB4455.namprd13.prod.outlook.com (2603:10b6:a03:1d4::17)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19; Thu, 2 Nov\n 2023 02:23:44 +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.027; Thu, 2 Nov 2023\n 02:23:44 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=PT/X4AiRfrg4v0Qd/Mi31o9qmMO5tSXaiZg6Bo0oU4u8yPTO1L7/p01gypitBiNvOb8goeyaPJ99OKruJmRqxKHgszphQ4euFZQqLH88OHgv6NAiyW48lMqNIWhxb7xgXpTabmsz/3Y1+x5taOZxVXJatRl8V1GScb0Nhs4n32AXfwQi0bmNkIe4LKVck7ewCrFdzFHRJJxVyLUU2+hc8WnyIEZOIii60TWMjtEC9RZQxKOH7FCS4TNMdpHn/eleF//LbOFkJ/WznXplp2PBuMzUJ0fEN019zeLvJrOoBInTllod+XenGiUR4yscwyYQIA0H8A3rzXKhiMbZ43QslA==",
        "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=M8IUbLqnMH475+n5W6fhe/87botfZzwbcxd2MJhSF4o=;\n b=Q0YcZ5g7TY/MEMEC6D7h2pe9igQf6fv3HmUj2ddCz/TqjlGXsCvzwx2cIeD505vuc3ajKKbCKLqVyzUjsOP8v7CLvYiJAV5yt/xjTk/TPsIVg3lxwG4lOhcOvEu7GQwiGsju7h4T/hpsy0osWHaqi+nNkBTYet9K3JzMq64YR49kbzROoU9CUSGk+p6Cw8t7ZPRXmvqT5MFzqPks6yPFV3DJSgy3cx+UQbreI/89GCNuyHGqZ/gpwc1Nmj8h9RoLBaH7yaSNsmXUsbxsH6412iFSLNJsKRiRNCM3LG3A9sw5Wk8V4K1bvibmh7nFabgy77Ka/SOAiUZMVdPlI7huqQ==",
        "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=M8IUbLqnMH475+n5W6fhe/87botfZzwbcxd2MJhSF4o=;\n b=BMnu7nJrpKQVGYp5+uYK2eL/xjEF2JrPmSwvYSn8pYpFIDg6J+d4PHyYWGZfHQwv2myLRpELf5cyR0aa86zi0H+gUG0xw8+jRQY7iXUlmgbq8NR9DveF+qzxt4z6ah52DQQRrStfrWtq4fs5iYP+BRVjYVQ/E828Zb8DsM0SJnY=",
        "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>, Long Wu <long.wu@corigine.com>",
        "Subject": "[PATCH 01/11] net/nfp: refactor the probe logic of the secondary\n process",
        "Date": "Thu,  2 Nov 2023 10:23:11 +0800",
        "Message-Id": "<20231102022321.2254224-2-chaoyong.he@corigine.com>",
        "X-Mailer": "git-send-email 2.39.1",
        "In-Reply-To": "<20231102022321.2254224-1-chaoyong.he@corigine.com>",
        "References": "<20231102022321.2254224-1-chaoyong.he@corigine.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "BY5PR20CA0030.namprd20.prod.outlook.com\n (2603:10b6:a03:1f4::43) 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_|BY5PR13MB4455:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "f9b9b9e0-64aa-4f2c-f177-08dbdb4abcb7",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n gx2SWtUp1akS/J4YuQGjFD0xOmXZhB9/7m2U/+M5/29bNB8LuqtemdDl8dyovKKynJTcd6EkoPBMSQ0llCcdh4bnz5tKlsiKG1n6RD85lirUPENsatGYAuIdWBPnooc4G914Cu3Kqbn7r5M4+o8KuAeQV9Z3hylxAs0FfE25Zn31JlZTpOA6opAgBmRacy/X0LBxb5NnlKKcz9xNmYDaM9yQ60Ynk+7ScLiZwQc7RzSO19TkM62AddkRtPzhXfdNLIetDxiYCZ0WpdM6mz+T2ERGTFx0VJSiKqzNoOJjrmpg+gRbTkI/B5WrX/ddrgvWWzHRBJWUat2AIS9LuwSf1OnoVJp8kMYuRHQ5LySukv8A7Se1rFoXeGikcc9RY9cwWxWlX+ODWduQ61FVtKgJZgckivjmgzHTQhz5UM5Ozq7LAU0+DZKbsizBlGuqJOc808MpKdx9Y6VF+FMYJiLKomG3wB2w97mBD7obMCfZkgPaHPKsf3WC0XyAyTCtctAHojZcFbkRqP4GNbdxcw3EjiW8JpQE1cYRuF0eMgZdP9odjIX2ZURtlyLUDVqaDEvoQtefnnfNUuCxh7wurMYJkvhiYd85q7A3jWDl7XEwCS6ZnJOE36I5nS5895M6JDwyaCJYDKMLF/2FemE3igE9/+HzbPnMxQGIHFv3cktT5uc=",
        "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)(346002)(396003)(136003)(39830400003)(376002)(366004)(230922051799003)(451199024)(1800799009)(64100799003)(186009)(2906002)(8936002)(4326008)(8676002)(44832011)(6666004)(41300700001)(6486002)(478600001)(66556008)(316002)(66476007)(6916009)(54906003)(5660300002)(66946007)(6506007)(52116002)(107886003)(1076003)(26005)(2616005)(83380400001)(38350700005)(6512007)(36756003)(86362001)(38100700002);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n xnKTnORJNvdMtjbxgpwGGC6ZptMXZ+CxaE5UBXq0FFgpS5g6YoFz1/29J6lRZ+ddo/knCnld0z81PdrQkgM9zAOtPZwj4hOzSV/AU8juOmr+rbb0PU170h57TTZqJ2iWB8ONiLsPabmBKYLZqgnhvP4kMs9awSrClMbE4ScOQ+42Kc3Nz3esa5n0tiMoZx7oTQlzG2pZ8IBWKo0R0mkdc/kR8EXMHnT3oIgEykUppCby9xp23J+FncmgVc/EFXHmIrI6NsrYE904wmB1j/4VeeqCWlcuanaRhvwAqD3XbQN8skxQmSnW4qT59LDAHtYF8GroaWXBKpJdEvGF2rk5ZNQKj70WjLFRjvflvJDPxyF/jq2ZbIKlVdq5SGhi59SN+iwTQD7iEacLi/GuxTM6lLVYJMvk3GPwj4Bpxi28f0h8FyMZcUrwmemMUyOrXoKAC6eHpEHawcYM9aNzp97Ifk1s0BH2Qu4vZ7F9dKg8fW5hAnNYsy132C7/a4vym3dzyQaKgGkkERW2Nj2kjKnwLEyMNloFQkGLMnYC5GPfaaYUvPhxwYG9JPR6i+8MyjNsIrgUY6ekQPK3iWgUpwGC5jbbh+6vPwsoJElUqYpgJEXWdqx/UUpSheg0DBqA1NC/rH8gk/RFwRFecmSqSsqC2MZcUhbJ8NrM4gSjvdqLZ+jsqY73e3aeSgnVgpAJ7lTFaObbPte83yI9PSXBc3QBRe1+b40u27eVGt7ItadxCsAt7Lb/tOm6FvCmLMfrNMpo9VZwVK22DHNd48knob5/l5pdbqxDpxu8itHkyokTi4L1HDxVhdy2AzKzTuRE+bhDKREgidTX0kwhV572wXlRYfkIqjP5bH4BRKK43cNs7geomgKnsX4UsPffIJW6Ovz3+yRMuVv/DI5TJ5iwgPZKS/xWIB5KMCP6VkuOxIi/raTbzRmMGHzTksLZZilc3NSQx5tUZSD4e1bU3Jy09QyxYwzQjeoU2lhZc73M8wS3ph1g490x/M+5V5jV8AK9WpFDbZ5le7Wg9Ev3YGxLwX2zxuXTDoG7nvorvvtsxdMvtXF64HUfDK5P9HQYgfgcJ+T7yRKq//y9uOvti4vFz6/ZXvz+cmfdhZb/WWL9hIozS73Q2CkTkAhOUHDDq1Ga8WjS8S5vepL5CKf6gG6GgVHb3FsHwDwVPMoLc4xh/ReiGoFCaYY2dKOHuJrvipZSH3oerT+gwO+EeoEeRKzVBniSe3PuWR1W8zZpLoh1k/37zSj++ToJdOSZFPnA2FRzXTQgxXd3hAmRC/JBdM/cead35ujMkBvACqPydM25oBqbR5jypPeb97Vx9tDoqeskz8pZeAXG3kjywrmqwCAvZEMWfPjs4q4CdaOuM+JU4UdkkUlpQPcl3wax+A2d41bbp2JGI0ExtHgfeUxUQKgKi5whZ4ld0aals0INyvil4dKqctTXFeUwztN/7NOvuCcLAiRSPK95NjnzfSN5pdWK2Cj9O0q0H77UBLIWwhe6+H+6X27IUcz0EjuW7LP12vXunN3bmDUVTBmgrkyY4Jx6XBYY+Y48WFx1UMoRPrZzhZlaEoNzxQi8T6kAWohRYowU9Ndfp0d4kKPPZnB9j1sj18PyKg==",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n f9b9b9e0-64aa-4f2c-f177-08dbdb4abcb7",
        "X-MS-Exchange-CrossTenant-AuthSource": "SJ0PR13MB5545.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "02 Nov 2023 02:23:44.6463 (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 W/4vyqkIbwpenX9RaxlSLX4t2iiOvT0xMIAgQ5OqcnTriqxU5Xielu4BTYgl4nmbcvPwe3vNTUIvYcqql9pcsKVngu5Bnyhvp42FTyCiMp0=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BY5PR13MB4455",
        "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": "The probe logic of the secondary process of PF PMD now is not very\nsimilarly with the logic of the primary process, which cause we need two\ndifferent logics when we add new feature in some case.\n\nRefactor the probe logic of the secondary process to solve this problem.\n\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nSigned-off-by: Peng Zhang <peng.zhang@corigine.com>\nReviewed-by: Long Wu <long.wu@corigine.com>\n---\n drivers/net/nfp/flower/nfp_flower.c |  4 +--\n drivers/net/nfp/flower/nfp_flower.h |  2 +-\n drivers/net/nfp/nfp_ethdev.c        | 42 ++++++++++++++++++++++-------\n 3 files changed, 35 insertions(+), 13 deletions(-)",
    "diff": "diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c\nindex f2e6eb6a6f..6b523d98b0 100644\n--- a/drivers/net/nfp/flower/nfp_flower.c\n+++ b/drivers/net/nfp/flower/nfp_flower.c\n@@ -859,7 +859,7 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev,\n }\n \n int\n-nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp)\n+nfp_secondary_init_app_fw_flower(struct nfp_pf_dev *pf_dev)\n {\n \tstruct rte_eth_dev *eth_dev;\n \tconst char *port_name = \"pf_vnic_eth_dev\";\n@@ -872,7 +872,7 @@ nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp)\n \t\treturn -ENODEV;\n \t}\n \n-\teth_dev->process_private = cpp;\n+\teth_dev->process_private = pf_dev->cpp;\n \teth_dev->dev_ops = &nfp_flower_pf_vnic_ops;\n \teth_dev->rx_pkt_burst = nfp_net_recv_pkts;\n \teth_dev->tx_pkt_burst = nfp_flower_pf_xmit_pkts;\ndiff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h\nindex 220b714018..6f27c06acc 100644\n--- a/drivers/net/nfp/flower/nfp_flower.h\n+++ b/drivers/net/nfp/flower/nfp_flower.h\n@@ -106,7 +106,7 @@ nfp_flower_support_decap_v2(const struct nfp_app_fw_flower *app_fw_flower)\n \n int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev,\n \t\tconst struct nfp_dev_info *dev_info);\n-int nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp);\n+int nfp_secondary_init_app_fw_flower(struct nfp_pf_dev *pf_dev);\n bool nfp_flower_pf_dispatch_pkts(struct nfp_net_hw *hw,\n \t\tstruct rte_mbuf *mbuf,\n \t\tuint32_t port_id);\ndiff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c\nindex 4fae2e5540..705465046c 100644\n--- a/drivers/net/nfp/nfp_ethdev.c\n+++ b/drivers/net/nfp/nfp_ethdev.c\n@@ -1006,9 +1006,7 @@ nfp_pf_init(struct rte_pci_device *pci_dev)\n }\n \n static int\n-nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev,\n-\t\tstruct nfp_rtsym_table *sym_tbl,\n-\t\tstruct nfp_cpp *cpp)\n+nfp_secondary_init_app_fw_nic(struct nfp_pf_dev *pf_dev)\n {\n \tuint32_t i;\n \tint err = 0;\n@@ -1017,7 +1015,7 @@ nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev,\n \tstruct nfp_net_hw *hw;\n \n \t/* Read the number of vNIC's created for the PF */\n-\ttotal_vnics = nfp_rtsym_read_le(sym_tbl, \"nfd_cfg_pf0_num_ports\", &err);\n+\ttotal_vnics = nfp_rtsym_read_le(pf_dev->sym_tbl, \"nfd_cfg_pf0_num_ports\", &err);\n \tif (err != 0 || total_vnics == 0 || total_vnics > 8) {\n \t\tPMD_INIT_LOG(ERR, \"nfd_cfg_pf0_num_ports symbol with wrong value\");\n \t\treturn -ENODEV;\n@@ -1027,7 +1025,7 @@ nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev,\n \t\tstruct rte_eth_dev *eth_dev;\n \t\tchar port_name[RTE_ETH_NAME_MAX_LEN];\n \t\tsnprintf(port_name, sizeof(port_name), \"%s_port%u\",\n-\t\t\t\tpci_dev->device.name, i);\n+\t\t\t\tpf_dev->pci_dev->device.name, i);\n \n \t\tPMD_INIT_LOG(DEBUG, \"Secondary attaching to port %s\", port_name);\n \t\teth_dev = rte_eth_dev_attach_secondary(port_name);\n@@ -1037,7 +1035,7 @@ nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev,\n \t\t\tbreak;\n \t\t}\n \n-\t\teth_dev->process_private = cpp;\n+\t\teth_dev->process_private = pf_dev->cpp;\n \t\thw = eth_dev->data->dev_private;\n \t\tnfp_net_ethdev_ops_mount(hw, eth_dev);\n \n@@ -1057,7 +1055,9 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)\n {\n \tint ret = 0;\n \tstruct nfp_cpp *cpp;\n+\tstruct nfp_pf_dev *pf_dev;\n \tenum nfp_app_fw_id app_fw_id;\n+\tchar name[RTE_ETH_NAME_MAX_LEN];\n \tstruct nfp_rtsym_table *sym_tbl;\n \tconst struct nfp_dev_info *dev_info;\n \n@@ -1075,6 +1075,14 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)\n \t\treturn -ENODEV;\n \t}\n \n+\t/* Allocate memory for the PF \"device\" */\n+\tsnprintf(name, sizeof(name), \"nfp_pf%d\", 0);\n+\tpf_dev = rte_zmalloc(name, sizeof(*pf_dev), 0);\n+\tif (pf_dev == NULL) {\n+\t\tPMD_INIT_LOG(ERR, \"Can't allocate memory for the PF device\");\n+\t\treturn -ENOMEM;\n+\t}\n+\n \t/*\n \t * When device bound to UIO, the device could be used, by mistake,\n \t * by two DPDK apps, and the UIO driver does not avoid it. This\n@@ -1089,7 +1097,8 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)\n \n \tif (cpp == NULL) {\n \t\tPMD_INIT_LOG(ERR, \"A CPP handle can not be obtained\");\n-\t\treturn -EIO;\n+\t\tret = -EIO;\n+\t\tgoto pf_cleanup;\n \t}\n \n \t/*\n@@ -1099,20 +1108,29 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)\n \tsym_tbl = nfp_rtsym_table_read(cpp);\n \tif (sym_tbl == NULL) {\n \t\tPMD_INIT_LOG(ERR, \"Something is wrong with the firmware symbol table\");\n-\t\treturn -EIO;\n+\t\tret = -EIO;\n+\t\tgoto pf_cleanup;\n \t}\n \n \t/* Read the app ID of the firmware loaded */\n \tapp_fw_id = nfp_rtsym_read_le(sym_tbl, \"_pf0_net_app_id\", &ret);\n \tif (ret != 0) {\n \t\tPMD_INIT_LOG(ERR, \"Couldn't read app_fw_id from fw\");\n+\t\tret = -EIO;\n \t\tgoto sym_tbl_cleanup;\n \t}\n \n+\t/* Populate the newly created PF device */\n+\tpf_dev->app_fw_id = app_fw_id;\n+\tpf_dev->cpp = cpp;\n+\tpf_dev->sym_tbl = sym_tbl;\n+\tpf_dev->pci_dev = pci_dev;\n+\n+\t/* Call app specific init code now */\n \tswitch (app_fw_id) {\n \tcase NFP_APP_FW_CORE_NIC:\n \t\tPMD_INIT_LOG(INFO, \"Initializing coreNIC\");\n-\t\tret = nfp_secondary_init_app_fw_nic(pci_dev, sym_tbl, cpp);\n+\t\tret = nfp_secondary_init_app_fw_nic(pf_dev);\n \t\tif (ret != 0) {\n \t\t\tPMD_INIT_LOG(ERR, \"Could not initialize coreNIC!\");\n \t\t\tgoto sym_tbl_cleanup;\n@@ -1120,7 +1138,7 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)\n \t\tbreak;\n \tcase NFP_APP_FW_FLOWER_NIC:\n \t\tPMD_INIT_LOG(INFO, \"Initializing Flower\");\n-\t\tret = nfp_secondary_init_app_fw_flower(cpp);\n+\t\tret = nfp_secondary_init_app_fw_flower(pf_dev);\n \t\tif (ret != 0) {\n \t\t\tPMD_INIT_LOG(ERR, \"Could not initialize Flower!\");\n \t\t\tgoto sym_tbl_cleanup;\n@@ -1132,8 +1150,12 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)\n \t\tgoto sym_tbl_cleanup;\n \t}\n \n+\treturn 0;\n+\n sym_tbl_cleanup:\n \tfree(sym_tbl);\n+pf_cleanup:\n+\trte_free(pf_dev);\n \n \treturn ret;\n }\n",
    "prefixes": [
        "01/11"
    ]
}