tcp: Optimise len/mss comparison
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 26 May 2009 18:50:26 +0000 (18:50 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 May 2009 10:26:00 +0000 (03:26 -0700)
Instead of checking len > mss || len == 0, we can accomplish
both by checking (len - 1) > mss using the unsigned wraparound.
At nearly a million times a second, this might just help.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp.c

index 313960e4cfdcc707c1d2e406ac59f1c4b98c9574..68342d431896779906c9cc2a0415db20b5ff0184 100644 (file)
@@ -2566,7 +2566,7 @@ found:
 
        mss = skb_shinfo(p)->gso_size;
 
-       flush |= (len > mss) | !len;
+       flush |= (len - 1) >= mss;
        flush |= (ntohl(th2->seq) + skb_gro_len(p)) ^ ntohl(th->seq);
 
        if (flush || skb_gro_receive(head, skb)) {