get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 116341,
    "url": "http://patches.dpdk.org/api/patches/116341/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1663238669-12244-7-git-send-email-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": "<1663238669-12244-7-git-send-email-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1663238669-12244-7-git-send-email-chaoyong.he@corigine.com",
    "date": "2022-09-15T10:44:23",
    "name": "[v9,06/12] net/nfp: add flower PF related routines",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "93d9d95a24f8fe7970e54927d22d120e4b0d3f73",
    "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/1663238669-12244-7-git-send-email-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 24678,
            "url": "http://patches.dpdk.org/api/series/24678/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=24678",
            "date": "2022-09-15T10:44:17",
            "name": "preparation for the rte_flow offload of nfp PMD",
            "version": 9,
            "mbox": "http://patches.dpdk.org/series/24678/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/116341/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/116341/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 47A3DA00C5;\n\tThu, 15 Sep 2022 12:45:34 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E1DB842B76;\n\tThu, 15 Sep 2022 12:45:04 +0200 (CEST)",
            "from NAM04-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam04on2094.outbound.protection.outlook.com [40.107.101.94])\n by mails.dpdk.org (Postfix) with ESMTP id D141B42B6E\n for <dev@dpdk.org>; Thu, 15 Sep 2022 12:45:02 +0200 (CEST)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by SA0PR13MB4158.namprd13.prod.outlook.com (2603:10b6:806:9b::9) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.5; Thu, 15 Sep\n 2022 10:45:01 +0000",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::819:38c:6513:bf15]) by SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::819:38c:6513:bf15%4]) with mapi id 15.20.5632.012; Thu, 15 Sep 2022\n 10:45:01 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=JK/PYuoLxYljQVuvNs7+SzleAgiHUydbMbLWhRheZWJchvv0g6H26jfKxKY7+ppeoie+dwdTnxSDf9wv9gUo2wyjAZ4RUzi6ry+rYCyvoG73+2iSc3XVf2oOgyswa9Kj81tbXdr0yho/IJ1KKwVqlAD+JhGpAIYbMaZr55FPQzu2Nvrm3BY7rfICzzTylqTdUIAAMP7DQ3ZuqGZKwsReNnrXtoidnnyfgVwK59VKB6GGQJY5oJsgO4ITm20nfrL+zONCsfWTMGd7KRRT77zp1HDw4z6TIEVQQmT4lizpGbyApAHlT1trXfHpwD7hSsgLAsqJPxPxEFDI3EtnIjuDyQ==",
        "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=sn+xswZXhv6zXIfkykQKYxpQ+1dz0CWx2C3E8cBP2k8=;\n b=Z2H4vtgzPJacS2I/nyeIa3qmLaE1SUZuWukifhttqZSLkQyH2SgBpPA5DI8x+PFnYq2THOdkOqaaxDIAm0k8ZyMsCQMN1BnzPhWTXzQR2mj8WExpKKSbrD/rzQ8tDkhxfZdezOf5JS8DTZmCiUMKN/Fa01CU8JcIO31XwVft80JKh/kLXn7wUK9J7pMyY4AMEzr28HJfl8Va0GdM3QZ2KWwcyavFEE5Gcwt9e17/dJ3cQ4ugET+osmo7KLbbBeoCIfC3w4v0nJyhnCrckQXHhPZM368zvme1tAc7MQ3uVW3LzGQspPL+Q3flwDjgxPtt1fLN+E4gp3+Nx9WJ28odrw==",
        "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=sn+xswZXhv6zXIfkykQKYxpQ+1dz0CWx2C3E8cBP2k8=;\n b=sJvmOQxZJrxHdj8KX7J9Ely/e0H6Q0fen/ofiwzJ9uYdmqXafeo3J14t0CGUrLYYnOOtxpXjlyGA46bpMyFjMA7/yymmhbHE0xNeg6Si3L/bXNm9fPzBck8IgFKqDYASmYY82vyc7wH0szoTjnNHlF7N6RuTy6nBdW/ZNNi1ckg=",
        "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, niklas.soderlund@corigine.com,\n Chaoyong He <chaoyong.he@corigine.com>",
        "Subject": "[PATCH v9 06/12] net/nfp: add flower PF related routines",
        "Date": "Thu, 15 Sep 2022 18:44:23 +0800",
        "Message-Id": "<1663238669-12244-7-git-send-email-chaoyong.he@corigine.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1663238669-12244-1-git-send-email-chaoyong.he@corigine.com>",
        "References": "<1663238669-12244-1-git-send-email-chaoyong.he@corigine.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "BYAPR11CA0071.namprd11.prod.outlook.com\n (2603:10b6:a03:80::48) 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_|SA0PR13MB4158:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "4bbed4b2-73a1-4763-c1be-08da9707571c",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n VKlN6Ygr+ldbpgzJvffYyua9Ptoek68dA8VdPk3XL8oWJTpouhFEGKIcNnJMO335ya/grJwQ+m2L3hydn9DQMAiZVERDgGlszsQrw0AZ8xF0UiwTSDSU7UwSkOJoskE8jryGSfKL9rwivN99uetxmQXY8WrVzlMuvdBlZc6v9az4z7S70xk02A6eZwne11MZZ45lytMwvds1Vda4eQ84ZBkmGHuroIjHMj5kbVy+hSBEzAf/Pwr37R0Mwg9qhxMoBE0WOSK/5ST+/D2S7eYPNgYwN5fGOMOPxCrCAHR+ikMiC7DOddZp/+itibrg8jpjSZOalgx73/9QGlxaZGLX0ERlcTtIS4JccLF/ovsn+2gKa1Q7K9SuiNHykdah6GEkAsQV0W0dhmjvCT93uQDDHIT3OKx9mCMGCCwvzj5jF4mvFZoEZWhiPsf48UxGlnFkRVQ0C/SPI59OApUm35jeL0vBj2o5qRn6/JLq5f7RL9xq7NFypaa5elqFeYjPNh7Hh/mp1qgRu4RyhXTsfzC6cFfnsKODOL0WYTSkGlqw46hRPvvaWJhf1m8kgkEu01j+PwRswymE0qmj4XcX7VjkTsT9V9BUVRuHd7+a5OzR+xgnuFeE0p8MLyn5oyPyzzqnXRoxfwcdBKPxlUyvxvQTFwiyQ5y4UOfpCgE9nbvkqiEZIBkRSwwgd85R+3ohZOre//X0kTgtT3woOppEThMFwJv53I8hoDc/srGI8Bmq+PPWxn/1eoHUdVptLrRfAWWa/eQeMswaGlLMbktcR+9qeA==",
        "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:(13230022)(4636009)(396003)(346002)(366004)(376002)(39840400004)(136003)(451199015)(2616005)(66574015)(38350700002)(38100700002)(186003)(86362001)(83380400001)(107886003)(8676002)(66946007)(66476007)(4326008)(66556008)(44832011)(8936002)(41300700001)(2906002)(5660300002)(6506007)(478600001)(6666004)(316002)(6512007)(26005)(6486002)(52116002)(6916009)(36756003);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?y9vfNrlZlbBdCVxOpU/y76kw1TnK?=\n\t=?utf-8?q?JtTERn8LjDzs8HuC0kPjKh2H6EbeiBbVd2ZXRTOVpIHkfqWa4CcRMOjNNq57rZGsW?=\n\t=?utf-8?q?J3bFP1hFjOv/yaS6ouV0FzGnOKmLmXV4XB/cKDtwFv2EJCE+7FJzIP3YCHM/4rmPp?=\n\t=?utf-8?q?f8xeYvhFUMGfKs8MfGrBQYzyn5XszW+zkym5b6lDQzqqTxE+stCE4cFLpVI6SzqBB?=\n\t=?utf-8?q?XRLt6a340527fG9UZGZYIQPCPmOrGCbpiM1U/v10HFCW9BYF/B48KxxA76L1CQeLp?=\n\t=?utf-8?q?119hnAkzFFDbDjf87zVd0fD29kH5wTcDjc6Y8LeQPj/OcFR0qKzCCH+mMI5grbc27?=\n\t=?utf-8?q?KdTBfOVt0Eb9RRc348hZjMKdOYT43wDmHlTXYa/nGZL/bjf2gsWZ5Wd7vy94nLlmc?=\n\t=?utf-8?q?gbRRr7GmJB5Fo2q9ZC6qdFzx9yVBXWVPVAeeUsc/Pbj2ZVLcoMRJOYAwLBxYMzLXa?=\n\t=?utf-8?q?G1/8rskuusE+0JrDfz7r3+zfPudleZ/6jq/uGgtIOJYBT3ojXtyaWx1/Xd/cKmwky?=\n\t=?utf-8?q?RVLIs9DxDAXQ9qTcJYrDrJMvaJlv5jRa76TleUIvP0OWpBH8wTf0F09Uy5lUwv7n9?=\n\t=?utf-8?q?pAWoC5XqM3s3Jku3nWcC3o+HEBI84PLMDR18zeAwVveqooh//ZZqopf9GsNI5W2ls?=\n\t=?utf-8?q?dfd43d8HDeY0QUVINOFwm9gUQA1m3XpJsFc5XKvSNCDYPYyHo5a45KnKcuo1noQc9?=\n\t=?utf-8?q?cVvFgAX5tcUubCMt+5BPAOybOY3hPf8n5/ixnh0W+GZ/m+RX+DBWxmmcU6K7XAcSk?=\n\t=?utf-8?q?qx4bYJUkLq8luRBfkJlkl1L2DP8UWcP1z6Cc7EY6QUEn9QY7t0IzcmzE6DIzigUIp?=\n\t=?utf-8?q?INXO8zrwmb/PCRnlQ/AT80ACkFvUuXhbwUWG4EMJgZPaWq3bwMRkKWHrfzJqRnmK7?=\n\t=?utf-8?q?Ob1jRyTsDqZ+1P2UwUeEEZHz1K21ZZDdMBMH1niiqG55q6O1FqkXInsuZCXiXTe2D?=\n\t=?utf-8?q?0E+jb5Cj99r2JiHGdDp+yy4bk8lDzBH6H+6MYpanehG+8CWrAMQ6yHpXfLtefm2iS?=\n\t=?utf-8?q?MtgvmAqFlLPbYOCWInihJj4HtUmrJL1NHuvt3HqynWq7DMc1jU6j8fzzk1u/H8ohJ?=\n\t=?utf-8?q?y9UrEpmtbzJnvCIgaU0fCQyTXV0fuYgMAAEpEvQboeRfrv20Hq3NaP548h5T/tgKR?=\n\t=?utf-8?q?dpCDRGpEtn7mV4QYXrdIQapEfIV/0mdmVqx9HM6Z1FNReMulL3GnDC62zdNbbkz0q?=\n\t=?utf-8?q?gg5SYI6lUIKv3YKjr2+2N19mVNeEbpTkGAUrQ1xWRGX0Aqg7q9spX7yX27O9iMW9N?=\n\t=?utf-8?q?xQlIhl0DTy+Xv5zl0wlT2C4nmoZS+BqVxS2xF89aNgcu/Q4Yw/clNIyEs+5/8pqrK?=\n\t=?utf-8?q?MfCN5Zzi9HlPmWDy3loYYCqRrHrsoilBV2c5UjGHT4niGk5C4Fys76D/DACnAF5NT?=\n\t=?utf-8?q?tKTRdqP0HnOCRdboFuNUi1VpEnIO34HxfLd+b2+Fa0aW3NewEPUx4APJztR0Yx+qM?=\n\t=?utf-8?q?hXiyCGOe5JHTmf8xSmScXFTKV8T45EckjSDZdp6YYl62wIxzng63LVFz4icTzTuuI?=\n\t=?utf-8?q?5KT8hdYymCvuyYwVWA0CmYnT/vZX8/s71g=3D=3D?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SA0PR13MB4158",
        "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": "Adds the start/stop/close routine of the flower PF vNIC.\nAnd we reuse the configure/link_update routine.\n\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nReviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>\n---\n drivers/net/nfp/flower/nfp_flower.c | 193 +++++++++++++++++++++++++++++++++++-\n 1 file changed, 192 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c\nindex 34e60f8..24aa288 100644\n--- a/drivers/net/nfp/flower/nfp_flower.c\n+++ b/drivers/net/nfp/flower/nfp_flower.c\n@@ -7,6 +7,7 @@\n #include <ethdev_driver.h>\n #include <rte_service_component.h>\n #include <rte_malloc.h>\n+#include <rte_alarm.h>\n #include <ethdev_pci.h>\n #include <ethdev_driver.h>\n \n@@ -41,8 +42,168 @@\n \t.tx_free_thresh = DEFAULT_TX_FREE_THRESH,\n };\n \n+static int\n+nfp_flower_pf_start(struct rte_eth_dev *dev)\n+{\n+\tint ret;\n+\tuint32_t new_ctrl;\n+\tuint32_t update = 0;\n+\tstruct nfp_net_hw *hw;\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\t/* Disabling queues just in case... */\n+\tnfp_net_disable_queues(dev);\n+\n+\t/* Enabling the required queues in the device */\n+\tnfp_net_enable_queues(dev);\n+\n+\tnew_ctrl = nfp_check_offloads(dev);\n+\n+\t/* Writing configuration parameters in the device */\n+\tnfp_net_params_setup(hw);\n+\n+\tnfp_net_rss_config_default(dev);\n+\tupdate |= NFP_NET_CFG_UPDATE_RSS;\n+\n+\tif (hw->cap & NFP_NET_CFG_CTRL_RSS2)\n+\t\tnew_ctrl |= NFP_NET_CFG_CTRL_RSS2;\n+\telse\n+\t\tnew_ctrl |= NFP_NET_CFG_CTRL_RSS;\n+\n+\t/* Enable device */\n+\tnew_ctrl |= NFP_NET_CFG_CTRL_ENABLE;\n+\n+\tupdate |= NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING;\n+\n+\tif (hw->cap & NFP_NET_CFG_CTRL_RINGCFG)\n+\t\tnew_ctrl |= NFP_NET_CFG_CTRL_RINGCFG;\n+\n+\tnn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl);\n+\n+\t/* If an error when reconfig we avoid to change hw state */\n+\tret = nfp_net_reconfig(hw, new_ctrl, update);\n+\tif (ret != 0) {\n+\t\tPMD_INIT_LOG(ERR, \"Failed to reconfig PF vnic\");\n+\t\treturn -EIO;\n+\t}\n+\n+\thw->ctrl = new_ctrl;\n+\n+\t/* Setup the freelist ring */\n+\tret = nfp_net_rx_freelist_setup(dev);\n+\tif (ret != 0) {\n+\t\tPMD_INIT_LOG(ERR, \"Error with flower PF vNIC freelist setup\");\n+\t\treturn -EIO;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+/* Stop device: disable rx and tx functions to allow for reconfiguring. */\n+static int\n+nfp_flower_pf_stop(struct rte_eth_dev *dev)\n+{\n+\tuint16_t i;\n+\tstruct nfp_net_hw *hw;\n+\tstruct nfp_net_txq *this_tx_q;\n+\tstruct nfp_net_rxq *this_rx_q;\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\tnfp_net_disable_queues(dev);\n+\n+\t/* Clear queues */\n+\tfor (i = 0; i < dev->data->nb_tx_queues; i++) {\n+\t\tthis_tx_q = (struct nfp_net_txq *)dev->data->tx_queues[i];\n+\t\tnfp_net_reset_tx_queue(this_tx_q);\n+\t}\n+\n+\tfor (i = 0; i < dev->data->nb_rx_queues; i++) {\n+\t\tthis_rx_q = (struct nfp_net_rxq *)dev->data->rx_queues[i];\n+\t\tnfp_net_reset_rx_queue(this_rx_q);\n+\t}\n+\n+\tif (rte_eal_process_type() == RTE_PROC_PRIMARY)\n+\t\t/* Configure the physical port down */\n+\t\tnfp_eth_set_configured(hw->cpp, hw->nfp_idx, 0);\n+\telse\n+\t\tnfp_eth_set_configured(dev->process_private, hw->nfp_idx, 0);\n+\n+\treturn 0;\n+}\n+\n+/* Reset and stop device. The device can not be restarted. */\n+static int\n+nfp_flower_pf_close(struct rte_eth_dev *dev)\n+{\n+\tuint16_t i;\n+\tstruct nfp_net_hw *hw;\n+\tstruct nfp_pf_dev *pf_dev;\n+\tstruct nfp_net_txq *this_tx_q;\n+\tstruct nfp_net_rxq *this_rx_q;\n+\tstruct rte_pci_device *pci_dev;\n+\tstruct nfp_app_fw_flower *app_fw_flower;\n+\n+\tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n+\t\treturn 0;\n+\n+\tpf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tpci_dev = RTE_ETH_DEV_TO_PCI(dev);\n+\tapp_fw_flower = NFP_PRIV_TO_APP_FW_FLOWER(pf_dev->app_fw_priv);\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+\t */\n+\tnfp_net_disable_queues(dev);\n+\n+\t/* Clear queues */\n+\tfor (i = 0; i < dev->data->nb_tx_queues; i++) {\n+\t\tthis_tx_q = (struct nfp_net_txq *)dev->data->tx_queues[i];\n+\t\tnfp_net_reset_tx_queue(this_tx_q);\n+\t}\n+\n+\tfor (i = 0; i < dev->data->nb_rx_queues; i++) {\n+\t\tthis_rx_q = (struct nfp_net_rxq *)dev->data->rx_queues[i];\n+\t\tnfp_net_reset_rx_queue(this_rx_q);\n+\t}\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+\tnn_cfg_writeb(hw, NFP_NET_CFG_LSC, 0xff);\n+\n+\trte_eth_dev_release_port(dev);\n+\n+\t/* Now it is safe to free all PF resources */\n+\tPMD_DRV_LOG(INFO, \"Freeing PF resources\");\n+\tnfp_cpp_area_free(pf_dev->ctrl_area);\n+\tnfp_cpp_area_free(pf_dev->hwqueues_area);\n+\tfree(pf_dev->hwinfo);\n+\tfree(pf_dev->sym_tbl);\n+\tnfp_cpp_free(pf_dev->cpp);\n+\trte_free(app_fw_flower);\n+\trte_free(pf_dev);\n+\n+\trte_intr_disable(pci_dev->intr_handle);\n+\n+\t/* unregister callback func from eal lib */\n+\trte_intr_callback_unregister(pci_dev->intr_handle,\n+\t\t\tnfp_net_dev_interrupt_handler, (void *)dev);\n+\n+\treturn 0;\n+}\n+\n static const struct eth_dev_ops nfp_flower_pf_vnic_ops = {\n \t.dev_infos_get          = nfp_net_infos_get,\n+\t.link_update            = nfp_net_link_update,\n+\t.dev_configure          = nfp_net_configure,\n+\n+\t.dev_start              = nfp_flower_pf_start,\n+\t.dev_stop               = nfp_flower_pf_stop,\n+\t.dev_close              = nfp_flower_pf_close,\n };\n \n struct dp_packet {\n@@ -293,7 +454,7 @@ struct dp_packet {\n \treturn ret;\n }\n \n-__rte_unused static void\n+static void\n nfp_flower_cleanup_pf_vnic(struct nfp_net_hw *hw)\n {\n \tuint16_t i;\n@@ -314,6 +475,27 @@ struct dp_packet {\n \trte_eth_dev_release_port(hw->eth_dev);\n }\n \n+static int\n+nfp_flower_start_pf_vnic(struct nfp_net_hw *hw)\n+{\n+\tint ret;\n+\tstruct rte_eth_dev *dev;\n+\n+\tdev = hw->eth_dev;\n+\n+\t/* Start the device */\n+\tret = nfp_flower_pf_start(dev);\n+\tif (ret != 0) {\n+\t\tPMD_INIT_LOG(ERR, \"Could not start pf vnic\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tdev->data->dev_started = 1;\n+\tnfp_net_link_update(dev, 0);\n+\n+\treturn 0;\n+}\n+\n int\n nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev)\n {\n@@ -372,8 +554,17 @@ struct dp_packet {\n \t\tgoto pf_cpp_area_cleanup;\n \t}\n \n+\t/* Start the PF vNIC */\n+\tret = nfp_flower_start_pf_vnic(app_fw_flower->pf_hw);\n+\tif (ret != 0) {\n+\t\tPMD_INIT_LOG(ERR, \"Could not start flower PF vNIC\");\n+\t\tgoto pf_vnic_cleanup;\n+\t}\n+\n \treturn 0;\n \n+pf_vnic_cleanup:\n+\tnfp_flower_cleanup_pf_vnic(app_fw_flower->pf_hw);\n pf_cpp_area_cleanup:\n \tnfp_cpp_area_free(pf_dev->ctrl_area);\n eth_tbl_cleanup:\n",
    "prefixes": [
        "v9",
        "06/12"
    ]
}