get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 10243,
    "url": "http://patches.dpdk.org/api/patches/10243/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1454063573-1993-2-git-send-email-adrien.mazarguil@6wind.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": "<1454063573-1993-2-git-send-email-adrien.mazarguil@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1454063573-1993-2-git-send-email-adrien.mazarguil@6wind.com",
    "date": "2016-01-29T10:32:48",
    "name": "[dpdk-dev,1/6] mlx5: prefetch next TX mbuf header and data",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "0a7207ec815a327cd7aa15b288b5a3bd60c76523",
    "submitter": {
        "id": 165,
        "url": "http://patches.dpdk.org/api/people/165/?format=api",
        "name": "Adrien Mazarguil",
        "email": "adrien.mazarguil@6wind.com"
    },
    "delegate": {
        "id": 10,
        "url": "http://patches.dpdk.org/api/users/10/?format=api",
        "username": "bruce",
        "first_name": "Bruce",
        "last_name": "Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1454063573-1993-2-git-send-email-adrien.mazarguil@6wind.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/10243/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/10243/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 AA94BC67E;\n\tFri, 29 Jan 2016 11:33:18 +0100 (CET)",
            "from mail-wm0-f48.google.com (mail-wm0-f48.google.com\n\t[74.125.82.48]) by dpdk.org (Postfix) with ESMTP id 485F4C67C\n\tfor <dev@dpdk.org>; Fri, 29 Jan 2016 11:33:17 +0100 (CET)",
            "by mail-wm0-f48.google.com with SMTP id p63so61881370wmp.1\n\tfor <dev@dpdk.org>; Fri, 29 Jan 2016 02:33:17 -0800 (PST)",
            "from 6wind.com (guy78-3-82-239-227-177.fbx.proxad.net.\n\t[82.239.227.177]) by smtp.gmail.com with ESMTPSA id\n\tm143sm6806372wma.17.2016.01.29.02.33.16\n\t(version=TLSv1/SSLv3 cipher=OTHER);\n\tFri, 29 Jan 2016 02:33:16 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=6wind-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=W++DqTnTutv9F85eHLHzemwcMWO0+xj+TBXShaY62vY=;\n\tb=v0e3kCKOuJxePw9tJR1Hni7GkQLhe7C6BUkh1ekYy0adC8XyBfKgZx8FMh7LNPUVQP\n\t0xDdTm81FYYZyFG4oXPhB/3FuH74XlaI7QPru9OX++rXgjZT/SbXvh1zX1ZVmEo9U/p4\n\t4toF30oGwoXEG/AKrOCPBTyz7A4Z+EwdNdzLzRsEB+NjTLAE9lyDouD69DU5DyXcYEvJ\n\tzXpXt84iXAqSKRMeO3hMi33cMbwdHs6SoHbfjVC7mLUYWN5J6v1lbwCIu/QnZVwFLbeZ\n\tjVp4+ELS/MIHGilavIvsVtIp+mU9k+O9PWNTUbo1qIn8cZzgZ87xlOTTLTGp4ObKjGq2\n\tlZUg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=W++DqTnTutv9F85eHLHzemwcMWO0+xj+TBXShaY62vY=;\n\tb=J6RzSNt7RHx5vrNYsqVnfzrxTcaMzFSYvdAoXbYOJh0O3Ek45+A1FzSUpvuJKDrKHj\n\t52MwQbZ9x5U6RyJpKIqkg5DB29zYMQdpHtETRaDpzMR5/MOIlvlFxFjidkcfUK7Fd63C\n\t/ITZH9LKKV+wCpEyKn8oN+uw5ETeElXTCPq5dU8AK9NS6sof1QW2+/oFOQdQGP35TnAi\n\ts8T/RzJrRCvbH1mnAHcCBiSBWe++rVAusESFyzy7oeoz/AISq3sIJlGDcioZlhTtH8c9\n\t7mMNBw3RMpRfw+Al8BxsWdlV7mh+MfRffSmVAZ32ugX+LUgx7kGuinuqKPPXk7nmfVFY\n\t2cyg==",
        "X-Gm-Message-State": "AG10YOQw3P2qvzV0ZXNKiCKdRCjvfVXMXey5Q/en3REV5wMCLtFPUdx/GG8lgePsXwI3cyU9",
        "X-Received": "by 10.28.194.69 with SMTP id s66mr8768676wmf.93.1454063597177;\n\tFri, 29 Jan 2016 02:33:17 -0800 (PST)",
        "From": "Adrien Mazarguil <adrien.mazarguil@6wind.com>",
        "To": "dev@dpdk.org",
        "Date": "Fri, 29 Jan 2016 11:32:48 +0100",
        "Message-Id": "<1454063573-1993-2-git-send-email-adrien.mazarguil@6wind.com>",
        "X-Mailer": "git-send-email 2.1.4",
        "In-Reply-To": "<1454063573-1993-1-git-send-email-adrien.mazarguil@6wind.com>",
        "References": "<1454063573-1993-1-git-send-email-adrien.mazarguil@6wind.com>",
        "Subject": "[dpdk-dev] [PATCH 1/6] mlx5: prefetch next TX mbuf header and data",
        "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: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>\n\nThis change improves performance noticeably.\n\nSigned-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>\n---\n drivers/net/mlx5/mlx5_rxtx.c | 16 +++++++++++++++-\n 1 file changed, 15 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c\nindex 7585570..bee5ce2 100644\n--- a/drivers/net/mlx5/mlx5_rxtx.c\n+++ b/drivers/net/mlx5/mlx5_rxtx.c\n@@ -443,8 +443,11 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \tunsigned int i;\n \tunsigned int max;\n \tint err;\n+\tstruct rte_mbuf *buf = pkts[0];\n \n \tassert(elts_comp_cd != 0);\n+\t/* Prefetch first packet cacheline. */\n+\trte_prefetch0(buf);\n \ttxq_complete(txq);\n \tmax = (elts_n - (elts_head - txq->elts_tail));\n \tif (max > elts_n)\n@@ -458,7 +461,7 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \tif (max > pkts_n)\n \t\tmax = pkts_n;\n \tfor (i = 0; (i != max); ++i) {\n-\t\tstruct rte_mbuf *buf = pkts[i];\n+\t\tstruct rte_mbuf *buf_next = pkts[i + 1];\n \t\tunsigned int elts_head_next =\n \t\t\t(((elts_head + 1) == elts_n) ? 0 : elts_head + 1);\n \t\tstruct txq_elt *elt_next = &(*txq->elts)[elts_head_next];\n@@ -481,6 +484,8 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t\t\ttmp = next;\n \t\t\t} while (tmp != NULL);\n \t\t}\n+\t\tif (i + 1 < max)\n+\t\t\trte_prefetch0(buf_next);\n \t\t/* Request TX completion. */\n \t\tif (unlikely(--elts_comp_cd == 0)) {\n \t\t\telts_comp_cd = txq->elts_comp_cd_init;\n@@ -502,6 +507,7 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t\tuintptr_t addr;\n \t\t\tuint32_t length;\n \t\t\tuint32_t lkey;\n+\t\t\tuintptr_t buf_next_addr;\n \n \t\t\t/* Retrieve buffer information. */\n \t\t\taddr = rte_pktmbuf_mtod(buf, uintptr_t);\n@@ -522,6 +528,13 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)\n \t\t\t\trte_prefetch0((volatile void *)\n \t\t\t\t\t      (uintptr_t)addr);\n \t\t\tRTE_MBUF_PREFETCH_TO_FREE(elt_next->buf);\n+\t\t\t/* Prefetch next buffer data. */\n+\t\t\tif (i + 1 < max) {\n+\t\t\t\tbuf_next_addr =\n+\t\t\t\t\trte_pktmbuf_mtod(buf_next, uintptr_t);\n+\t\t\t\trte_prefetch0((volatile void *)\n+\t\t\t\t\t      (uintptr_t)buf_next_addr);\n+\t\t\t}\n \t\t\t/* Put packet into send queue. */\n #if MLX5_PMD_MAX_INLINE > 0\n \t\t\tif (length <= txq->max_inline)\n@@ -571,6 +584,7 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)\n #endif /* MLX5_PMD_SGE_WR_N > 1 */\n \t\t}\n \t\telts_head = elts_head_next;\n+\t\tbuf = buf_next;\n #ifdef MLX5_PMD_SOFT_COUNTERS\n \t\t/* Increment sent bytes counter. */\n \t\ttxq->stats.obytes += sent_size;\n",
    "prefixes": [
        "dpdk-dev",
        "1/6"
    ]
}