get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 49003,
    "url": "http://patchwork.dpdk.org/api/patches/49003/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20181217110307.29969-1-mk@semihalf.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": "<20181217110307.29969-1-mk@semihalf.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20181217110307.29969-1-mk@semihalf.com",
    "date": "2018-12-17T11:03:07",
    "name": "[v2,14/20] net/ena: fix cleanup for out of order packets",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "af09a69448d2d30c0b532fbe5c58ec3ca17d0364",
    "submitter": {
        "id": 786,
        "url": "http://patchwork.dpdk.org/api/people/786/?format=api",
        "name": "Michal Krawczyk",
        "email": "mk@semihalf.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/20181217110307.29969-1-mk@semihalf.com/mbox/",
    "series": [
        {
            "id": 2827,
            "url": "http://patchwork.dpdk.org/api/series/2827/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=2827",
            "date": "2018-12-17T11:03:07",
            "name": null,
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/2827/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/49003/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/49003/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 14D4A1B8BB;\n\tMon, 17 Dec 2018 12:03:27 +0100 (CET)",
            "from mail-lj1-f193.google.com (mail-lj1-f193.google.com\n\t[209.85.208.193]) by dpdk.org (Postfix) with ESMTP id 090EA1B889\n\tfor <dev@dpdk.org>; Mon, 17 Dec 2018 12:03:25 +0100 (CET)",
            "by mail-lj1-f193.google.com with SMTP id e5-v6so10567693lja.4\n\tfor <dev@dpdk.org>; Mon, 17 Dec 2018 03:03:24 -0800 (PST)",
            "from mkPC.semihalf.local (31-172-191-173.noc.fibertech.net.pl.\n\t[31.172.191.173]) by smtp.gmail.com with ESMTPSA id\n\tp77-v6sm2942387lja.0.2018.12.17.03.03.22\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tMon, 17 Dec 2018 03:03:23 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=semihalf-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=CWF56fmI3MOFAzWfvexsq3ynPghA8ox5J7I+ketwOA8=;\n\tb=uFQGZZfm0n67ZE7/ktH0RUpvvLFAX3T/pgElwhQCiIe4PwVRLhkelLHS1FhalapNGE\n\tZXXJvHTeyJE9YAyfRhN3f2EUWNdxejGyRBHt6KZp5vm90BozFc0Z6UqbeRkUpqRALZeq\n\tU/s+cuurRwGGOr33SNF31W5J4+TRQmgyrmmwzrWdqWw1YviV7cpFCoPdb+uOJmgqzzs9\n\t78Hp4CJLyt10qWGPFZw1+0Nn8mVnXc8fmgR1xxsPLMdAi9VO2W9EOXyfcunJzNs9DiYM\n\tcUj9Xecw3JiqvjEnGabD/f/895WEJnJEzz3aR/4o6crYHyd8dsUNDK+DZ/eaRtr+WngO\n\tCmFA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=CWF56fmI3MOFAzWfvexsq3ynPghA8ox5J7I+ketwOA8=;\n\tb=lddHrlCBCK+sbkIqyrH2dTK2ifsjTVKWj3cq9z03Pdf3ehiK4MSo2BwMh//Qpnl2MT\n\tS3iXJRS50flLVL+fRAa0yhJbCupCGvWa5/tL8uwcYQZAcEuzTLXehPf5GBvnPk1wYX3X\n\toMJS+KE5e5zswzuBGX1vz4QU66CqsoqCeEOYFm95S/7d9LMvM354QuZ/mCCjrmQ8MmIl\n\t1FjPXfQXj0rYxx7CYXifw9KncyewDGXQ4HgDxYP7B+k8VoYrYbbmurQMfH5uNEwxQNes\n\tkT9URnuOBNZgnqMU56uWDdgJhQOG0kIpVXejgZ877T4VRRFo+KzK5zhwmoyPZ1M5AkB2\n\tgCQQ==",
        "X-Gm-Message-State": "AA+aEWbD/WDd3Nmxh7dggXaU8xXTnggtZmUnODOnq4DxwdmGIGHp4oia\n\tvDJUTlg4E/GMW6gOIc1L5tvH0GC31Mg=",
        "X-Google-Smtp-Source": "AFSGD/WzysXbVSvLMylF34Vz9RPCKS8QTc8RfzRunvXlglG8GGuEMK+aS/ihnkkHxfN9NFFS0K0fGA==",
        "X-Received": "by 2002:a2e:484:: with SMTP id\n\ta4-v6mr7090344ljf.27.1545044604104; \n\tMon, 17 Dec 2018 03:03:24 -0800 (PST)",
        "From": "Michal Krawczyk <mk@semihalf.com>",
        "To": "dev@dpdk.org",
        "Cc": "Rafal Kozik <rk@semihalf.com>,\n\tstable@dpdk.org",
        "Date": "Mon, 17 Dec 2018 12:03:07 +0100",
        "Message-Id": "<20181217110307.29969-1-mk@semihalf.com>",
        "X-Mailer": "git-send-email 2.14.1",
        "In-Reply-To": "<20181214131846.22439-1-mk@semihalf.com>",
        "References": "<20181214131846.22439-1-mk@semihalf.com>",
        "Subject": "[dpdk-dev] [PATCH v2 14/20] net/ena: fix cleanup for out of order\n\tpackets",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Rafal Kozik <rk@semihalf.com>\n\nWhen wrong req_id is detected some previous mbufs could be used for\nreceiving different segments of received packets. In such cases chained\nmbufs will be twice returned to pool.\n\nTo prevent it chained mbuf is now freed just after error detection.\n\nTo simplify cleaning, pointers taken for Rx ring are set to NULL.\n\nAs after ena_rx_queue_release_bufs and ena_tx_queue_release_bufs queues\nare not used updating of next_to_clean pointer is not necessary.\n\nFixes: c2034976673d (\"net/ena: add Rx out of order completion\")\nCc: stable@dpdk.org\n\nChange-Id: I5e93cfb93c145f507fee2a8b2fb230332ce78e33\nSigned-off-by: Rafal Kozik <rk@semihalf.com>\nAcked-by: Michal Krawczyk <mk@semihalf.com>\n---\nv2:\n* Fix for loop error when compiler is not using C99 mode\n\n drivers/net/ena/ena_ethdev.c | 24 +++++++++++-------------\n 1 file changed, 11 insertions(+), 13 deletions(-)",
    "diff": "diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c\nindex 14165561e..364778840 100644\n--- a/drivers/net/ena/ena_ethdev.c\n+++ b/drivers/net/ena/ena_ethdev.c\n@@ -770,17 +770,13 @@ static void ena_tx_queue_release(void *queue)\n \n static void ena_rx_queue_release_bufs(struct ena_ring *ring)\n {\n-\tunsigned int ring_mask = ring->ring_size - 1;\n-\n-\twhile (ring->next_to_clean != ring->next_to_use) {\n-\t\tstruct rte_mbuf *m =\n-\t\t\tring->rx_buffer_info[ring->next_to_clean & ring_mask];\n-\n-\t\tif (m)\n-\t\t\trte_mbuf_raw_free(m);\n+\tunsigned int i;\n \n-\t\tring->next_to_clean++;\n-\t}\n+\tfor (i = 0; i < ring->ring_size; ++i)\n+\t\tif (ring->rx_buffer_info[i]) {\n+\t\t\trte_mbuf_raw_free(ring->rx_buffer_info[i]);\n+\t\t\tring->rx_buffer_info[i] = NULL;\n+\t\t}\n }\n \n static void ena_tx_queue_release_bufs(struct ena_ring *ring)\n@@ -792,8 +788,6 @@ static void ena_tx_queue_release_bufs(struct ena_ring *ring)\n \n \t\tif (tx_buf->mbuf)\n \t\t\trte_pktmbuf_free(tx_buf->mbuf);\n-\n-\t\tring->next_to_clean++;\n \t}\n }\n \n@@ -2077,10 +2071,14 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n \t\twhile (segments < ena_rx_ctx.descs) {\n \t\t\treq_id = ena_rx_ctx.ena_bufs[segments].req_id;\n \t\t\trc = validate_rx_req_id(rx_ring, req_id);\n-\t\t\tif (unlikely(rc))\n+\t\t\tif (unlikely(rc)) {\n+\t\t\t\tif (segments != 0)\n+\t\t\t\t\trte_mbuf_raw_free(mbuf_head);\n \t\t\t\tbreak;\n+\t\t\t}\n \n \t\t\tmbuf = rx_buff_info[req_id];\n+\t\t\trx_buff_info[req_id] = NULL;\n \t\t\tmbuf->data_len = ena_rx_ctx.ena_bufs[segments].len;\n \t\t\tmbuf->data_off = RTE_PKTMBUF_HEADROOM;\n \t\t\tmbuf->refcnt = 1;\n",
    "prefixes": [
        "v2",
        "14/20"
    ]
}