aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c7
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. */