A subflow closed after an error is never re-created, even once the path
is back (#440).
v2 has no extra list or timer. The PM opens a new subflow to the same
addresses right away, and if it fails, the same socket is used for the
next try. A new sysctl, net.mptcp.subflow_retries, sets the max tries.
Is a sysctl fine, or should it be a netlink setting?
Patch 1: I saw the EAGAIN error only with the new tests, also with the
retries disabled.
Changes in v2:
- use the subflow sockets, no list or timer
- sysctl is now the max number of tries
- code moved to pm_kernel.c
- Fixes tag on patch 1
- one selftest with netfilter
- Assisted-by on all patches
v1: https://lore.kernel.org/mptcp/20261012171740.464517-1-anilkaushikwireless@gmail.com/
Anil Kaushik (3):
selftests: mptcp: connect: retry write() on EAGAIN
mptcp: pm: kernel: retry subflows closed after an error
selftests: mptcp: join: validate subflow retry after link failure
Documentation/networking/mptcp-sysctl.rst | 15 +++
net/mptcp/ctrl.c | 13 ++
net/mptcp/mib.c | 1 +
net/mptcp/mib.h | 1 +
net/mptcp/pm_kernel.c | 116 ++++++++++++++++++
net/mptcp/protocol.c | 9 ++
net/mptcp/protocol.h | 20 +++
net/mptcp/subflow.c | 53 ++++++++
.../selftests/net/mptcp/mptcp_connect.c | 8 ++
.../testing/selftests/net/mptcp/mptcp_join.sh | 90 ++++++++++++++
10 files changed, 326 insertions(+)
--
2.25.1