Merge branch 'mptcp-stalled-connections-fix'
authorDavid S. Miller <davem@davemloft.net>
Mon, 18 Sep 2023 11:47:56 +0000 (12:47 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Sep 2023 11:47:56 +0000 (12:47 +0100)
commit972983fc3269de7e57990114f9a8bba87002c098
tree5508e79bbe28c99eba42653cd742e9b03e177951
parent8a47558a8c7329e91a58d89c55fc9b8c5beae76b
parent27e5ccc2d5a50ed61bb73153edb1066104b108b3
Merge branch 'mptcp-stalled-connections-fix'

Matthieu Baerts says:

====================
mptcp: fix stalled connections

Daire reported a few issues with MPTCP where some connections were
stalled in different states. Paolo did a great job fixing them.

Patch 1 fixes bogus receive window shrinkage with multiple subflows. Due
to a race condition and unlucky circumstances, that may lead to
TCP-level window shrinkage, and the connection being stalled on the
sender end.

Patch 2 is a preparation for patch 3 which processes pending subflow
errors on close. Without that and under specific circumstances, the
MPTCP-level socket might not switch to the CLOSE state and stall.

Patch 4 is also a preparation patch for the next one. Patch 5 fixes
MPTCP connections not switching to the CLOSE state when all subflows
have been closed but no DATA_FIN have been exchanged to explicitly close
the MPTCP connection. Now connections in such state will switch to the
CLOSE state after a timeout, still allowing the "make-after-break"
feature but making sure connections don't stall forever. It will be
possible to modify this timeout -- currently matching TCP TIMEWAIT value
(60 seconds) -- in a future version.
====================

Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>