MPTCP Linux Development
 help / color / mirror / Atom feed
* [PATCH mptcp-next v4 00/10] Fix socket options used by NVMe over MPTCP
@ 2026-07-30  2:53 Geliang Tang
  2026-07-30  2:53 ` [PATCH mptcp-next v4 01/10] mptcp: preserve msk's sk_bound_dev_if on PM-default subflows Geliang Tang
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Geliang Tang @ 2026-07-30  2:53 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

From: Geliang Tang <tanggeliang@kylinos.cn>

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, and adds tclass support for it.

v4:
 - patch 1: skip ssk->sk_bound_dev_if = local->ifindex when local->ifindex
   is 0, so __mptcp_subflow_connect() doesn't overwrite the inherited
   SO_BINDTODEVICE binding.
 - patch 4: assign tcp_sock_set_syncnt()'s return to ret so an invalid
   TCP_SYNCNT is propagated, not silently dropped.
 - patch 6: skip IPV6_TCLASS setsockopt/getsockopt paths on AF_INET
   sockets/subflows (inet6_sk is NULL there).
 - patch 7: treat IPv4-mapped IPv6 as AF_INET for the TOS/tclass path.
 - patch 9: gate ip6_sock_set_tclass() behind sk_family == AF_INET6 and
   IS_ENABLED(CONFIG_IPV6) to avoid IPv4 NULL-deref and link failure when
   CONFIG_IPV6 is off.
 - patch 10: gate tclass on sk_family, skip IPv6 branch for IPv4-mapped
   connections, wrap IPv6 in CONFIG_IPV6.

v3:
 - include tclass patches.
 - I also included three NVMe patches here because they have dependencies.
 - https://patchwork.kernel.org/project/mptcp/cover/cover.1785238723.git.tanggeliang@kylinos.cn/

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).
 - https://patchwork.kernel.org/project/mptcp/cover/cover.1785054808.git.tanggeliang@kylinos.cn/

v1:
 - https://patchwork.kernel.org/project/mptcp/cover/cover.1784985085.git.tanggeliang@kylinos.cn/

David 'equinox' Lamparter (1):
  mptcp: sockopt: implement IPV6_TCLASS

Geliang Tang (9):
  mptcp: preserve msk's sk_bound_dev_if on PM-default subflows
  mptcp: inherit sk_reuse/sk_reuseport on subflow creation
  mptcp: handle TCP_MAXSEG getsockopt in common case
  mptcp: add TCP_SYNCNT setsockopt/getsockopt
  ipv6: extract and export ip6_sock_set_tclass helpers
  mptcp: copy the subflow's tos/tclass to the msk on accept
  nvme-fabrics: add IPv6 traffic class option
  nvme-tcp: support IPv6 traffic class
  nvmet-tcp: support IPv6 traffic class

 drivers/nvme/host/fabrics.c | 18 +++++++++
 drivers/nvme/host/fabrics.h |  3 ++
 drivers/nvme/host/tcp.c     |  8 +++-
 drivers/nvme/target/tcp.c   |  8 ++++
 include/net/ipv6.h          |  3 ++
 net/ipv6/ipv6_sockglue.c    | 31 +++++++++++----
 net/mptcp/protocol.c        | 16 ++++++++
 net/mptcp/sockopt.c         | 76 +++++++++++++++++++++++++++++++++++--
 net/mptcp/subflow.c         | 10 ++++-
 9 files changed, 160 insertions(+), 13 deletions(-)

-- 
2.53.0


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

end of thread, other threads:[~2026-07-30  4:05 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-30  2:53 [PATCH mptcp-next v4 00/10] Fix socket options used by NVMe over MPTCP Geliang Tang
2026-07-30  2:53 ` [PATCH mptcp-next v4 01/10] mptcp: preserve msk's sk_bound_dev_if on PM-default subflows Geliang Tang
2026-07-30  2:53 ` [PATCH mptcp-next v4 02/10] mptcp: inherit sk_reuse/sk_reuseport on subflow creation Geliang Tang
2026-07-30  2:53 ` [PATCH mptcp-next v4 03/10] mptcp: handle TCP_MAXSEG getsockopt in common case Geliang Tang
2026-07-30  2:53 ` [PATCH mptcp-next v4 04/10] mptcp: add TCP_SYNCNT setsockopt/getsockopt Geliang Tang
2026-07-30  2:53 ` [PATCH mptcp-next v4 05/10] ipv6: extract and export ip6_sock_set_tclass helpers Geliang Tang
2026-07-30  2:53 ` [PATCH mptcp-next v4 06/10] mptcp: sockopt: implement IPV6_TCLASS Geliang Tang
2026-07-30  2:54 ` [PATCH mptcp-next v4 07/10] mptcp: copy the subflow's tos/tclass to the msk on accept Geliang Tang
2026-07-30  2:54 ` [PATCH mptcp-next v4 08/10] nvme-fabrics: add IPv6 traffic class option Geliang Tang
2026-07-30  2:54 ` [PATCH mptcp-next v4 09/10] nvme-tcp: support IPv6 traffic class Geliang Tang
2026-07-30  2:54 ` [PATCH mptcp-next v4 10/10] nvmet-tcp: " Geliang Tang
2026-07-30  4:05 ` [PATCH mptcp-next v4 00/10] Fix socket options used by NVMe over MPTCP MPTCP CI

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