From: Geliang Tang <geliang@kernel.org>
To: mptcp@lists.linux.dev
Cc: Geliang Tang <tanggeliang@kylinos.cn>
Subject: [PATCH mptcp-next v6 0/6] Fix socket options used by NVMe over MPTCP
Date: Mon, 17 Aug 2026 11:57:07 +0800 [thread overview]
Message-ID: <cover.1786938892.git.tanggeliang@kylinos.cn> (raw)
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.
v6:
- Remove NVMe patches from this series.
- Remove v4-mapped address patches from this series.
- Squash "ipv6: extract and export ip6_sock_set_tclass helper" into
"mptcp: sockopt: implement IPV6_TCLASS".
- Patch 4: move tcp_sock_set_syncnt before __mptcp_setsockopt_set_val.
v5:
- Include Gang Yan's TCP_MAXSEG cleanup.
- Include two v4-mapped addr fixes.
- Patch 9, set rcv_flowinfo to 0 for v4-mapped addr.
- Patch 11, use rcv_flowinfo instead of np->tclass.
- All comments from Sashiko on v4 regarding "CONFIG_IPV6=m" are false
positives.
- https://patchwork.kernel.org/project/mptcp/cover/cover.1786159812.git.tanggeliang@kylinos.cn/
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.
- https://patchwork.kernel.org/project/mptcp/cover/cover.1785378180.git.tanggeliang@kylinos.cn/
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
Gang Yan (1):
mptcp: take TCP_MAXSEG handling into setsockopt_set_val
Geliang Tang (4):
mptcp: handle TCP_MAXSEG getsockopt in common case
mptcp: inherit sk_reuse and fix dev bind override
mptcp: add TCP_SYNCNT setsockopt/getsockopt
mptcp: copy subflow's tos/tclass to msk on accept
include/net/ipv6.h | 2 +
net/ipv6/ipv6_sockglue.c | 23 +++++++----
net/mptcp/protocol.c | 16 ++++++++
net/mptcp/sockopt.c | 82 +++++++++++++++++++++++++++++++++++++---
net/mptcp/subflow.c | 4 +-
5 files changed, 112 insertions(+), 15 deletions(-)
--
2.53.0
next reply other threads:[~2026-08-17 3:57 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-17 3:57 Geliang Tang [this message]
2026-08-17 3:57 ` [PATCH mptcp-next v6 1/6] mptcp: handle TCP_MAXSEG getsockopt in common case Geliang Tang
2026-08-17 3:57 ` [PATCH mptcp-next v6 2/6] mptcp: take TCP_MAXSEG handling into setsockopt_set_val Geliang Tang
2026-08-17 3:57 ` [PATCH mptcp-next v6 3/6] mptcp: inherit sk_reuse and fix dev bind override Geliang Tang
2026-08-17 3:57 ` [PATCH mptcp-next v6 4/6] mptcp: add TCP_SYNCNT setsockopt/getsockopt Geliang Tang
2026-08-17 3:57 ` [PATCH mptcp-next v6 5/6] mptcp: sockopt: implement IPV6_TCLASS Geliang Tang
2026-08-17 3:57 ` [PATCH mptcp-next v6 6/6] mptcp: copy subflow's tos/tclass to msk on accept Geliang Tang
2026-08-17 5:11 ` [PATCH mptcp-next v6 0/6] Fix socket options used by NVMe over MPTCP MPTCP CI
2026-08-18 8:23 ` Geliang Tang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1786938892.git.tanggeliang@kylinos.cn \
--to=geliang@kernel.org \
--cc=mptcp@lists.linux.dev \
--cc=tanggeliang@kylinos.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox