From 80c1d67b7c717bf4335266db9020e5b945405acc Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Sun, 4 Jan 2009 16:13:19 -0800 Subject: [PATCH] --- yaml --- r: 125942 b: refs/heads/master c: b530256d2e0f1a75fab31f9821129fff1bb49faa h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/core/dev.c | 2 ++ trunk/net/core/skbuff.c | 1 + trunk/net/ipv4/tcp.c | 5 +---- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 60194bc94a81..3ae53e892b86 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cfc3a44c3c32abe48898398d9a92e8524c976803 +refs/heads/master: b530256d2e0f1a75fab31f9821129fff1bb49faa diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index 09c66a449da6..1e1a68066457 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -2365,6 +2365,7 @@ static int napi_gro_complete(struct sk_buff *skb) } out: + skb_shinfo(skb)->gso_size = 0; __skb_push(skb, -skb_network_offset(skb)); return netif_receive_skb(skb); } @@ -2446,6 +2447,7 @@ int napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) } NAPI_GRO_CB(skb)->count = 1; + skb_shinfo(skb)->gso_size = skb->len; skb->next = napi->gro_list; napi->gro_list = skb; diff --git a/trunk/net/core/skbuff.c b/trunk/net/core/skbuff.c index b8d0abb26433..3aafb10325b8 100644 --- a/trunk/net/core/skbuff.c +++ b/trunk/net/core/skbuff.c @@ -2613,6 +2613,7 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb) *NAPI_GRO_CB(nskb) = *NAPI_GRO_CB(p); skb_shinfo(nskb)->frag_list = p; + skb_shinfo(nskb)->gso_size = skb_shinfo(p)->gso_size; skb_header_release(p); nskb->prev = p; diff --git a/trunk/net/ipv4/tcp.c b/trunk/net/ipv4/tcp.c index f28acf11fc67..4d655e945413 100644 --- a/trunk/net/ipv4/tcp.c +++ b/trunk/net/ipv4/tcp.c @@ -2519,9 +2519,7 @@ struct sk_buff **tcp_gro_receive(struct sk_buff **head, struct sk_buff *skb) flush |= memcmp(th + 1, th2 + 1, thlen - sizeof(*th)); total = p->len; - mss = total; - if (skb_shinfo(p)->frag_list) - mss = skb_shinfo(p)->frag_list->len; + mss = skb_shinfo(p)->gso_size; flush |= skb->len > mss || skb->len <= 0; flush |= ntohl(th2->seq) + total != ntohl(th->seq); @@ -2557,7 +2555,6 @@ int tcp_gro_complete(struct sk_buff *skb) skb->csum_offset = offsetof(struct tcphdr, check); skb->ip_summed = CHECKSUM_PARTIAL; - skb_shinfo(skb)->gso_size = skb_shinfo(skb)->frag_list->len; skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count; if (th->cwr)