get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 91396,
    "url": "https://patches.dpdk.org/api/patches/91396/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20210414042631.7041-1-xuemingl@nvidia.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": "<20210414042631.7041-1-xuemingl@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210414042631.7041-1-xuemingl@nvidia.com",
    "date": "2021-04-14T04:26:31",
    "name": "net/virtio: fix vectorized Rx queue stuck",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "09a29bffecdda82a029f22eeb0b2907a05305fae",
    "submitter": {
        "id": 1904,
        "url": "https://patches.dpdk.org/api/people/1904/?format=api",
        "name": "Xueming Li",
        "email": "xuemingl@nvidia.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20210414042631.7041-1-xuemingl@nvidia.com/mbox/",
    "series": [
        {
            "id": 16354,
            "url": "https://patches.dpdk.org/api/series/16354/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=16354",
            "date": "2021-04-14T04:26:31",
            "name": "net/virtio: fix vectorized Rx queue stuck",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/16354/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/91396/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/91396/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 DDC62A0524;\n\tWed, 14 Apr 2021 06:27:19 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 1CD99161669;\n\tWed, 14 Apr 2021 06:27:19 +0200 (CEST)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n by mails.dpdk.org (Postfix) with ESMTP id 34DD7161666\n for <dev@dpdk.org>; Wed, 14 Apr 2021 06:27:17 +0200 (CEST)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n xuemingl@nvidia.com) with SMTP; 14 Apr 2021 07:27:16 +0300",
            "from nvidia.com ([172.27.8.56])\n by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 13E4RBFO003097;\n Wed, 14 Apr 2021 07:27:12 +0300"
        ],
        "From": "Xueming Li <xuemingl@nvidia.com>",
        "To": "",
        "Cc": "dev@dpdk.org, xuemingl@nvidia.com, huawei.xie@intel.com,\n jerin.jacob@caviumnetworks.com, drc@linux.vnet.ibm.com,\n stable@dpdk.org, Maxime Coquelin <maxime.coquelin@redhat.com>,\n Chenbo Xia <chenbo.xia@intel.com>, Jerin Jacob <jerinj@marvell.com>,\n Ruifeng Wang <ruifeng.wang@arm.com>,\n Bruce Richardson <bruce.richardson@intel.com>,\n Konstantin Ananyev <konstantin.ananyev@intel.com>,\n Jianfeng Tan <jianfeng.tan@intel.com>, Jianbo Liu <jianbo.liu@linaro.org>,\n Yuanhan Liu <yuanhan.liu@linux.intel.com>",
        "Date": "Wed, 14 Apr 2021 12:26:31 +0800",
        "Message-Id": "<20210414042631.7041-1-xuemingl@nvidia.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH] net/virtio: fix vectorized Rx queue stuck",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "When Rx burst size >= Rx queue size, all descriptors in used queue\nconsumed without rearm, the next Rx burst found no new packets and\nreturned directly without rearm as well.\n\nThis patch rearms available queue at once after rx_burst to avoid vq\nhungry.\n\nFixes: fc3d66212fed (\"virtio: add vector Rx\")\nCc: huawei.xie@intel.com\nFixes: 2d7c37194ee4 (\"net/virtio: add NEON based Rx handler\")\nCc: jerin.jacob@caviumnetworks.com\nFixes: 52b5a707e6ca (\"net/virtio: add Altivec Rx\")\nCc: drc@linux.vnet.ibm.com\nCc: stable@dpdk.org\n\nSigned-off-by: Xueming Li <xuemingl@nvidia.com>\n---\n drivers/net/virtio/virtio_rxtx_simple_altivec.c | 12 ++++++------\n drivers/net/virtio/virtio_rxtx_simple_neon.c    | 12 ++++++------\n drivers/net/virtio/virtio_rxtx_simple_sse.c     | 12 ++++++------\n 3 files changed, 18 insertions(+), 18 deletions(-)",
    "diff": "diff --git a/drivers/net/virtio/virtio_rxtx_simple_altivec.c b/drivers/net/virtio/virtio_rxtx_simple_altivec.c\nindex 62e5100a48..1ffae234da 100644\n--- a/drivers/net/virtio/virtio_rxtx_simple_altivec.c\n+++ b/drivers/net/virtio/virtio_rxtx_simple_altivec.c\n@@ -102,12 +102,6 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,\n \n \trte_prefetch0(rused);\n \n-\tif (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {\n-\t\tvirtio_rxq_rearm_vec(rxvq);\n-\t\tif (unlikely(virtqueue_kick_prepare(vq)))\n-\t\t\tvirtqueue_notify(vq);\n-\t}\n-\n \tnb_total = nb_used;\n \tref_rx_pkts = rx_pkts;\n \tfor (nb_pkts_received = 0;\n@@ -204,5 +198,11 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,\n \tfor (nb_used = 0; nb_used < nb_pkts_received; nb_used++)\n \t\tvirtio_update_packet_stats(&rxvq->stats, ref_rx_pkts[nb_used]);\n \n+\tif (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {\n+\t\tvirtio_rxq_rearm_vec(rxvq);\n+\t\tif (unlikely(virtqueue_kick_prepare(vq)))\n+\t\t\tvirtqueue_notify(vq);\n+\t}\n+\n \treturn nb_pkts_received;\n }\ndiff --git a/drivers/net/virtio/virtio_rxtx_simple_neon.c b/drivers/net/virtio/virtio_rxtx_simple_neon.c\nindex c8e4b13a02..341dedce41 100644\n--- a/drivers/net/virtio/virtio_rxtx_simple_neon.c\n+++ b/drivers/net/virtio/virtio_rxtx_simple_neon.c\n@@ -100,12 +100,6 @@ virtio_recv_pkts_vec(void *rx_queue,\n \n \trte_prefetch_non_temporal(rused);\n \n-\tif (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {\n-\t\tvirtio_rxq_rearm_vec(rxvq);\n-\t\tif (unlikely(virtqueue_kick_prepare(vq)))\n-\t\t\tvirtqueue_notify(vq);\n-\t}\n-\n \tnb_total = nb_used;\n \tref_rx_pkts = rx_pkts;\n \tfor (nb_pkts_received = 0;\n@@ -210,5 +204,11 @@ virtio_recv_pkts_vec(void *rx_queue,\n \tfor (nb_used = 0; nb_used < nb_pkts_received; nb_used++)\n \t\tvirtio_update_packet_stats(&rxvq->stats, ref_rx_pkts[nb_used]);\n \n+\tif (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {\n+\t\tvirtio_rxq_rearm_vec(rxvq);\n+\t\tif (unlikely(virtqueue_kick_prepare(vq)))\n+\t\t\tvirtqueue_notify(vq);\n+\t}\n+\n \treturn nb_pkts_received;\n }\ndiff --git a/drivers/net/virtio/virtio_rxtx_simple_sse.c b/drivers/net/virtio/virtio_rxtx_simple_sse.c\nindex ff4eba33d6..2e17f9d1f2 100644\n--- a/drivers/net/virtio/virtio_rxtx_simple_sse.c\n+++ b/drivers/net/virtio/virtio_rxtx_simple_sse.c\n@@ -100,12 +100,6 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,\n \n \trte_prefetch0(rused);\n \n-\tif (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {\n-\t\tvirtio_rxq_rearm_vec(rxvq);\n-\t\tif (unlikely(virtqueue_kick_prepare(vq)))\n-\t\t\tvirtqueue_notify(vq);\n-\t}\n-\n \tnb_total = nb_used;\n \tref_rx_pkts = rx_pkts;\n \tfor (nb_pkts_received = 0;\n@@ -194,5 +188,11 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,\n \tfor (nb_used = 0; nb_used < nb_pkts_received; nb_used++)\n \t\tvirtio_update_packet_stats(&rxvq->stats, ref_rx_pkts[nb_used]);\n \n+\tif (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {\n+\t\tvirtio_rxq_rearm_vec(rxvq);\n+\t\tif (unlikely(virtqueue_kick_prepare(vq)))\n+\t\t\tvirtqueue_notify(vq);\n+\t}\n+\n \treturn nb_pkts_received;\n }\n",
    "prefixes": []
}