MPTCP Linux Development
 help / color / mirror / Atom feed
* [PATCH v2 mptcp-next 00/13] mptcp: get rid of msk->subflow
@ 2023-07-14 11:29 Paolo Abeni
  2023-07-14 11:29 ` [PATCH v2 mptcp-next 01/13] mptcp: avoid unneeded mptcp_token_destroy() calls Paolo Abeni
                   ` (14 more replies)
  0 siblings, 15 replies; 20+ messages in thread
From: Paolo Abeni @ 2023-07-14 11:29 UTC (permalink / raw)
  To: mptcp

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

That lead to several ill side effects, beyond the quite unfortunate/
confusing field name
- active and passive sockets behavior is incosistent, as only active
  ones have 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()

This series 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 sistematically removed from the mptcp protocol,
replacing it with direct msk->first usage, eventually introducing new
core helpers as needed.

The final patch finally dispose the field, and it's the only patch in
the series intened to produce functional changes.

v1 -> v2:
 - dropped first patch (already applied)
 - a bunch of typos and comments, the only patches with code changes
   are 7/13, 9/13, 13/13, see the individual changelog for the
   details.

Paolo Abeni (13):
  mptcp: avoid unneeded mptcp_token_destroy() calls
  mptcp: avoid additional __inet_stream_connect() call
  mptcp: avoid subflow socket usage in mptcp_get_port()
  net: factor out inet{,6}_bind_sk helpers
  mptcp: mptcp: avoid additional indirection in mptcp_bind()
  net: factor out __inet_listen_sk() helper
  mptcp: avoid additional indirection in mptcp_listen()
  mptcp: avoid additional indirection in mptcp_poll()
  mptcp: avoid unneeded indirection in mptcp_stream_accept()
  mptcp: avoid additional indirection in sockopt
  mptcp: avoid ssock usage in mptcp_pm_nl_create_listen_socket()
  mptcp: change the mpc check helper to return a sk
  mptcp: get rid of msk->subflow

 include/net/inet_common.h |   2 +
 include/net/ipv6.h        |   1 +
 net/ipv4/af_inet.c        |  46 ++++++----
 net/ipv6/af_inet6.c       |  10 ++-
 net/mptcp/pm_netlink.c    |  30 ++++---
 net/mptcp/protocol.c      | 177 +++++++++++++++++++-------------------
 net/mptcp/protocol.h      |  15 ++--
 net/mptcp/sockopt.c       |  65 +++++++-------
 8 files changed, 181 insertions(+), 165 deletions(-)

-- 
2.41.0


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2023-07-17 13:58 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-14 11:29 [PATCH v2 mptcp-next 00/13] mptcp: get rid of msk->subflow Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 01/13] mptcp: avoid unneeded mptcp_token_destroy() calls Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 02/13] mptcp: avoid additional __inet_stream_connect() call Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 03/13] mptcp: avoid subflow socket usage in mptcp_get_port() Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 04/13] net: factor out inet{,6}_bind_sk helpers Paolo Abeni
2023-07-14 23:21   ` Mat Martineau
2023-07-14 11:29 ` [PATCH v2 mptcp-next 05/13] mptcp: mptcp: avoid additional indirection in mptcp_bind() Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 06/13] net: factor out __inet_listen_sk() helper Paolo Abeni
2023-07-14 23:21   ` Mat Martineau
2023-07-14 11:29 ` [PATCH v2 mptcp-next 07/13] mptcp: avoid additional indirection in mptcp_listen() Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 08/13] mptcp: avoid additional indirection in mptcp_poll() Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 09/13] mptcp: avoid unneeded indirection in mptcp_stream_accept() Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 10/13] mptcp: avoid additional indirection in sockopt Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 11/13] mptcp: avoid ssock usage in mptcp_pm_nl_create_listen_socket() Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 12/13] mptcp: change the mpc check helper to return a sk Paolo Abeni
2023-07-14 11:29 ` [PATCH v2 mptcp-next 13/13] mptcp: get rid of msk->subflow Paolo Abeni
2023-07-14 12:57   ` mptcp: get rid of msk->subflow: Tests Results MPTCP CI
2023-07-15  0:25   ` MPTCP CI
2023-07-14 23:20 ` [PATCH v2 mptcp-next 00/13] mptcp: get rid of msk->subflow Mat Martineau
2023-07-17 13:58 ` Matthieu Baerts

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox