* [PATCH net-next] gre_offload: simplify GRE header length calculation in gre_gso_segment()
@ 2014-01-10 1:47 Neal Cardwell
2014-01-10 2:09 ` Eric Dumazet
0 siblings, 1 reply; 3+ messages in thread
From: Neal Cardwell @ 2014-01-10 1:47 UTC (permalink / raw)
To: David Miller
Cc: netdev, Neal Cardwell, Eric Dumazet, H.K. Jerry Chu,
Pravin B Shelar
Simplify the GRE header length calculation in gre_gso_segment().
Switch to an approach that is simpler, faster, and more general. The
new approach will continue to be correct even if we add support for
the optional variable-length routing info that may be present in a GRE
header.
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: H.K. Jerry Chu <hkchu@google.com>
Cc: Pravin B Shelar <pshelar@nicira.com>
---
net/ipv4/gre_offload.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/net/ipv4/gre_offload.c b/net/ipv4/gre_offload.c
index 746a7b1..f6604b6 100644
--- a/net/ipv4/gre_offload.c
+++ b/net/ipv4/gre_offload.c
@@ -26,7 +26,7 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb,
{
struct sk_buff *segs = ERR_PTR(-EINVAL);
netdev_features_t enc_features;
- int ghl = GRE_HEADER_SECTION;
+ int ghl;
struct gre_base_hdr *greh;
u16 mac_offset = skb->mac_header;
int mac_len = skb->mac_len;
@@ -49,15 +49,11 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb,
greh = (struct gre_base_hdr *)skb_transport_header(skb);
- if (greh->flags & GRE_KEY)
- ghl += GRE_HEADER_SECTION;
- if (greh->flags & GRE_SEQ)
- ghl += GRE_HEADER_SECTION;
- if (greh->flags & GRE_CSUM) {
- ghl += GRE_HEADER_SECTION;
- csum = true;
- } else
- csum = false;
+ ghl = skb_inner_network_header(skb) - skb_transport_header(skb);
+ if (unlikely(ghl < sizeof(*greh)))
+ goto out;
+
+ csum = !!(greh->flags & GRE_CSUM);
if (unlikely(!pskb_may_pull(skb, ghl)))
goto out;
--
1.8.5.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH net-next] gre_offload: simplify GRE header length calculation in gre_gso_segment()
2014-01-10 1:47 [PATCH net-next] gre_offload: simplify GRE header length calculation in gre_gso_segment() Neal Cardwell
@ 2014-01-10 2:09 ` Eric Dumazet
2014-01-13 19:54 ` David Miller
0 siblings, 1 reply; 3+ messages in thread
From: Eric Dumazet @ 2014-01-10 2:09 UTC (permalink / raw)
To: Neal Cardwell
Cc: David Miller, netdev, Eric Dumazet, H.K. Jerry Chu,
Pravin B Shelar
On Thu, 2014-01-09 at 20:47 -0500, Neal Cardwell wrote:
> Simplify the GRE header length calculation in gre_gso_segment().
> Switch to an approach that is simpler, faster, and more general. The
> new approach will continue to be correct even if we add support for
> the optional variable-length routing info that may be present in a GRE
> header.
>
> Signed-off-by: Neal Cardwell <ncardwell@google.com>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: H.K. Jerry Chu <hkchu@google.com>
> Cc: Pravin B Shelar <pshelar@nicira.com>
> ---
Acked-by: Eric Dumazet <edumazet@google.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] gre_offload: simplify GRE header length calculation in gre_gso_segment()
2014-01-10 2:09 ` Eric Dumazet
@ 2014-01-13 19:54 ` David Miller
0 siblings, 0 replies; 3+ messages in thread
From: David Miller @ 2014-01-13 19:54 UTC (permalink / raw)
To: eric.dumazet; +Cc: ncardwell, netdev, edumazet, hkchu, pshelar
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Thu, 09 Jan 2014 18:09:18 -0800
> On Thu, 2014-01-09 at 20:47 -0500, Neal Cardwell wrote:
>> Simplify the GRE header length calculation in gre_gso_segment().
>> Switch to an approach that is simpler, faster, and more general. The
>> new approach will continue to be correct even if we add support for
>> the optional variable-length routing info that may be present in a GRE
>> header.
>>
>> Signed-off-by: Neal Cardwell <ncardwell@google.com>
>> Cc: Eric Dumazet <edumazet@google.com>
>> Cc: H.K. Jerry Chu <hkchu@google.com>
>> Cc: Pravin B Shelar <pshelar@nicira.com>
>> ---
>
> Acked-by: Eric Dumazet <edumazet@google.com>
Applied, thank you.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-01-13 19:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-10 1:47 [PATCH net-next] gre_offload: simplify GRE header length calculation in gre_gso_segment() Neal Cardwell
2014-01-10 2:09 ` Eric Dumazet
2014-01-13 19:54 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox