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.
v3:
- include tclass patches.
- I also included three NVMe patches here because they have dependencies.
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 (8):
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 helper
nvme-fabrics: add IPv6 traffic class option
nvme-tcp: support IPv6 traffic class
nvmet-tcp: support IPv6 traffic class
mptcp: copy the subflow's tos/tclass to the msk on accept
drivers/nvme/host/fabrics.c | 18 ++++++++++
drivers/nvme/host/fabrics.h | 3 ++
drivers/nvme/host/tcp.c | 5 ++-
drivers/nvme/target/tcp.c | 14 ++++++--
include/net/ipv6.h | 3 ++
net/ipv6/ipv6_sockglue.c | 31 ++++++++++++-----
net/mptcp/protocol.c | 11 ++++++
net/mptcp/sockopt.c | 68 +++++++++++++++++++++++++++++++++++--
8 files changed, 138 insertions(+), 15 deletions(-)
--
2.53.0