Commit ff9b5e0f08cb650d113eef0c654f931c0a7ae730

Authored by Herbert Xu
Committed by David S. Miller
1 parent 3015d5d4e5

[TCP]: Fix rcv mss estimate for LRO

By passing a Linux-generated TSO packet straight back into Linux, Xen
becomes our first LRO user :) Unfortunately, there is at least one spot
in our stack that needs to be changed to cope with this.

The receive MSS estimate is computed from the raw packet size.  This is
broken if the packet is GSO/LRO.  Fortunately the real MSS can be found
in gso_size so we simply need to use that if it is non-zero.

Real LRO NICs should of course set the gso_size field in future.

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

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

net/ipv4/tcp_input.c
... ... @@ -127,7 +127,7 @@
127 127 /* skb->len may jitter because of SACKs, even if peer
128 128 * sends good full-sized frames.
129 129 */
130   - len = skb->len;
  130 + len = skb_shinfo(skb)->gso_size ?: skb->len;
131 131 if (len >= icsk->icsk_ack.rcv_mss) {
132 132 icsk->icsk_ack.rcv_mss = len;
133 133 } else {