get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 572593,
    "url": "http://patchwork.ozlabs.org/api/patches/572593/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20160125051729.12004.54009.stgit@localhost.localdomain/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20160125051729.12004.54009.stgit@localhost.localdomain>",
    "list_archive_url": null,
    "date": "2016-01-25T05:17:29",
    "name": "[next,v3,11/15] i40e/i40evf: Enable support for SKB_GSO_UDP_TUNNEL_CSUM",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "10f993f90c81027c412e99a35ccd9670213541f1",
    "submitter": {
        "id": 67293,
        "url": "http://patchwork.ozlabs.org/api/people/67293/?format=api",
        "name": "Alexander Duyck",
        "email": "aduyck@mirantis.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20160125051729.12004.54009.stgit@localhost.localdomain/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/572593/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/572593/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@lists.osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Received": [
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ozlabs.org (Postfix) with ESMTP id 9AB201402BF\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 25 Jan 2016 16:17:36 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 6D9E08C454;\n\tMon, 25 Jan 2016 05:17:34 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id phcESqMQjs1e; Mon, 25 Jan 2016 05:17:33 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 6C06B8C430;\n\tMon, 25 Jan 2016 05:17:33 +0000 (UTC)",
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id E255B1C107C\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 25 Jan 2016 05:17:32 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id D7778321EF\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 25 Jan 2016 05:17:32 +0000 (UTC)",
            "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id USk4d1GQKLpK for <intel-wired-lan@lists.osuosl.org>;\n\tMon, 25 Jan 2016 05:17:31 +0000 (UTC)",
            "from mail-pa0-f43.google.com (mail-pa0-f43.google.com\n\t[209.85.220.43])\n\tby silver.osuosl.org (Postfix) with ESMTPS id 7F5EE321DB\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 25 Jan 2016 05:17:31 +0000 (UTC)",
            "by mail-pa0-f43.google.com with SMTP id cy9so74906655pac.0\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tSun, 24 Jan 2016 21:17:31 -0800 (PST)",
            "from localhost.localdomain\n\t(static-50-53-29-36.bvtn.or.frontiernet.net. [50.53.29.36])\n\tby smtp.gmail.com with ESMTPSA id\n\tp20sm24949002pfi.86.2016.01.24.21.17.30\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tSun, 24 Jan 2016 21:17:30 -0800 (PST)"
        ],
        "Authentication-Results": "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=mirantis.com header.i=@mirantis.com\n\theader.b=LizXgxnh; dkim-atps=neutral",
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "from auto-whitelisted by SQLgrey-1.7.6",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=mirantis.com;\n\ts=google; \n\th=subject:from:to:cc:date:message-id:in-reply-to:references\n\t:user-agent:mime-version:content-type:content-transfer-encoding;\n\tbh=nPHj/JdgwanvqMgIW7alzSnsOW+/EP+0SsqCQdsOq8o=;\n\tb=LizXgxnhzlZwoQZWS1HAO/wolTXJ0HhHIM/dIE0uxInjFpyMUuPN3Y4DVE/QiWKKfD\n\tE2UJAlVr5e/fJmwS6p3xepTqf2haLT9bAOHnG88oTbEA/GNxbVVVJ4eVTBSLx4mHRle+\n\tMGIGtruPJK0fPq9GaBRWVgmvCbYb5TOsDorjg=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:subject:from:to:cc:date:message-id:in-reply-to\n\t:references:user-agent:mime-version:content-type\n\t:content-transfer-encoding;\n\tbh=nPHj/JdgwanvqMgIW7alzSnsOW+/EP+0SsqCQdsOq8o=;\n\tb=amH1fyHs7+L8E4M05Yofx8dSrR80Kh3I1x/TerjWppAu73X2xm88njDbYIy5Gw9r69\n\tohO3NyiLE+gClXuGyZ9jd3IkewJ7gsCKexhgUnY6v9FwBmrN4Pfjy9/zZWXNOHbES9CE\n\tlun+mbIgb0Uu+Ff0UT1KPlN3rozKBDidAj4H7bNjkB55nndUlvl8VwMozPoiuCRRkz4B\n\tgjku7bgHyBW+Zm2V9D/gx0PX/+I3SzpwQ62xe1gMGMm51xb01n80F9nkVh2Qr8gpBjz/\n\tlBg+l/xSkjrF0LK0cBZWLyNOn5kaoN9vBrkWpy7z3tgaeAXni1bUm3JCYzlgZq2P+3W8\n\tunGQ==",
        "X-Gm-Message-State": "AG10YORRfqe4BHZTSjc2LzLVfjd4p7wIHoDKrnalbI8i7CDxvceQEpJayPHbMMXAl7EdqX1e",
        "X-Received": "by 10.66.252.136 with SMTP id zs8mr23146111pac.110.1453699051232;\n\tSun, 24 Jan 2016 21:17:31 -0800 (PST)",
        "From": "Alexander Duyck <aduyck@mirantis.com>",
        "To": "intel-wired-lan@lists.osuosl.org, jeffrey.t.kirsher@intel.com",
        "Date": "Sun, 24 Jan 2016 21:17:29 -0800",
        "Message-ID": "<20160125051729.12004.54009.stgit@localhost.localdomain>",
        "In-Reply-To": "<20160125050602.12004.38884.stgit@localhost.localdomain>",
        "References": "<20160125050602.12004.38884.stgit@localhost.localdomain>",
        "User-Agent": "StGit/0.17.1-dirty",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [next PATCH v3 11/15] i40e/i40evf: Enable support\n\tfor SKB_GSO_UDP_TUNNEL_CSUM",
        "X-BeenThere": "intel-wired-lan@lists.osuosl.org",
        "X-Mailman-Version": "2.1.18-1",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.lists.osuosl.org>",
        "List-Unsubscribe": "<http://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@lists.osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@lists.osuosl.org?subject=help>",
        "List-Subscribe": "<http://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@lists.osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@lists.osuosl.org>"
    },
    "content": "The XL722 has support for providing the outer UDP tunnel checksum on\ntransmits.  Make use of this feature to support segmenting UDP tunnels with\nouter checksums enabled.\n\nSigned-off-by: Alexander Duyck <aduyck@mirantis.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_txrx.c   |   19 ++++++++++++++++++-\n drivers/net/ethernet/intel/i40evf/i40e_txrx.c |   19 ++++++++++++++++++-\n 2 files changed, 36 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\nindex 890d2f580434..6a76c169c07e 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n@@ -2272,6 +2272,7 @@ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \t} ip;\n \tunion {\n \t\tstruct tcphdr *tcp;\n+\t\tstruct udphdr *udp;\n \t\tunsigned char *hdr;\n \t} l4;\n \tu32 paylen, l4_offset;\n@@ -2298,7 +2299,18 @@ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \t\tip.v6->payload_len = 0;\n \t}\n \n-\tif (skb_shinfo(skb)->gso_type & (SKB_GSO_UDP_TUNNEL | SKB_GSO_GRE)) {\n+\tif (skb_shinfo(skb)->gso_type & (SKB_GSO_UDP_TUNNEL | SKB_GSO_GRE |\n+\t\t\t\t\t SKB_GSO_UDP_TUNNEL_CSUM)) {\n+\t\tif (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_TUNNEL_CSUM) {\n+\t\t\t/* determine offset of outer transport header */\n+\t\t\tl4_offset = l4.hdr - skb->data;\n+\n+\t\t\t/* remove payload length from outer checksum */\n+\t\t\tpaylen = (__force u16)l4.udp->check;\n+\t\t\tpaylen += ntohs(1) * (u16)~(skb->len - l4_offset);\n+\t\t\tl4.udp->check = ~csum_fold((__force __wsum)paylen);\n+\t\t}\n+\n \t\t/* reset pointers to inner headers */\n \t\tip.hdr = skb_inner_network_header(skb);\n \t\tl4.hdr = skb_inner_transport_header(skb);\n@@ -2460,6 +2472,11 @@ static int i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,\n \t\ttunnel |= ((ip.hdr - l4.hdr) / 2) <<\n \t\t\t  I40E_TXD_CTX_QW0_NATLEN_SHIFT;\n \n+\t\t/* indicate if we need to offload outer UDP header */\n+\t\tif ((*tx_flags & I40E_TX_FLAGS_TSO) &&\n+\t\t    (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_TUNNEL_CSUM))\n+\t\t\ttunnel |= I40E_TXD_CTX_QW0_L4T_CS_MASK;\n+\n \t\t/* record tunnel offload values */\n \t\t*cd_tunneling |= tunnel;\n \ndiff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\nindex 126b748c0ff1..a4f03f6752cc 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\n@@ -1532,6 +1532,7 @@ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \t} ip;\n \tunion {\n \t\tstruct tcphdr *tcp;\n+\t\tstruct udphdr *udp;\n \t\tunsigned char *hdr;\n \t} l4;\n \tu32 paylen, l4_offset;\n@@ -1558,7 +1559,18 @@ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \t\tip.v6->payload_len = 0;\n \t}\n \n-\tif (skb_shinfo(skb)->gso_type & (SKB_GSO_UDP_TUNNEL | SKB_GSO_GRE)) {\n+\tif (skb_shinfo(skb)->gso_type & (SKB_GSO_UDP_TUNNEL | SKB_GSO_GRE |\n+\t\t\t\t\t SKB_GSO_UDP_TUNNEL_CSUM)) {\n+\t\tif (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_TUNNEL_CSUM) {\n+\t\t\t/* determine offset of outer transport header */\n+\t\t\tl4_offset = l4.hdr - skb->data;\n+\n+\t\t\t/* remove payload length from outer checksum */\n+\t\t\tpaylen = (__force u16)l4.udp->check;\n+\t\t\tpaylen += ntohs(1) * (u16)~(skb->len - l4_offset);\n+\t\t\tl4.udp->check = ~csum_fold((__force __wsum)paylen);\n+\t\t}\n+\n \t\t/* reset pointers to inner headers */\n \t\tip.hdr = skb_inner_network_header(skb);\n \t\tl4.hdr = skb_inner_transport_header(skb);\n@@ -1678,6 +1690,11 @@ static int i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,\n \t\ttunnel |= ((ip.hdr - l4.hdr) / 2) <<\n \t\t\t  I40E_TXD_CTX_QW0_NATLEN_SHIFT;\n \n+\t\t/* indicate if we need to offload outer UDP header */\n+\t\tif ((*tx_flags & I40E_TX_FLAGS_TSO) &&\n+\t\t    (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_TUNNEL_CSUM))\n+\t\t\ttunnel |= I40E_TXD_CTX_QW0_L4T_CS_MASK;\n+\n \t\t/* record tunnel offload values */\n \t\t*cd_tunneling |= tunnel;\n \n",
    "prefixes": [
        "next",
        "v3",
        "11/15"
    ]
}