| From 2c1da79e03a2026caf4293d208c46702da35252b Mon Sep 17 00:00:00 2001 |
| From: Eric Dumazet <edumazet@google.com> |
| Date: Mon, 16 Apr 2012 23:28:07 +0000 |
| Subject: [PATCH 22/28] tcp: fix tcp_grow_window() for large incoming frames |
| |
| |
| From: Eric Dumazet <edumazet@google.com> |
| |
| [ Upstream commit 4d846f02392a710f9604892ac3329e628e60a230 ] |
| |
| tcp_grow_window() has to grow rcv_ssthresh up to window_clamp, allowing |
| sender to increase its window. |
| |
| tcp_grow_window() still assumes a tcp frame is under MSS, but its no |
| longer true with LRO/GRO. |
| |
| This patch fixes one of the performance issue we noticed with GRO on. |
| |
| Signed-off-by: Eric Dumazet <edumazet@google.com> |
| Cc: Neal Cardwell <ncardwell@google.com> |
| Cc: Tom Herbert <therbert@google.com> |
| Acked-by: Neal Cardwell <ncardwell@google.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ipv4/tcp_input.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/net/ipv4/tcp_input.c |
| +++ b/net/ipv4/tcp_input.c |
| @@ -333,6 +333,7 @@ static void tcp_grow_window(struct sock |
| incr = __tcp_grow_window(sk, skb); |
| |
| if (incr) { |
| + incr = max_t(int, incr, 2 * skb->len); |
| tp->rcv_ssthresh = min(tp->rcv_ssthresh + incr, |
| tp->window_clamp); |
| inet_csk(sk)->icsk_ack.quick |= 1; |