Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/572587/?format=api
{ "id": 572587, "url": "http://patchwork.ozlabs.org/api/patches/572587/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20160125051654.12004.3596.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": "<20160125051654.12004.3596.stgit@localhost.localdomain>", "list_archive_url": null, "date": "2016-01-25T05:16:54", "name": "[next,v3,07/15] i40e/i40evf: Handle IPv6 extension headers in checksum offload", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "e952ba60d2b37949d4cbdf2e8223bf399d969f85", "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/20160125051654.12004.3596.stgit@localhost.localdomain/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/572587/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/572587/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 6C12E1402DD\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 25 Jan 2016 16:16:59 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 5A4788C401;\n\tMon, 25 Jan 2016 05:16:57 +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 CjoMFhuIl+rz; Mon, 25 Jan 2016 05:16:56 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 99CAA8C3E7;\n\tMon, 25 Jan 2016 05:16:56 +0000 (UTC)", "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 5A7FC1C107C\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 25 Jan 2016 05:16:57 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id EE19E8C3DA\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 25 Jan 2016 05:16:55 +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 mLLCIZn1pbZ7 for <intel-wired-lan@lists.osuosl.org>;\n\tMon, 25 Jan 2016 05:16:55 +0000 (UTC)", "from mail-pf0-f173.google.com (mail-pf0-f173.google.com\n\t[209.85.192.173])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id 5ACBC8C3E7\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 25 Jan 2016 05:16:55 +0000 (UTC)", "by mail-pf0-f173.google.com with SMTP id q63so78054657pfb.1\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tSun, 24 Jan 2016 21:16:56 -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\ti76sm24953201pfj.68.2016.01.24.21.16.55\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tSun, 24 Jan 2016 21:16:56 -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=LtOxv/OW; 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=k/WkwtYnfGVVMYmpxDzgiOel/NI0FJqaVXCsB4fy9Ho=;\n\tb=LtOxv/OWnOFSt7YqJ2/CT8jZPoaJ9ftWHbXFxJHb8oy+jYrnWSo5blDI+x9e735f8B\n\tca+SjpFuZJxx0CLI950rSOSUsPE3HBXh2UBmRDjzI9iV6kHo2gz879uVadwxFWG3Xuyd\n\tGZhfQzVaNBgMrD8A/2W6qFPNO4MEbC/JgXcKs=", "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=k/WkwtYnfGVVMYmpxDzgiOel/NI0FJqaVXCsB4fy9Ho=;\n\tb=Cg8J4joihXh9C5agf4lA9rcq97OuBJ2e/VeuAUz+LSlWLHMY/cqsnNO9+rRJ70TK0o\n\tnLqsSy+oZD9MNITEOeXZUfg1v/Tt1fVOL+rO3k0Fs+9RGhdTnpOWo1zMrH5FJYjOj7za\n\t1CGdAspNznmGysAIGhKfz7Nab3WU1jx/uYfE8cWAZtnE/hQurTNiuJbiroAeEU3naPqC\n\tjnWeau9vLaCF7Sv1wjigAcii2fZZzJWYjwOgrXo1oh+/jVbWi18DHbhYvX9RB/msidhu\n\taiRitfuC+l65DvHduk5QnsKDqOc70+69U26i7WtyLvTsrvCpHyol5xRJFMeOUncwDQhg\n\tH1JQ==", "X-Gm-Message-State": "AG10YOTIzX7u5QmxR8hfsluwNEXpQAQlsRSXaCcBsJX0lPe60+XC/4EquSzWr2s7hjLthzac", "X-Received": "by 10.98.1.203 with SMTP id 194mr23680230pfb.10.1453699016513;\n\tSun, 24 Jan 2016 21:16:56 -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:16:54 -0800", "Message-ID": "<20160125051654.12004.3596.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 07/15] i40e/i40evf: Handle IPv6\n\textension headers in checksum offload", "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": "This patch adds support for IPv6 extension headers in setting up the Tx\nchecksum. Without this patch extension headers would cause IPv6 traffic to\nfail as the transport protocol could not be identified.\n\nSigned-off-by: Alexander Duyck <aduyck@mirantis.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_txrx.c | 14 +++++++++++++-\n drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 14 +++++++++++++-\n 2 files changed, 26 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 8e723125e31e..2e9ae018d639 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n@@ -2402,7 +2402,9 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,\n \t\tstruct udphdr *udp;\n \t\tunsigned char *hdr;\n \t} l4;\n+\tunsigned char *exthdr;\n \tu32 l4_tunnel = 0;\n+\t__be16 frag_off;\n \tu8 l4_proto = 0;\n \n \tip.hdr = skb_network_header(skb);\n@@ -2420,7 +2422,12 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,\n \t\t\tl4_proto = ip.v4->protocol;\n \t\t} else if (*tx_flags & I40E_TX_FLAGS_IPV6) {\n \t\t\t*cd_tunneling |= I40E_TX_CTX_EXT_IP_IPV6;\n+\n+\t\t\texthdr = ip.hdr + sizeof(*ip.v6);\n \t\t\tl4_proto = ip.v6->nexthdr;\n+\t\t\tif (l4.hdr != exthdr)\n+\t\t\t\tipv6_skip_exthdr(skb, exthdr - skb->data,\n+\t\t\t\t\t\t &l4_proto, &frag_off);\n \t\t}\n \n \t\t/* define outer transport */\n@@ -2470,8 +2477,13 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,\n \t\t\t*td_cmd |= I40E_TX_DESC_CMD_IIPT_IPV4;\n \t\t}\n \t} else if (*tx_flags & I40E_TX_FLAGS_IPV6) {\n-\t\tl4_proto = ip.v6->nexthdr;\n \t\t*td_cmd |= I40E_TX_DESC_CMD_IIPT_IPV6;\n+\n+\t\texthdr = ip.hdr + sizeof(*ip.v6);\n+\t\tl4_proto = ip.v6->nexthdr;\n+\t\tif (l4.hdr != exthdr)\n+\t\t\tipv6_skip_exthdr(skb, exthdr - skb->data,\n+\t\t\t\t\t &l4_proto, &frag_off);\n \t}\n \n \t/* Now set the td_offset for IP header length */\ndiff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\nindex 34c7e3ffba1a..d37cba28ecfa 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\n@@ -1619,7 +1619,9 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,\n \t\tstruct udphdr *udp;\n \t\tunsigned char *hdr;\n \t} l4;\n+\tunsigned char *exthdr;\n \tu32 l4_tunnel = 0;\n+\t__be16 frag_off;\n \tu8 l4_proto = 0;\n \n \tip.hdr = skb_network_header(skb);\n@@ -1637,7 +1639,12 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,\n \t\t\tl4_proto = ip.v4->protocol;\n \t\t} else if (*tx_flags & I40E_TX_FLAGS_IPV6) {\n \t\t\t*cd_tunneling |= I40E_TX_CTX_EXT_IP_IPV6;\n+\n+\t\t\texthdr = ip.hdr + sizeof(*ip.v6);\n \t\t\tl4_proto = ip.v6->nexthdr;\n+\t\t\tif (l4.hdr != exthdr)\n+\t\t\t\tipv6_skip_exthdr(skb, exthdr - skb->data,\n+\t\t\t\t\t\t &l4_proto, &frag_off);\n \t\t}\n \n \t\t/* define outer transport */\n@@ -1687,8 +1694,13 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,\n \t\t\t*td_cmd |= I40E_TX_DESC_CMD_IIPT_IPV4;\n \t\t}\n \t} else if (*tx_flags & I40E_TX_FLAGS_IPV6) {\n-\t\tl4_proto = ip.v6->nexthdr;\n \t\t*td_cmd |= I40E_TX_DESC_CMD_IIPT_IPV6;\n+\n+\t\texthdr = ip.hdr + sizeof(*ip.v6);\n+\t\tl4_proto = ip.v6->nexthdr;\n+\t\tif (l4.hdr != exthdr)\n+\t\t\tipv6_skip_exthdr(skb, exthdr - skb->data,\n+\t\t\t\t\t &l4_proto, &frag_off);\n \t}\n \n \t/* Now set the td_offset for IP header length */\n", "prefixes": [ "next", "v3", "07/15" ] }