From f9d9a86c9306f488d8e3b3cac5fdb2c2af72a9e4 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Fri, 17 Apr 2009 02:34:38 -0700 Subject: [PATCH] --- yaml --- r: 143871 b: refs/heads/master c: a0a69a0106dab8d20596f97f6674bed3b394d1ee h: refs/heads/master i: 143869: b4f208b2acd9b6dd4ed02754d0c4138c07d8a054 143867: 5583b705e6a2c1494e5424b7fb3d7a1abcd287bb 143863: 91ee3f6ffee8f12dfa3eaef3eda15621747a0686 143855: f4217f3c045bf0b1b2cb84f72372d320efec43e2 143839: 33b2550b0d62762eb68c502b1e1d5816b06ed5f1 143807: edc985ced86956e449dc6b5ca384afad7ab111e1 143743: dfe7ec4d0236e9df0804c0ef4c83fd9b456d20f5 143615: 643c9b909bd1b38b5f630b420a1eb54be8f4773f 143359: 808b3c9e30989b03e7757567bebd8f8dadb0602a v: v3 --- [refs] | 2 +- trunk/net/ipv4/tcp.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9ea3247ebdc2..ef43e5ec9e4e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9dd014eb9804f19d6230c3cbc10fa25f5416bda7 +refs/heads/master: a0a69a0106dab8d20596f97f6674bed3b394d1ee diff --git a/trunk/net/ipv4/tcp.c b/trunk/net/ipv4/tcp.c index fafbec8b073e..1d7f49c6f0ca 100644 --- a/trunk/net/ipv4/tcp.c +++ b/trunk/net/ipv4/tcp.c @@ -2511,6 +2511,7 @@ struct sk_buff **tcp_gro_receive(struct sk_buff **head, struct sk_buff *skb) struct sk_buff *p; struct tcphdr *th; struct tcphdr *th2; + unsigned int len; unsigned int thlen; unsigned int flags; unsigned int mss = 1; @@ -2531,6 +2532,7 @@ struct sk_buff **tcp_gro_receive(struct sk_buff **head, struct sk_buff *skb) skb_gro_pull(skb, thlen); + len = skb_gro_len(skb); flags = tcp_flag_word(th); for (; (p = *head); head = &p->next) { @@ -2561,7 +2563,7 @@ struct sk_buff **tcp_gro_receive(struct sk_buff **head, struct sk_buff *skb) mss = skb_shinfo(p)->gso_size; - flush |= (skb_gro_len(skb) > mss) | !skb_gro_len(skb); + flush |= (len > mss) | !len; flush |= (ntohl(th2->seq) + skb_gro_len(p)) ^ ntohl(th->seq); if (flush || skb_gro_receive(head, skb)) { @@ -2574,7 +2576,7 @@ struct sk_buff **tcp_gro_receive(struct sk_buff **head, struct sk_buff *skb) tcp_flag_word(th2) |= flags & (TCP_FLAG_FIN | TCP_FLAG_PSH); out_check_final: - flush = skb_gro_len(skb) < mss; + flush = len < mss; flush |= flags & (TCP_FLAG_URG | TCP_FLAG_PSH | TCP_FLAG_RST | TCP_FLAG_SYN | TCP_FLAG_FIN);