get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1283,
    "url": "https://patches.dpdk.org/api/patches/1283/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1415984609-2484-14-git-send-email-olivier.matz@6wind.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": "<1415984609-2484-14-git-send-email-olivier.matz@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1415984609-2484-14-git-send-email-olivier.matz@6wind.com",
    "date": "2014-11-14T17:03:29",
    "name": "[dpdk-dev,v2,13/13] testpmd: add a verbose mode csum forward engine",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "7338118a8a042587e5b35b1ba5961361bd2f86f7",
    "submitter": {
        "id": 8,
        "url": "https://patches.dpdk.org/api/people/8/?format=api",
        "name": "Olivier Matz",
        "email": "olivier.matz@6wind.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1415984609-2484-14-git-send-email-olivier.matz@6wind.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/1283/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/1283/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 C106D8019;\n\tFri, 14 Nov 2014 17:54:23 +0100 (CET)",
            "from mail-wi0-f174.google.com (mail-wi0-f174.google.com\n\t[209.85.212.174]) by dpdk.org (Postfix) with ESMTP id D642D7F9C\n\tfor <dev@dpdk.org>; Fri, 14 Nov 2014 17:54:02 +0100 (CET)",
            "by mail-wi0-f174.google.com with SMTP id h11so81242wiw.1\n\tfor <dev@dpdk.org>; Fri, 14 Nov 2014 09:04:06 -0800 (PST)",
            "from glumotte.dev.6wind.com (guy78-3-82-239-227-177.fbx.proxad.net.\n\t[82.239.227.177]) by mx.google.com with ESMTPSA id\n\tcu9sm40352554wjb.0.2014.11.14.09.04.05 for <multiple recipients>\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tFri, 14 Nov 2014 09:04:06 -0800 (PST)"
        ],
        "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=QagW+9wlCs2AB5OfYeV+3bJnFdb6hDIzROn0mYjzO3I=;\n\tb=lODKJ+B72g6xnx/6k0rtDFDbksoh0T2DT9ItDSo0/RUIuSaZpJNQ/TrL1sYZldQOlt\n\tVToQYiLjo05AnHbi+XN256vDpKPamgymZHu+gIwBaPmP+KzNw8o09L3I1zJq+leXa7G7\n\tVvxRN2fNFmjMa+nnxLTarsijmsnJ8Jcojr5tV+AJYfzGiT9v1023eHUDN+oK6Kpyy2wZ\n\tXaWsAr+k5ClYCf6ERUf3S7da1bLDZLXCvLQmLlDq3ag4ujT3YQKMacvBTTl+qUSFU1iE\n\tRJHMAP7WYxDaXtGrjuCrVTsTjgyHQz15/VX2BI6xd2xUaTsCA9PNbzSh4ByJ15JpkN/X\n\tukAg==",
        "X-Gm-Message-State": "ALoCoQnz2fI5sTtoWb3FT2dD9eWlyq8D2ehjHxNft+MKROw7/yvFHSv55y7o7AlBJ6YvQekBbzrY",
        "X-Received": "by 10.194.170.232 with SMTP id ap8mr15765004wjc.2.1415984646583; \n\tFri, 14 Nov 2014 09:04:06 -0800 (PST)",
        "From": "Olivier Matz <olivier.matz@6wind.com>",
        "To": "dev@dpdk.org",
        "Date": "Fri, 14 Nov 2014 18:03:29 +0100",
        "Message-Id": "<1415984609-2484-14-git-send-email-olivier.matz@6wind.com>",
        "X-Mailer": "git-send-email 2.1.0",
        "In-Reply-To": "<1415984609-2484-1-git-send-email-olivier.matz@6wind.com>",
        "References": "<1415635166-1364-1-git-send-email-olivier.matz@6wind.com>\n\t<1415984609-2484-1-git-send-email-olivier.matz@6wind.com>",
        "Cc": "jigsaw@gmail.com",
        "Subject": "[dpdk-dev] [PATCH v2 13/13] testpmd: add a verbose mode csum\n\tforward engine",
        "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": "If the user specifies 'set verbose 1' in testpmd command line,\nthe csum forward engine will dump some informations about received\nand transmitted packets, especially which flags are set and what\nvalues are assigned to l2_len, l3_len, l4_len and tso_segsz.\n\nThis can help someone implementing TSO or hardware checksum offload to\nunderstand how to configure the mbufs.\n\nExample of output for one packet:\n\n --------------\n rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20\n tx: m->l2_len=14 m->l3_len=20 m->l4_len=20\n tx: m->tso_segsz=800\n tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG\n --------------\n\nSigned-off-by: Olivier Matz <olivier.matz@6wind.com>\n---\n app/test-pmd/csumonly.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 51 insertions(+)",
    "diff": "diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c\nindex 9a2beac..9e8c811 100644\n--- a/app/test-pmd/csumonly.c\n+++ b/app/test-pmd/csumonly.c\n@@ -459,6 +459,57 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)\n \t\tm->tso_segsz = tso_segsz;\n \t\tm->ol_flags = ol_flags;\n \n+\t\t/* if verbose mode is enabled, dump debug info */\n+\t\tif (verbose_level > 0) {\n+\t\t\tstruct {\n+\t\t\t\tuint64_t flag;\n+\t\t\t\tuint64_t mask;\n+\t\t\t} tx_flags[] = {\n+\t\t\t\t{ PKT_TX_IP_CKSUM, PKT_TX_IP_CKSUM },\n+\t\t\t\t{ PKT_TX_UDP_CKSUM, PKT_TX_L4_MASK },\n+\t\t\t\t{ PKT_TX_TCP_CKSUM, PKT_TX_L4_MASK },\n+\t\t\t\t{ PKT_TX_SCTP_CKSUM, PKT_TX_L4_MASK },\n+\t\t\t\t{ PKT_TX_VXLAN_CKSUM, PKT_TX_VXLAN_CKSUM },\n+\t\t\t\t{ PKT_TX_TCP_SEG, PKT_TX_TCP_SEG },\n+\t\t\t};\n+\t\t\tunsigned j;\n+\t\t\tconst char *name;\n+\n+\t\t\tprintf(\"-----------------\\n\");\n+\t\t\t/* dump rx parsed packet info */\n+\t\t\tprintf(\"rx: l2_len=%d ethertype=%x l3_len=%d \"\n+\t\t\t\t\"l4_proto=%d l4_len=%d\\n\",\n+\t\t\t\tl2_len, rte_be_to_cpu_16(ethertype),\n+\t\t\t\tl3_len, l4_proto, l4_len);\n+\t\t\tif (tunnel == 1)\n+\t\t\t\tprintf(\"rx: outer_l2_len=%d outer_ethertype=%x \"\n+\t\t\t\t\t\"outer_l3_len=%d\\n\", outer_l2_len,\n+\t\t\t\t\trte_be_to_cpu_16(outer_ethertype),\n+\t\t\t\t\touter_l3_len);\n+\t\t\t/* dump tx packet info */\n+\t\t\tif ((testpmd_ol_flags & (TESTPMD_TX_OFFLOAD_IP_CKSUM |\n+\t\t\t\t\t\tTESTPMD_TX_OFFLOAD_UDP_CKSUM |\n+\t\t\t\t\t\tTESTPMD_TX_OFFLOAD_TCP_CKSUM |\n+\t\t\t\t\t\tTESTPMD_TX_OFFLOAD_SCTP_CKSUM)) ||\n+\t\t\t\ttso_segsz != 0)\n+\t\t\t\tprintf(\"tx: m->l2_len=%d m->l3_len=%d \"\n+\t\t\t\t\t\"m->l4_len=%d\\n\",\n+\t\t\t\t\tm->l2_len, m->l3_len, m->l4_len);\n+\t\t\tif ((tunnel == 1) &&\n+\t\t\t\t(testpmd_ol_flags & TESTPMD_TX_OFFLOAD_VXLAN_CKSUM))\n+\t\t\t\tprintf(\"tx: m->inner_l2_len=%d m->inner_l3_len=%d\\n\",\n+\t\t\t\t\tm->inner_l2_len, m->inner_l3_len);\n+\t\t\tif (tso_segsz != 0)\n+\t\t\t\tprintf(\"tx: m->tso_segsz=%d\\n\", m->tso_segsz);\n+\t\t\tprintf(\"tx: flags=\");\n+\t\t\tfor (j = 0; j < sizeof(tx_flags)/sizeof(*tx_flags); j++) {\n+\t\t\t\tname = rte_get_tx_ol_flag_name(tx_flags[j].flag);\n+\t\t\t\tif ((m->ol_flags & tx_flags[j].mask) ==\n+\t\t\t\t\ttx_flags[j].flag)\n+\t\t\t\t\tprintf(\"%s \", name);\n+\t\t\t}\n+\t\t\tprintf(\"\\n\");\n+\t\t}\n \t}\n \tnb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_rx);\n \tfs->tx_packets += nb_tx;\n",
    "prefixes": [
        "dpdk-dev",
        "v2",
        "13/13"
    ]
}