diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 367def6ddeda..d854363a4387 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -5026,9 +5026,12 @@ static void __tcp_ack_snd_check(struct sock *sk, int ofo_possible) | |||
5026 | /* More than one full frame received... */ | 5026 | /* More than one full frame received... */ |
5027 | if (((tp->rcv_nxt - tp->rcv_wup) > inet_csk(sk)->icsk_ack.rcv_mss && | 5027 | if (((tp->rcv_nxt - tp->rcv_wup) > inet_csk(sk)->icsk_ack.rcv_mss && |
5028 | /* ... and right edge of window advances far enough. | 5028 | /* ... and right edge of window advances far enough. |
5029 | * (tcp_recvmsg() will send ACK otherwise). Or... | 5029 | * (tcp_recvmsg() will send ACK otherwise). |
5030 | * If application uses SO_RCVLOWAT, we want send ack now if | ||
5031 | * we have not received enough bytes to satisfy the condition. | ||
5030 | */ | 5032 | */ |
5031 | __tcp_select_window(sk) >= tp->rcv_wnd) || | 5033 | (tp->rcv_nxt - tp->copied_seq < sk->sk_rcvlowat || |
5034 | __tcp_select_window(sk) >= tp->rcv_wnd)) || | ||
5032 | /* We ACK each frame or... */ | 5035 | /* We ACK each frame or... */ |
5033 | tcp_in_quickack_mode(sk) || | 5036 | tcp_in_quickack_mode(sk) || |
5034 | /* We have out of order data. */ | 5037 | /* We have out of order data. */ |