Merge branch 'mptcp-remove-msk-subflow'
authorDavid S. Miller <davem@davemloft.net>
Mon, 14 Aug 2023 06:06:14 +0000 (07:06 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Aug 2023 06:06:14 +0000 (07:06 +0100)
commitafb0c19242a0c9a19fc2013dd1389b553acc0ede
tree38f5cc071c75fb501871cc62433adc699921900f
parentf614a29d6ca6962139b0eb36b985e3dda80258a6
parente263691773cd67d7c824eeee8b802f50c6e0c118
Merge branch 'mptcp-remove-msk-subflow'

Matthieu Baerts says:

====================
mptcp: get rid of msk->subflow

The MPTCP protocol maintains an additional struct socket per connection,
mainly to be able to easily use tcp-level struct socket operations.

This leads to several side effects, beyond the quite unfortunate /
confusing 'subflow' field name:

- active and passive sockets behaviour is inconsistent: only active ones
  have a not NULL msk->subflow, leading to different error handling and
  different error code returned to the user-space in several places.

- active sockets uses an unneeded, larger amount of memory

- passive sockets can't successfully go through accept(), disconnect(),
  accept() sequence, see [1] for more details.

The 13 first patches of this series are from Paolo and address all the
above, finally getting rid of the blamed field:

- The first patch is a minor clean-up.

- In the next 11 patches, msk->subflow usage is systematically removed
  from the MPTCP protocol, replacing it with direct msk->first usage,
  eventually introducing new core helpers when needed.

- The 13th patch finally disposes the field, and it's the only patch in
  the series intended to produce functional changes.

The last and 14th patch is from Kuniyuki and it is not linked to the
previous ones: it is a small clean-up to get rid of an unnecessary check
in mptcp_init_sock().

[1] https://github.com/multipath-tcp/mptcp_net-next/issues/290
====================

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