All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.