[PATCH mptcp-next v2 0/5] Fix socket options used by NVMe over MPTCP

Geliang Tang <[email protected]> Sun, 26 Jul 2026 16:43:39 +0800
Newsgroups dev.linux.lists.mptcp
Message-ID <[email protected]>
From: Geliang Tang <[email protected]>

NVMe over MPTCP relies on SO_LINGER, SO_PRIORITY, SO_REUSEADDR, TCP_SYNCNT,
TCP_NODELAY, IP_TOS, and SO_BINDTODEVICE. This series contains fixes to
make all of them work correctly. Patch 4 is a cleanup needed by patch 5.

v2:
 - Drop "mptcp: don't reset dst when setting default 0 tos"
   and "selftests: mptcp: sockopt: cover LINGER, REUSEADDR,
   PRIORITY, NODELAY, SYNCNT": the 'if (val > 0)' guard
   blocked the legitimate "reset to 0" path, and the test
   only ran val_in=1, missing the SK_CAN_REUSE "any non-zero
   -> 1" normalization.
 - mptcp: bump setsockopt_seq for subflow-only socket options,
   so secondary subflows created via MP_JOIN re-sync
   sk_reuse / sk_reuseport / sk_bound_dev_if from msk.
 - mptcp: copy the subflow's TOS to the msk on accept
   (alongside the existing ssk->rcv_tos copy), so MP_JOIN'd
   subflows inherit the reflected outgoing TOS.
 - mptcp: propagate sk_reuseport to subflows via
   sync_socket_options, so secondary subflows inherit
   SO_REUSEPORT, not just SO_REUSEADDR.
 - mptcp: tighten TCP_SYNCNT bounds check
   ('val < 1 || val > MAX_TCP_SYNCNT'), so out-of-bounds
   values are rejected even when msk has no subflows yet
   (where __mptcp_setsockopt_set_val would otherwise return 0
   without invoking the set_val callback).

v1:
 - https://patchwork.kernel.org/project/mptcp/cover/[email protected]/

Geliang Tang (5):
  mptcp: copy the subflow's tos to the msk on accept
  mptcp: inherit sk_reuse/sk_reuseport on subflow creation
  mptcp: bump setsockopt_seq for subflow-only socket options
  mptcp: handle TCP_MAXSEG getsockopt in common case
  mptcp: add TCP_SYNCNT setsockopt/getsockopt

 net/mptcp/protocol.c |  3 +++
 net/mptcp/sockopt.c  | 35 ++++++++++++++++++++++++++++++++---
 2 files changed, 35 insertions(+), 3 deletions(-)

-- 
2.53.0