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: 8+ 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
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 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.