Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: c76c6956566f ("mptcp: call tcp_cleanup_rbuf on subflows")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Paolo Abeni and committed by
David S. Miller
717f2034 8b0308fe

+4 -2
+4 -2
net/mptcp/protocol.c
··· 454 454 unsigned int moved = 0; 455 455 bool more_data_avail; 456 456 struct tcp_sock *tp; 457 + u32 old_copied_seq; 457 458 bool done = false; 458 459 459 460 pr_debug("msk=%p ssk=%p", msk, ssk); 460 461 tp = tcp_sk(ssk); 462 + old_copied_seq = tp->copied_seq; 461 463 do { 462 464 u32 map_remaining, offset; 463 465 u32 seq = tp->copied_seq; ··· 518 516 } while (more_data_avail); 519 517 520 518 *bytes += moved; 521 - if (moved) 522 - tcp_cleanup_rbuf(ssk, moved); 519 + if (tp->copied_seq != old_copied_seq) 520 + tcp_cleanup_rbuf(ssk, 1); 523 521 524 522 return done; 525 523 }