diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index dc151139b5afbe642a2b9245f3795dc5d688f0f1..688b95594f2e9de0f2724889855e470ce6aab376 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -1607,6 +1607,9 @@ u32 __tcp_select_window(struct sock *sk) */ if (window <= free_space - mss || window > free_space) window = (free_space/mss)*mss; + else if (mss == full_space && + free_space > window + full_space/2) + window = free_space; } return window;