As outlined in the public mtg, mptcp_accept() is currently quite
suboptimal, both from performance and code complexity
This series tries to clean it up, enforcing a wider lifetime for
the initial subflow, so that we don't need to acquire additional
references there.
To reach such goal we need to properly define the disconnect()
behavior, which is currently quite incomplete. Additionally allow
user-space to really disconnect established connections.
Disconnect() needs in turn an egress FASTCLOSE implementation,
added here according to option R (reset - the simpler form).
Finally, the self-tests need as pre-req Florian's patches implementing
SIOCOUTQ
RFC -> v1:
- added patches 1/7, 3/7, 6/7, 7/7
- added a few missing bits in patch 4/7
Paolo Abeni (7):
mptcp: keep snd_una updated for fallback socket
mptcp: never allow the PM to close a listener subflow
mptcp: implement fastclose xmit path
mptcp: full disconnect implementation
mptcp: cleanup accept and poll
mptcp: implement support for user-space disconnect
mptcp: add disconnect selftests
net/mptcp/options.c | 57 +++++--
net/mptcp/pm.c | 10 +-
net/mptcp/pm_netlink.c | 3 +
net/mptcp/protocol.c | 144 ++++++++++++------
net/mptcp/protocol.h | 16 +-
net/mptcp/subflow.c | 1 -
net/mptcp/token.c | 1 +
.../selftests/net/mptcp/mptcp_connect.c | 119 +++++++++++++--
.../selftests/net/mptcp/mptcp_connect.sh | 38 ++++-
9 files changed, 304 insertions(+), 85 deletions(-)
--
2.33.1