Commit 717f2034 authored by Paolo Abeni's avatar Paolo Abeni Committed by David S. Miller
Browse files

mptcp: don't skip needed ack



Currently we skip calling tcp_cleanup_rbuf() when packets
are moved into the OoO queue or simply dropped. In both
cases we still increment tp->copied_seq, and we should
ask the TCP stack to check for ack.

Fixes: c76c6956 ("mptcp: call tcp_cleanup_rbuf on subflows")
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
Reviewed-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8b0308fe
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -454,10 +454,12 @@ static bool __mptcp_move_skbs_from_subflow(struct mptcp_sock *msk,
	unsigned int moved = 0;
	bool more_data_avail;
	struct tcp_sock *tp;
	u32 old_copied_seq;
	bool done = false;

	pr_debug("msk=%p ssk=%p", msk, ssk);
	tp = tcp_sk(ssk);
	old_copied_seq = tp->copied_seq;
	do {
		u32 map_remaining, offset;
		u32 seq = tp->copied_seq;
@@ -516,8 +518,8 @@ static bool __mptcp_move_skbs_from_subflow(struct mptcp_sock *msk,
	} while (more_data_avail);

	*bytes += moved;
	if (moved)
		tcp_cleanup_rbuf(ssk, moved);
	if (tp->copied_seq != old_copied_seq)
		tcp_cleanup_rbuf(ssk, 1);

	return done;
}