get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 679,
    "url": "http://patchwork.dpdk.org/api/patches/679/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/7F861DC0615E0C47A872E6F3C5FCDDBD02AE26A1@BPXM14GP.gisp.nec.co.jp/",
    "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": "<7F861DC0615E0C47A872E6F3C5FCDDBD02AE26A1@BPXM14GP.gisp.nec.co.jp>",
    "list_archive_url": "https://inbox.dpdk.org/dev/7F861DC0615E0C47A872E6F3C5FCDDBD02AE26A1@BPXM14GP.gisp.nec.co.jp",
    "date": "2014-09-30T11:14:12",
    "name": "[dpdk-dev,memnic,v2,5/7] pmd: packet receiving optimization with prefetch",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "957f6b0d50e5326d218218ad45b47cafe32006cf",
    "submitter": {
        "id": 38,
        "url": "http://patchwork.dpdk.org/api/people/38/?format=api",
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/7F861DC0615E0C47A872E6F3C5FCDDBD02AE26A1@BPXM14GP.gisp.nec.co.jp/mbox/",
    "series": [],
    "comments": "http://patchwork.dpdk.org/api/patches/679/comments/",
    "check": "pending",
    "checks": "http://patchwork.dpdk.org/api/patches/679/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 64497678B;\n\tTue, 30 Sep 2014 13:11:32 +0200 (CEST)",
            "from tyo201.gate.nec.co.jp (TYO201.gate.nec.co.jp [210.143.35.51])\n\tby dpdk.org (Postfix) with ESMTP id 7CB865902\n\tfor <dev@dpdk.org>; Tue, 30 Sep 2014 13:11:30 +0200 (CEST)",
            "from mailgate3.nec.co.jp ([10.7.69.193])\n\tby tyo201.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id s8UBI95G026827\n\tfor <dev@dpdk.org>; Tue, 30 Sep 2014 20:18:09 +0900 (JST)",
            "from mailsv4.nec.co.jp (imss62.nec.co.jp [10.7.69.157]) by\n\tmailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) with ESMTP\n\tid s8UBI9C05801 for <dev@dpdk.org>;\n\tTue, 30 Sep 2014 20:18:09 +0900 (JST)",
            "from mail01b.kamome.nec.co.jp (mail01b.kamome.nec.co.jp\n\t[10.25.43.2])\n\tby mailsv4.nec.co.jp (8.13.8/8.13.4) with ESMTP id s8UBI8lD029337\n\tfor <dev@dpdk.org>; Tue, 30 Sep 2014 20:18:08 +0900 (JST)",
            "from bpxc99gp.gisp.nec.co.jp ([10.38.151.143] [10.38.151.143]) by\n\tmail02.kamome.nec.co.jp with ESMTP id BT-MMP-2237338;\n\tTue, 30 Sep 2014 20:14:13 +0900",
            "from BPXM14GP.gisp.nec.co.jp ([169.254.1.136]) by\n\tBPXC15GP.gisp.nec.co.jp ([10.38.151.143]) with mapi id 14.03.0174.002;\n\tTue, 30 Sep 2014 20:14:12 +0900"
        ],
        "From": "Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>",
        "To": "\"dev@dpdk.org\" <dev@dpdk.org>",
        "Thread-Topic": "[memnic PATCH v2 5/7] pmd: packet receiving optimization with\n\tprefetch",
        "Thread-Index": "Ac/cn6TvXz6uLK8SReOuDx1jkyXvlQ==",
        "Date": "Tue, 30 Sep 2014 11:14:12 +0000",
        "Message-ID": "<7F861DC0615E0C47A872E6F3C5FCDDBD02AE26A1@BPXM14GP.gisp.nec.co.jp>",
        "Accept-Language": "ja-JP, en-US",
        "Content-Language": "ja-JP",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "x-originating-ip": "[10.205.5.123]",
        "Content-Type": "text/plain; charset=\"iso-2022-jp\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "Cc": "Hayato Momma <h-momma@ce.jp.nec.com>",
        "Subject": "[dpdk-dev] [memnic PATCH v2 5/7] pmd: packet receiving optimization\n\twith prefetch",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/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: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>\n\nPrefetch the next packet area to reduce memory stall cycles.\n\nPrefetching the next packet area could hide memory stall, because the next\narea will be accessed just after processing the current receive operations.\n\nWe can see performance improvements with memnic-tester.\nUsing Xeon E5-2697 v2 @ 2.70GHz, 4 vCPU.\n size |  before  |  after\n   64 | 4.59Mpps | 5.54Mpps\n  128 | 4.87Mpps | 5.46Mpps\n  256 | 4.72Mpps | 5.21Mpps\n  512 | 4.41Mpps | 4.50Mpps\n 1024 | 3.64Mpps | 3.71Mpps\n 1280 | 3.15Mpps | 3.21Mpps\n 1518 | 2.87Mpps | 2.92Mpps\n\nSigned-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>\nReviewed-by: Hayato Momma <h-momma@ce.jp.nec.com>\n---\n pmd/pmd_memnic.c | 11 +++++++----\n 1 file changed, 7 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/pmd/pmd_memnic.c b/pmd/pmd_memnic.c\nindex 0783440..7fc3093 100644\n--- a/pmd/pmd_memnic.c\n+++ b/pmd/pmd_memnic.c\n@@ -286,7 +286,7 @@ static uint16_t memnic_recv_pkts(void *rx_queue,\n \tuint16_t nr;\n \tuint64_t pkts, bytes, errs;\n \tuint32_t framesz = adapter->framesz;\n-\tint idx;\n+\tint idx, next;\n \tstruct rte_eth_stats *st = &adapter->stats[rte_lcore_id()];\n \n \tif (!adapter->nic->hdr.valid)\n@@ -298,6 +298,11 @@ static uint16_t memnic_recv_pkts(void *rx_queue,\n \t\tp = &data->packets[idx];\n \t\tif (p->status != MEMNIC_PKT_ST_FILLED)\n \t\t\tbreak;\n+\t\t/* prefetch the next area */\n+\t\tnext = idx;\n+\t\tif (++next >= MEMNIC_NR_PACKET)\n+\t\t\tnext = 0;\n+\t\trte_prefetch0(&data->packets[next]);\n \t\tif (p->len > framesz) {\n \t\t\terrs++;\n \t\t\tgoto drop;\n@@ -318,9 +323,7 @@ static uint16_t memnic_recv_pkts(void *rx_queue,\n drop:\n \t\trte_compiler_barrier();\n \t\tp->status = MEMNIC_PKT_ST_FREE;\n-\n-\t\tif (++idx >= MEMNIC_NR_PACKET)\n-\t\t\tidx = 0;\n+\t\tidx = next;\n \t}\n \tadapter->up_idx = idx;\n \n",
    "prefixes": [
        "dpdk-dev",
        "memnic",
        "v2",
        "5/7"
    ]
}