diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 480373c960cd..bae7231096cf 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -5227,6 +5227,8 @@ static void __tcp_ack_snd_check(struct sock *sk, int ofo_possible) { struct tcp_sock *tp = tcp_sk(sk); unsigned long rtt, delay; + struct sock *meta_sk = mptcp(tp) ? mptcp_meta_sk(sk) : sk; + struct tcp_sock *meta_tp = tcp_sk(meta_sk); /* More than one full frame received... */ if (((tp->rcv_nxt - tp->rcv_wup) > inet_csk(sk)->icsk_ack.rcv_mss & @@ -5268,6 +5268,6 @@ * we have not received enough bytes to satisfy the condition. */ - (tp->rcv_nxt - tp->copied_seq < sk->sk_rcvlowat || + (meta_tp->rcv_nxt - meta_tp->copied_seq < meta_sk->sk_rcvlowat || tp->ops->__select_window(sk) >= tp->rcv_wnd)) || /* We ACK each frame or... */ tcp_in_quickack_mode(sk) ||