get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 75132,
    "url": "http://patchwork.dpdk.org/api/patches/75132/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1596443124-270157-1-git-send-email-matan@mellanox.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": "<1596443124-270157-1-git-send-email-matan@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1596443124-270157-1-git-send-email-matan@mellanox.com",
    "date": "2020-08-03T08:25:24",
    "name": "vdpa/mlx5: fix virtq unset",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "c735c9c93e4fe9b08a97ab0c8d48ca31897e0aab",
    "submitter": {
        "id": 796,
        "url": "http://patchwork.dpdk.org/api/people/796/?format=api",
        "name": "Matan Azrad",
        "email": "matan@mellanox.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patchwork.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1596443124-270157-1-git-send-email-matan@mellanox.com/mbox/",
    "series": [
        {
            "id": 11457,
            "url": "http://patchwork.dpdk.org/api/series/11457/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=11457",
            "date": "2020-08-03T08:25:24",
            "name": "vdpa/mlx5: fix virtq unset",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/11457/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/75132/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/75132/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id E2624A0521;\n\tMon,  3 Aug 2020 10:25:49 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id CC1691C029;\n\tMon,  3 Aug 2020 10:25:49 +0200 (CEST)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n by dpdk.org (Postfix) with ESMTP id 51CBE1C025\n for <dev@dpdk.org>; Mon,  3 Aug 2020 10:25:48 +0200 (CEST)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n matan@mellanox.com) with SMTP; 3 Aug 2020 11:25:42 +0300",
            "from pegasus25.mtr.labs.mlnx. (pegasus25.mtr.labs.mlnx\n [10.210.16.10])\n by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 0738PgFN024508;\n Mon, 3 Aug 2020 11:25:42 +0300"
        ],
        "From": "Matan Azrad <matan@mellanox.com>",
        "To": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "Cc": "dev@dpdk.org, stable@dpdk.org",
        "Date": "Mon,  3 Aug 2020 08:25:24 +0000",
        "Message-Id": "<1596443124-270157-1-git-send-email-matan@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "Subject": "[dpdk-dev] [PATCH] vdpa/mlx5: fix virtq unset",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "When a virtq is destroyed, the SW should be able to continue the virtq\nprocessing from where the HW stopped.\n\nThe current destroy behavior in the driver saves the virtq state (used\nand available indexes) only when LM is requested.\nSo, when LM is not requested the queue state is not saved and the SW\nindexes stay invalid.\n\nSave the virtq state in the virtq destroy process.\n\nFixes: bff735011078 (\"vdpa/mlx5: prepare virtio queues\")\nCc: stable@dpdk.org\n\nSigned-off-by: Matan Azrad <matan@mellanox.com>\nAcked-by: Xueming Li <xuemingl@mellanox.com>\n---\n drivers/vdpa/mlx5/mlx5_vdpa.h       |  1 +\n drivers/vdpa/mlx5/mlx5_vdpa_virtq.c | 17 ++++++++++++-----\n 2 files changed, 13 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.h b/drivers/vdpa/mlx5/mlx5_vdpa.h\nindex 57044d9..5963e35 100644\n--- a/drivers/vdpa/mlx5/mlx5_vdpa.h\n+++ b/drivers/vdpa/mlx5/mlx5_vdpa.h\n@@ -86,6 +86,7 @@ struct mlx5_vdpa_virtq {\n \tuint16_t index;\n \tuint16_t vq_size;\n \tuint8_t notifier_state;\n+\tbool stopped;\n \tstruct mlx5_vdpa_priv *priv;\n \tstruct mlx5_devx_obj *virtq;\n \tstruct mlx5_devx_obj *counters;\ndiff --git a/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c b/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c\nindex 19554f6..17e71cf 100644\n--- a/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c\n+++ b/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c\n@@ -72,8 +72,13 @@\n \t\t}\n \t\tvirtq->intr_handle.fd = -1;\n \t}\n-\tif (virtq->virtq)\n+\tif (virtq->virtq) {\n+\t\tret = mlx5_vdpa_virtq_stop(virtq->priv, virtq->index);\n+\t\tif (ret)\n+\t\t\tDRV_LOG(WARNING, \"Failed to stop virtq %d.\",\n+\t\t\t\tvirtq->index);\n \t\tclaim_zero(mlx5_devx_cmd_destroy(virtq->virtq));\n+\t}\n \tvirtq->virtq = NULL;\n \tfor (i = 0; i < RTE_DIM(virtq->umems); ++i) {\n \t\tif (virtq->umems[i].obj)\n@@ -135,10 +140,14 @@\n {\n \tstruct mlx5_devx_virtq_attr attr = {0};\n \tstruct mlx5_vdpa_virtq *virtq = &priv->virtqs[index];\n-\tint ret = mlx5_vdpa_virtq_modify(virtq, 0);\n+\tint ret;\n \n+\tif (virtq->stopped)\n+\t\treturn 0;\n+\tret = mlx5_vdpa_virtq_modify(virtq, 0);\n \tif (ret)\n \t\treturn -1;\n+\tvirtq->stopped = true;\n \tif (mlx5_devx_cmd_query_virtq(virtq->virtq, &attr)) {\n \t\tDRV_LOG(ERR, \"Failed to query virtq %d.\", index);\n \t\treturn -1;\n@@ -323,6 +332,7 @@\n \t\t\t\tvirtq->intr_handle.fd, index);\n \t\t}\n \t}\n+\tvirtq->stopped = false;\n \tDRV_LOG(DEBUG, \"vid %u virtq %u was created successfully.\", priv->vid,\n \t\tindex);\n \treturn 0;\n@@ -489,9 +499,6 @@\n \t\t\t\tDRV_LOG(WARNING, \"Failed to disable steering \"\n \t\t\t\t\t\"for virtq %d.\", index);\n \t\t}\n-\t\tret = mlx5_vdpa_virtq_stop(priv, index);\n-\t\tif (ret)\n-\t\t\tDRV_LOG(WARNING, \"Failed to stop virtq %d.\", index);\n \t\tmlx5_vdpa_virtq_unset(virtq);\n \t}\n \tif (enable) {\n",
    "prefixes": []
}