From nobody Mon Aug 24 20:41:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E0991E4BE for ; Sun, 26 Jul 2026 08:43:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055437; cv=none; b=CzE60weOF28AeBKh0TMhFV0YNAdVkyqKVXf/EYQtfcSYXpR8MuU3PVzevNl5ohEtehgN7/00gT+EVxrVTCtB+zMcmqHeDbFRc8GL9D1q3DCSsLdnDgaayD9bg3kKJZCBj7E4L82PjeWFlalzZsnnCzlmnCICT4xyDhttzCt7aGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055437; c=relaxed/simple; bh=wEPbJ1rvLTzOoEZHIcjcsCqUKLOo79w7SmtrJCkvHfc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=N3JpFaOFkTeiiDRqddsglLKoObHCp6dhYW76PNhz+yn8lZq3L0pqAcx4eioeaw5Acxn77DkShs/eTsFyjS1vHthq+I+VGwvpluuJOpFho+PzOfQfnsH1Q2IUWc4PavbLMJF++E5WaDa9QnMV5BNuaSe3E0qlTxK32sZepugW6fk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fio7X55o; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fio7X55o" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C83961F000E9; Sun, 26 Jul 2026 08:43:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785055436; bh=x1GoMDFx7cKDQbT4K+hhOX1Zw2kvjYO3Zq8GNvw2qDE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=fio7X55oKP+la6dveHy1mQSB2/pELBf16oe7S6f3y69Rqb3qUL27MFHwXgQZvuPRr L+9Q/0Tqo3qUgMpAdnf2CP74hMQidElTUbbYNuw6mcNcs01g6/BgtEWpJRhkDSK7iU 9qLSuNYNJCCjRv6uQkqw6TYkgsQAcn+wfu7WvVpYfpE2kV/UwZiVwFhBClStaxuqmt 5hRAzo6NA8CaRUmofu3iFWfdUSbETejsrnt7KDCQrnAieVt8y5OGxy9MMKOGMeNaWG P2zls+v9w3rTN+qRPmjbicPQKxlWMBAKcDSgiti0JlM9OOoW5avwIQf1m0ZPyLrRf7 1zfFIBXFYJ5mQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 1/5] mptcp: copy the subflow's tos to the msk on accept Date: Sun, 26 Jul 2026 16:43:40 +0800 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang mptcp_sk_clone_init() now copies both inet->tos and inet->rcv_tos from the first subflow onto the accepted msk, mirroring plain TCP's tcp_v4_syn_recv_sock() which sets both fields from ip_hdr(skb)->tos on the accepted socket. Without this, MP_JOIN'd subflows would inherit tos=3D0 from the msk and lose the peer's reflected value. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 954e20bb27de..1152f1d0c24f 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3699,6 +3699,9 @@ struct sock *mptcp_sk_clone_init(const struct sock *s= k, #endif mptcp_copy_ip_options(nsk, sk); =20 + inet_sk(nsk)->rcv_tos =3D inet_sk(ssk)->rcv_tos; + inet_sk(nsk)->tos =3D inet_sk(ssk)->tos; + msk =3D mptcp_sk(nsk); WRITE_ONCE(msk->local_key, subflow_req->local_key); WRITE_ONCE(msk->token, subflow_req->token); --=20 2.53.0 From nobody Mon Aug 24 20:41:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 438DD1E4BE for ; Sun, 26 Jul 2026 08:43:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055439; cv=none; b=GPGjr+AZTAWaogF8HLsW71rdz9QrogNXDVVTBn7kDwAZYDB7sL4Ok/XHxYn38uvr8IMRsvbF17E2/M3fBn2VpTCUoRu+qzthFh0l5xoavdCdFp9nyr6EnYJO49espxZ75a6vo4Mj10+IPmKJVKx2s0tnQYHzUR/wNqtdaQLN8ZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055439; c=relaxed/simple; bh=RkexuyUwDPzvOhvjEIHE26q9eZX4X/O3H2GLIME3Quk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rJ5XaZeeb5rk6UqUWWPIG//TznUHaHeyHySQIWr4HYBtp4FaREil7+UUmTTho8+tsGIhVq7h/uhbtukaxAHLJP/DuFFi+oRXuKfD/4z3DWCPbUs9BQQLXS6XBa3ORPh5LM+UyjKhOFggQukqUiti/EoR7rXZb2JGnAhiGnsIeGA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Gw/peGxU; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Gw/peGxU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A50AA1F00A3A; Sun, 26 Jul 2026 08:43:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785055437; bh=ZRvmQJTbiwMa/r7arSf176lVugsTHe3twDxh9Dla7Ag=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Gw/peGxUvdyuSycjCTRnNc7KbULCGMqtnADc7FP0PsusnjeuFXgu7+NbTZCOfMmgk EdyTRrejcFI/Gisx2j9X8MphDMUtRE3IoD5o0uHivk53r3ZkicfIGHwwjmZ0thlBfH 4IH9YzUpTy77SEsuVDhMlZd/4aitXzouN1eoifFg+jwR/F+M8DQZP0zFLOs5HTen57 wcNXEx8tD5iM0ALPbQ25svp+Myc70i7v00PlttgS4b3CTlNVNmFrwGhcX7wAjf62LN OoLFGVneyOlhA/S0QEyzspJVPZhem/d5ViaoosJkovu+m18XaXVQ0YQzVuVsseDVLi Xq70jmSPVZMLQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 2/5] mptcp: inherit sk_reuse/sk_reuseport on subflow creation Date: Sun, 26 Jul 2026 16:43:41 +0800 Message-ID: <650252e8ecf53c9d05aa808f95d7fa0fcf812c14.1785054808.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Propagate sk_reuse and sk_reuseport from the MPTCP master socket to newly-created subflows in sync_socket_options(), mirroring how sk_reuse and sk_reuseport are already handled for the subflow. Without this, a subflow started after the master toggled SO_REUSEADDR or SO_REUSEPORT would not inherit the setting, leading to inconsistent reuse semantics between msk and ssk. Signed-off-by: Geliang Tang --- net/mptcp/sockopt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index fcf6feb2a9eb..dc1ef52c2200 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -1601,6 +1601,9 @@ static void sync_socket_options(struct mptcp_sock *ms= k, struct sock *ssk) inet_assign_bit(FREEBIND, ssk, inet_test_bit(FREEBIND, sk)); inet_assign_bit(BIND_ADDRESS_NO_PORT, ssk, inet_test_bit(BIND_ADDRESS_NO_= PORT, sk)); WRITE_ONCE(inet_sk(ssk)->local_port_range, READ_ONCE(inet_sk(sk)->local_p= ort_range)); + + ssk->sk_reuse =3D sk->sk_reuse; + ssk->sk_reuseport =3D sk->sk_reuseport; } =20 void mptcp_sockopt_sync_locked(struct mptcp_sock *msk, struct sock *ssk) --=20 2.53.0 From nobody Mon Aug 24 20:41:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 086881E4BE for ; Sun, 26 Jul 2026 08:43:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055441; cv=none; b=UsrlXD3zRpS6BD7q9yTN9/yxZaqxs/RGWnGIoCbJ1vuLQPeRXoK8MP2HVC/f3vH1VSiP7oYVOiJp/FDKFWCPdUI6+BvThH7m64TpQ7BZL5QF5k/tGjsjy3i5f3uRQDXDjEe2MzgQvIDyuxvlw1/iMLzOMpM2s+jXF8Z4An3N318= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055441; c=relaxed/simple; bh=xtBl/Tz95UY7/F+kbIkRydgKZlWruc4owZAlKkZxKEI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UOIvff4hBdUsTujaKwsfNsO435LZEtVlAm/t8WJp+Hf5VX0f3+UIWPekDdRiXfWW30MgO/ctH9RRa71WfgLQaorFICSihLhjDGFP3KIm/FUDAVdb5Yirw2NFSdCX+Z1kr3m4Vqot/DzeVS7j99jmjnal3J0BgwZRpLwy5utAag0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WfbQ9dhq; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WfbQ9dhq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7BB861F000E9; Sun, 26 Jul 2026 08:43:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785055439; bh=rviDDAAHmbq+15ZqCWX3teAW6mgeVDyJ7c1+uJ1fwqQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=WfbQ9dhqqhZKrnBUgiHgNVoSY+b4TJExhNo2fs25NABpxJtVHGb7qrTYcV4eY7TU+ SZGoPYWHG/9nqOb14+OFkbExDQ4z1FotLoN/92qpFZk0fVQolvi5PnmAGX4OV4PB3I wEfma9vavNZ7TtpSmQWbI4LVasCwnlCoXyrI1OX+TpLJQM4ZZ8OqAxZI7n7pfrDuNd ozxP83nVBk2LbqW6OCD4Aczw+oSU5U63q8nAO0OKHwbL478apXGz1+wIvMXwnAck86 /nGlQjH9UkvuYeAnCf5TeNvhtKjSEyoputyMroiA8+8cKmZJhAzzcRvhkJW40Y+7+n jg2/inNkVGmmQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 3/5] mptcp: bump setsockopt_seq for subflow-only socket options Date: Sun, 26 Jul 2026 16:43:42 +0800 Message-ID: <7a5c6644d90bab98caebc4b6058eade77b893e4e.1785054808.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang mptcp_setsockopt_sol_socket()'s SO_REUSEPORT/SO_REUSEADDR/SO_BINDTODEVICE /SO_BINDTOIFINDEX case applies the option to the nmpc subflow and copies the result back onto msk, then early-returns without calling sockopt_seq_inc(msk). That leaves msk->setsockopt_seq unchanged, so any subflow created later (e.g. via MP_JOIN) inherits the master socket's seq at creation time, and mptcp_sockopt_sync_locked() sees 'seq matches' and skips sync_socket_options() entirely. As a result, the new subflow's sk_reuse /sk_reuseport/sk_bound_dev_if stay at the listener's default of 0 even though the nmpc subflow (and msk) have the right value. Bump the seq on this path so secondary subflows trigger the sync on join. The actual field propagation lives in sync_socket_options(); this commit only flips the trigger. Signed-off-by: Geliang Tang --- net/mptcp/sockopt.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index dc1ef52c2200..37e65923f544 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -326,6 +326,8 @@ static int mptcp_setsockopt_sol_socket(struct mptcp_soc= k *msk, int optname, sk->sk_bound_dev_if =3D ssk->sk_bound_dev_if; else if (optname =3D=3D SO_BINDTOIFINDEX) sk->sk_bound_dev_if =3D ssk->sk_bound_dev_if; + + sockopt_seq_inc(msk); } release_sock(sk); return ret; --=20 2.53.0 From nobody Mon Aug 24 20:41:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A48381E4BE for ; Sun, 26 Jul 2026 08:44:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055442; cv=none; b=HeQBN8ek82PRxGkOD72V4aWFN0D7DmvCiBNbJl3YMh4U5Vanwe7lcUZI8B3IjTX9tYPttj5kkiW/62cXjax/OPfJCHeNERbIO70Y3UXA3Lku5cik5f8RxQ/HfVxA4qVQOj+7vKkjD9Ic9lBrvq4cAqyObOSBmbEDj21Pr33rMq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055442; c=relaxed/simple; bh=VWnl9tXEVCx1Bqkhm0JTrDCOofPtTlO4d0/wdbJAF/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AykiC1zBSdF4UdbaYq2kYGEVSOBJo/n2JiI9U7rPKiRTnWZraXVA2agYsNpaLPHdhi9zdSlfxY+9bVKIMEaJKOdWM4TWPNT5AFbyRFZR0n5yKb6ftd+9er3fINg+7ef1rMUd0qIsxY60cLNq3r1qld/ixGYY21Yd661eVgj2j+4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jtw4j0P5; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jtw4j0P5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 55EB21F00A3A; Sun, 26 Jul 2026 08:44:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785055441; bh=pBHOcvVQYqhwDeKM+joklINVvMONYLtj+TdMspLA5vE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jtw4j0P5UU8y060cwQD3WImXTWFHyd2kbfBM0WorVW5yM7fzju0CTrZZsoD/Eg2Gf PWnKNrmawaQvjCuQtvFbXbcJ7PKc2lupq5bN26GRNkAF1wx/H3ZBg4k1bLWIYyo6fY yrCEb3g4NTg88mxdhFAvXoPY6NanaeVU1J4EKjh3OoXih6OByv9rET/LriUiPV74ez YyduWVz3VNSKhnqWDOjZ809JgipFSx1wHya0/Epxu1/C9OWR85ZnekTRpUkO7LOY8G 97BnJg2wCXKyhrfwyDLGzAL3WjfOeerAzn93aXgygnlcuSiQ3zykv7LGIle5YlNPmW CPHCQzGj620xQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 4/5] mptcp: handle TCP_MAXSEG getsockopt in common case Date: Sun, 26 Jul 2026 16:43:43 +0800 Message-ID: <3b1dc667970694cd28872829e7643e796913568b.1785054808.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang The TCP_MAXSEG getsockopt() case was a tail-clause returning mptcp_getsockopt_first_sf_only() while every other "first subflow only" option (TCP_FASTOPEN_*) was already grouped in the common case. Move it next to its peers so the dispatch reads uniformly. No behavioural change; the lookup still returns the cached MSS on the first subflow. Signed-off-by: Geliang Tang --- net/mptcp/sockopt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 37e65923f544..34f6cd9c7967 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -1425,6 +1425,7 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock= *msk, int optname, case TCP_FASTOPEN_CONNECT: case TCP_FASTOPEN_KEY: case TCP_FASTOPEN_NO_COOKIE: + case TCP_MAXSEG: return mptcp_getsockopt_first_sf_only(msk, SOL_TCP, optname, optval, optlen); case TCP_INQ: @@ -1449,9 +1450,6 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock= *msk, int optname, return mptcp_put_int_option(msk, optval, optlen, msk->notsent_lowat); case TCP_IS_MPTCP: return mptcp_put_int_option(msk, optval, optlen, 1); - case TCP_MAXSEG: - return mptcp_getsockopt_first_sf_only(msk, SOL_TCP, optname, - optval, optlen); } return -EOPNOTSUPP; } --=20 2.53.0 From nobody Mon Aug 24 20:41:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7F19A1E4BE for ; Sun, 26 Jul 2026 08:44:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055444; cv=none; b=EMkqTIFchG5y5PVMLxSjKkm1BxRGEonIoU3dNWx+WAG572mHLAoY18jGXZWHQqMwKW/pbUl1Bhwe6A2tc74Sd13k0V1cvlCaT+wumyOOhed74GtOhuRxlCi4jqpqTMzrF16g3/8kapWxfvaOnH5u0k7b7+SWiQGq+KTRm9gBW3A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785055444; c=relaxed/simple; bh=N/iL1qLsyw0M/bFA5RvGTUxBR7YGSADuZPL7VhUoUTk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aaBI8jaEmyT7hbPUw0+gISHr7053w2m2lszCQ0QGm0Dv1rN7+OpG5uNRMismoqeE9jdX/Un+xaL+2MTWLfwAStTYmV826YzLUcs8+DJy68BePeFQolN2/KM8mO9O7VBwgHT8xZIg1XppBwVF1FUd7jmbcMhXf2y4Q/DOF7tCTwA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cbBhOx41; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="cbBhOx41" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F0FA1F000E9; Sun, 26 Jul 2026 08:44:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785055443; bh=Sm6aDRPWiPNVWJxHPvSb+6Fu3H63njI2hWyWxESrdJ8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=cbBhOx41K83WrQtxr/JWYr/P0t2cA7Y9/hb7F8lRDYRdCKHmbNCwKUEk52n9i7PY1 0HulXigssMrDSTqTLpBxE3Z+V+4UO3R9kzzg069ojbwGLgmXKyuC83IweLw+L6Thpy tMihBNxdeg42yLUoG7mfukdtbR08/JIVx/upoqRzy4wrcD7rsHie/HwzHhlMV5YufJ OcFulOxY3LG9yLXGr0GK71DqoFy6IS8yc176KRIgfXiGCy1Vrlu8CPQnWT1Tm1l8Lp VnvDAKEv7oY1eyY8XgL6dNeW5qWemqXw1rdF+ltBBIK05DYficz9km3Imys7sm3xq0 NIAyMgcM21cYg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 5/5] mptcp: add TCP_SYNCNT setsockopt/getsockopt Date: Sun, 26 Jul 2026 16:43:44 +0800 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Surface TCP_SYNCNT to userspace on the MPTCP master socket. setsockopt(TCP_SYNCNT) validates the value via __mptcp_setsockopt_set_val() and stores it in inet_csk(sk)->icsk_syn_retries on the msk. getsockopt() reads the same field back. A newly created subflow picks up the master socket's syn_retries through sync_socket_options(), so the setting takes effect for outgoing SYNs without further plumbing. Signed-off-by: Geliang Tang --- net/mptcp/sockopt.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 34f6cd9c7967..6e4c5b5314af 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -898,6 +898,23 @@ static int mptcp_setsockopt_sol_tcp(struct mptcp_sock = *msk, int optname, ret =3D mptcp_setsockopt_all_sf(msk, SOL_TCP, optname, optval, optlen); break; + case TCP_SYNCNT: { + int syncnt; + + if (val < 1 || val > MAX_TCP_SYNCNT) { + ret =3D -EINVAL; + break; + } + + syncnt =3D val; + ret =3D __mptcp_setsockopt_set_val(msk, MAX_TCP_SYNCNT, + &tcp_sock_set_syncnt, + &syncnt, + val); + if (ret =3D=3D 0) + inet_csk(sk)->icsk_syn_retries =3D syncnt; + break; + } default: ret =3D -ENOPROTOOPT; } @@ -1450,6 +1467,10 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_soc= k *msk, int optname, return mptcp_put_int_option(msk, optval, optlen, msk->notsent_lowat); case TCP_IS_MPTCP: return mptcp_put_int_option(msk, optval, optlen, 1); + case TCP_SYNCNT: + return mptcp_put_int_option(msk, optval, optlen, + inet_csk(sk)->icsk_syn_retries ? : + READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_syn_retries)); } return -EOPNOTSUPP; } @@ -1604,6 +1625,11 @@ static void sync_socket_options(struct mptcp_sock *m= sk, struct sock *ssk) =20 ssk->sk_reuse =3D sk->sk_reuse; ssk->sk_reuseport =3D sk->sk_reuseport; + if (inet_csk(sk)->icsk_syn_retries > 0) { + if (tcp_sock_set_syncnt(ssk, inet_csk(sk)->icsk_syn_retries)) + pr_warn("Failed to sync TCP_SYNCNT=3D%u to subflow\n", + inet_csk(sk)->icsk_syn_retries); + } } =20 void mptcp_sockopt_sync_locked(struct mptcp_sock *msk, struct sock *ssk) --=20 2.53.0