Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/572593/?format=api
{ "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" ] }