Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/607471/?format=api
{ "id": 607471, "url": "http://patchwork.ozlabs.org/api/patches/607471/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1460044373-32747-1-git-send-email-jacob.e.keller@intel.com/", "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": "<1460044373-32747-1-git-send-email-jacob.e.keller@intel.com>", "list_archive_url": null, "date": "2016-04-07T15:52:53", "name": "[v2,4/4] fm10k: fix incorrect IPv6 extended header checksum", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "13f4c3a74825096d5061788fa4688c6d773fca5c", "submitter": { "id": 9784, "url": "http://patchwork.ozlabs.org/api/people/9784/?format=api", "name": "Jacob Keller", "email": "jacob.e.keller@intel.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/1460044373-32747-1-git-send-email-jacob.e.keller@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/607471/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/607471/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 fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ozlabs.org (Postfix) with ESMTP id 3qgnDl6MSTz9sBm\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 8 Apr 2016 01:53:11 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id F41AD8B188;\n\tThu, 7 Apr 2016 15:53:10 +0000 (UTC)", "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id z_LDIYAvt779; Thu, 7 Apr 2016 15:53:10 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 5592A842D4;\n\tThu, 7 Apr 2016 15:53:10 +0000 (UTC)", "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 4C0AC1C2CDA\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 7 Apr 2016 15:53:08 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 45DA583BC8\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 7 Apr 2016 15:53:08 +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 sqkPRU-sNkRL for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 7 Apr 2016 15:53:07 +0000 (UTC)", "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 8FA8A843F1\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 7 Apr 2016 15:53:07 +0000 (UTC)", "from fmsmga002.fm.intel.com ([10.253.24.26])\n\tby fmsmga103.fm.intel.com with ESMTP; 07 Apr 2016 08:52:55 -0700", "from jekeller-desk.amr.corp.intel.com (HELO\n\tjekeller-desk.jekeller.internal) ([134.134.3.173])\n\tby fmsmga002.fm.intel.com with ESMTP; 07 Apr 2016 08:52:55 -0700" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.24,449,1455004800\"; d=\"scan'208\";a=\"953836564\"", "From": "Jacob Keller <jacob.e.keller@intel.com>", "To": "Intel Wired LAN <intel-wired-lan@lists.osuosl.org>", "Date": "Thu, 7 Apr 2016 08:52:53 -0700", "Message-Id": "<1460044373-32747-1-git-send-email-jacob.e.keller@intel.com>", "X-Mailer": "git-send-email 2.8.1.102.ga49ec4a", "Subject": "[Intel-wired-lan] [PATCH v2 4/4] fm10k: fix incorrect IPv6 extended\n\theader checksum", "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>", "MIME-Version": "1.0", "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": "Check for and handle IPv6 extended headers so that tx checksum offload\ncan be done. Also use skb_checksum_help for unexpected cases. This was\noriginally discovered in ixgbe.\n\nReported-by: Mark Rustad <mark.d.rustad@intel.com>\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n\n- v2\n* Fixed up accidentally incorrect authorship\n* Added mention to Mark's original fix in ixgbe\n\nNone of the other patches in this series need to change.\n\nNotes:\n Testing-hints:\n Use the testing tool ipv6-exth program supplied by Mark Rustad to verify that\n ipv6 packets with extended headers get proper checksums. When using tcpdump,\n ensure that you only check receive traffic on the link partner, as tcpdump\n will report checksum errors for transmitted traffic if Tx checksum offloads\n are enabled.\n\n drivers/net/ethernet/intel/fm10k/fm10k_main.c | 25 ++++++++++++++++---------\n 1 file changed, 16 insertions(+), 9 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_main.c b/drivers/net/ethernet/intel/fm10k/fm10k_main.c\nindex b875f4243667..0e166e9c90c8 100644\n--- a/drivers/net/ethernet/intel/fm10k/fm10k_main.c\n+++ b/drivers/net/ethernet/intel/fm10k/fm10k_main.c\n@@ -820,6 +820,8 @@ static void fm10k_tx_csum(struct fm10k_ring *tx_ring,\n \t\tstruct ipv6hdr *ipv6;\n \t\tu8 *raw;\n \t} network_hdr;\n+\tu8 *transport_hdr;\n+\t__be16 frag_off;\n \t__be16 protocol;\n \tu8 l4_hdr = 0;\n \n@@ -837,9 +839,11 @@ static void fm10k_tx_csum(struct fm10k_ring *tx_ring,\n \t\t\tgoto no_csum;\n \t\t}\n \t\tnetwork_hdr.raw = skb_inner_network_header(skb);\n+\t\ttransport_hdr = skb_inner_transport_header(skb);\n \t} else {\n \t\tprotocol = vlan_get_protocol(skb);\n \t\tnetwork_hdr.raw = skb_network_header(skb);\n+\t\ttransport_hdr = skb_transport_header(skb);\n \t}\n \n \tswitch (protocol) {\n@@ -848,15 +852,17 @@ static void fm10k_tx_csum(struct fm10k_ring *tx_ring,\n \t\tbreak;\n \tcase htons(ETH_P_IPV6):\n \t\tl4_hdr = network_hdr.ipv6->nexthdr;\n+\t\tif (likely((transport_hdr - network_hdr.raw) ==\n+\t\t\t sizeof(struct ipv6hdr)))\n+\t\t\tbreak;\n+\t\tipv6_skip_exthdr(skb, network_hdr.raw - skb->data +\n+\t\t\t\t sizeof(struct ipv6hdr),\n+\t\t\t\t &l4_hdr, &frag_off);\n+\t\tif (unlikely(frag_off))\n+\t\t\tl4_hdr = NEXTHDR_FRAGMENT;\n \t\tbreak;\n \tdefault:\n-\t\tif (unlikely(net_ratelimit())) {\n-\t\t\tdev_warn(tx_ring->dev,\n-\t\t\t\t \"partial checksum but ip version=%x!\\n\",\n-\t\t\t\t protocol);\n-\t\t}\n-\t\ttx_ring->tx_stats.csum_err++;\n-\t\tgoto no_csum;\n+\t\tbreak;\n \t}\n \n \tswitch (l4_hdr) {\n@@ -869,9 +875,10 @@ static void fm10k_tx_csum(struct fm10k_ring *tx_ring,\n \tdefault:\n \t\tif (unlikely(net_ratelimit())) {\n \t\t\tdev_warn(tx_ring->dev,\n-\t\t\t\t \"partial checksum but l4 proto=%x!\\n\",\n-\t\t\t\t l4_hdr);\n+\t\t\t\t \"partial checksum, version=%d l4 proto=%x\\n\",\n+\t\t\t\t protocol, l4_hdr);\n \t\t}\n+\t\tskb_checksum_help(skb);\n \t\ttx_ring->tx_stats.csum_err++;\n \t\tgoto no_csum;\n \t}\n", "prefixes": [ "v2", "4/4" ] }