mptcp: handle pending data on closed subflow
authorPaolo Abeni <pabeni@redhat.com>
Fri, 13 Aug 2021 22:15:43 +0000 (15:15 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 14 Aug 2021 10:37:25 +0000 (11:37 +0100)
commit1e1d9d6f119c55c05e8ea78ed3e49046690abffd
tree07fc01f59aa4e5b1b69db83ad52002a8b655b0b3
parent71b7dec27f340c4ab90ef39ae096d8bb2e1c851c
mptcp: handle pending data on closed subflow

The PM can close active subflow, e.g. due to ingress RM_ADDR
option. Such subflow could carry data still unacked at the
MPTCP-level, both in the write and the rtx_queue, which has
never reached the other peer.

Currently the mptcp-level retransmission will deliver such data,
but at a very low rate (at most 1 DSM for each MPTCP rtx interval).

We can speed-up the recovery a lot, moving all the unacked in the
tcp write_queue, so that it will be pushed again via other
subflows, at the speed allowed by them.

Also make available the new helper for later patches.

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/207
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/options.c
net/mptcp/protocol.c
net/mptcp/protocol.h