From: Edward Cree <ecree@solarflare.com>
To: David Miller <davem@davemloft.net>
Cc: <netdev@vger.kernel.org>, <linux-net-drivers@solarflare.com>,
<tom@herbertland.com>, <alexander.duyck@gmail.com>
Subject: [PATCH net-next 6/8] net: gre: Implement LCO for GRE over IPv4
Date: Fri, 5 Feb 2016 20:42:45 +0000 [thread overview]
Message-ID: <56B50945.40109@solarflare.com> (raw)
In-Reply-To: <56B50886.1050201@solarflare.com>
Signed-off-by: Edward Cree <ecree@solarflare.com>
---
net/ipv4/ip_gre.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 7c51c4e..9b31532 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -440,6 +440,17 @@ drop:
return 0;
}
+static __sum16 gre_checksum(struct sk_buff *skb)
+{
+ __wsum csum;
+
+ if (skb->ip_summed == CHECKSUM_PARTIAL)
+ csum = lco_csum(skb);
+ else
+ csum = skb_checksum(skb, 0, skb->len, 0);
+ return csum_fold(csum);
+}
+
static void build_header(struct sk_buff *skb, int hdr_len, __be16 flags,
__be16 proto, __be32 key, __be32 seq)
{
@@ -467,8 +478,7 @@ static void build_header(struct sk_buff *skb, int hdr_len, __be16 flags,
!(skb_shinfo(skb)->gso_type &
(SKB_GSO_GRE | SKB_GSO_GRE_CSUM))) {
*ptr = 0;
- *(__sum16 *)ptr = csum_fold(skb_checksum(skb, 0,
- skb->len, 0));
+ *(__sum16 *)ptr = gre_checksum(skb);
}
}
}
@@ -493,7 +503,7 @@ static void __gre_xmit(struct sk_buff *skb, struct net_device *dev,
static struct sk_buff *gre_handle_offloads(struct sk_buff *skb,
bool csum)
{
- return iptunnel_handle_offloads(skb, csum,
+ return iptunnel_handle_offloads(skb, false,
csum ? SKB_GSO_GRE_CSUM : SKB_GSO_GRE);
}
next prev parent reply other threads:[~2016-02-05 20:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-05 20:39 [PATCH v4 net-next 0/8] Local Checksum Offload Edward Cree
2016-02-05 20:40 ` [PATCH net-next 1/8] net: local checksum offload for encapsulation Edward Cree
2016-02-05 20:41 ` [PATCH net-next 2/8] net: udp: always set up for CHECKSUM_PARTIAL offload Edward Cree
2016-02-05 20:41 ` [PATCH net-next 3/8] net: enable LCO for udp_tunnel_handle_offloads() users Edward Cree
2016-02-05 20:42 ` [PATCH net-next 4/8] net: vxlan: enable local checksum offload Edward Cree
2016-02-05 20:42 ` [PATCH net-next 5/8] fou: enable LCO in FOU and GUE Edward Cree
2016-02-05 20:42 ` Edward Cree [this message]
2016-02-05 20:42 ` [PATCH net-next 7/8] net: ip_tunnel: remove 'csum_help' argument to iptunnel_handle_offloads Edward Cree
2016-02-05 20:43 ` [PATCH net-next 8/8] Documentation/networking: add checksum-offloads.txt to explain LCO Edward Cree
2016-02-11 12:29 ` [PATCH v4 net-next 0/8] Local Checksum Offload David Miller
-- strict thread matches above, loose matches on Subject: below --
2016-01-08 19:44 [PATCH v3 " Edward Cree
2016-01-08 19:47 ` [PATCH net-next 6/8] net: gre: Implement LCO for GRE over IPv4 Edward Cree
2016-01-11 10:09 ` David Laight
2016-01-11 13:21 ` Edward Cree
2016-01-11 18:39 ` Alexander Duyck
2016-01-11 19:02 ` Edward Cree
2016-01-20 19:11 ` Rustad, Mark D
2016-01-20 19:35 ` Alexander Duyck
2016-01-20 19:58 ` Tom Herbert
2016-01-20 21:13 ` Alexander Duyck
2016-01-20 23:34 ` Rustad, Mark D
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56B50945.40109@solarflare.com \
--to=ecree@solarflare.com \
--cc=alexander.duyck@gmail.com \
--cc=davem@davemloft.net \
--cc=linux-net-drivers@solarflare.com \
--cc=netdev@vger.kernel.org \
--cc=tom@herbertland.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.