From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 D3645274FD3 for ; Fri, 12 Dec 2025 02:27:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506447; cv=none; b=s8Rw4QfECu1drRFB82x89SRACfQu5HaqJDB0CoIcaEKXyo4gv5UqV3uFJYg9Z7xYpiHOsgQfrOXs+Czf54Q4NNI0CJ4h6v/VPeJqur4H5TDXN8hCl4qdxmdh9pQbI0tF9AzpQ3oYQAxm1+RFr9WW63xp5rcum00MVI9vxYOtD/g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506447; c=relaxed/simple; bh=doqCdOWnbuuMH1gL6XRGNNKshbLTMO+Xw1nFQPZEv7Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YOP97ePvHHnZZjrdhVByeTEVfB08pCWxrWDT04i6ySjzCWfbWAihT+tZSnfAikYpwKgZ8bXu1Az4sR0eRBkqZORjL81H7nbOo18oZqlxcCWD+j9h3Hjx+EFZ+sb5USiG8jSphtExpDPfjjr2c8zUaIEDHQ6/mBNEeOO1y1HiebQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eYnOgY25; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eYnOgY25" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5D169C113D0; Fri, 12 Dec 2025 02:27:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506447; bh=doqCdOWnbuuMH1gL6XRGNNKshbLTMO+Xw1nFQPZEv7Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eYnOgY25eTvKalzhU31Nlq4UvNVCigEcw1YWZZqd/FFR6DIPOgFMoQXQyh6TZu4tz 7OYJ2EAJVW3DoTaZQIYOVveiZznx80v0JibA2KjWHkNOYkly6DZEWeLxO+2rpBKc6I ckSEC2QX1S9+iJ8Mn2tLycWNRWYSlwYGxjnhxOb1UNDZ7RL27B2kH1hbdHgtJ6X49Y +PqFOfB7cY3Vv3/neFSMNEIuHKo8Xhg0B67yrKsKwT3uigcIiWPbZn8snsU1J2odXv p5jaLwpjErHre8s+duHJPdZg4F4fway3G/LLQZ57GD6ug8n8IjvaVw/rDKtnTzxHox YojUxAd0DF0XA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [RFC mptcp-next v4 01/10] mptcp: add sk_is_msk helper Date: Fri, 12 Dec 2025 10:27:11 +0800 Message-ID: X-Mailer: git-send-email 2.51.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 This patch introduces a sk_is_msk() helper modeled after sk_is_tcp() to determine whether the socket is an MPTCP one. Unlike sk_is_mptcp(), which accepts a subflow socket as its parameter, this new helper specifically accepts an MPTCP socket parameter. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 4cf59e83c1c5..82660374859a 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -150,6 +150,13 @@ static inline bool rsk_drop_req(const struct request_s= ock *req) return tcp_rsk(req)->is_mptcp && tcp_rsk(req)->drop_req; } =20 +static inline bool sk_is_msk(const struct sock *sk) +{ + return sk_is_inet(sk) && + sk->sk_type =3D=3D SOCK_STREAM && + sk->sk_protocol =3D=3D IPPROTO_MPTCP; +} + void mptcp_space(const struct sock *ssk, int *space, int *full_space); bool mptcp_syn_options(struct sock *sk, const struct sk_buff *skb, unsigned int *size, struct mptcp_out_options *opts); @@ -258,6 +265,11 @@ static inline bool rsk_drop_req(const struct request_s= ock *req) return false; } =20 +static inline bool sk_is_msk(const struct sock *sk) +{ + return false; +} + static inline bool mptcp_syn_options(struct sock *sk, const struct sk_buff= *skb, unsigned int *size, struct mptcp_out_options *opts) --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 DD1C6287245 for ; Fri, 12 Dec 2025 02:27:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506449; cv=none; b=T90BJv2jiS0sKGqVrSieHWgvVHsbbB6aqBL9Yu9HZjdcE3x0oyQmDkn9uvVyb6T9dsM0SKNJsqLg6FjZBR48F3k/mTUKvhpDB0GAsxFv0kM9r6gHwHOL8DZIyHVVdQbsWkqC/8WMyD4qMcLrQyyk2bsVU2kSwauAw31/ndX7m6U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506449; c=relaxed/simple; bh=tPaghPmLGRJTUlN1s8E2PHNc3lFIXXRBgG0Ew/QGudE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=brr9HLhpUXsyTOqkGMfN384sR+C2/H+uBqOABllpCdH2HXo64gUjYRwUhKkPU71dXu5bBMI+Nxc71dDZf1NgKpBN/aI9xulon4s4kEyK1gk6/6BSH1NUmQ814QN3iFHjDQhjAVDrychvQdXFu0wreTf4Xb0ZjyC3o94Uj2wlSOo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SnpMHbMm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SnpMHbMm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1C072C113D0; Fri, 12 Dec 2025 02:27:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506449; bh=tPaghPmLGRJTUlN1s8E2PHNc3lFIXXRBgG0Ew/QGudE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SnpMHbMmmkRJNCtFD4FzDqFvXpyGll3EEPv8UydhNwtptFTNQqvlZqRyvib/7xJE1 WloASIe13r9Ji/v0ZCsrR+Lj+upQ99AuA+gcd1LfekTytqrMGoMq/ZPjFhqU9FkeHD M2xk9xO3rnyUt4nC0TQNyDCB57IN1uhQXQuCRDqm4st1E1i6UyOLS1FgSvWYwPGA2U cN29Ruhz8YWQmW2aiQ2GYrLa5KYLkGshfnFoKT3AxaqsqQXjBWyxzgo3fYK/rjt16u rRFdySaYrexC/aocE7L6oOdLOIBSk5nmWGZtc9dhOP+LJKtKP6L9Ez2Hee+35dm/x5 WpVdVaSn9d9rA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 02/10] tls: switch to MPTCP_SKB_CB Date: Fri, 12 Dec 2025 10:27:12 +0800 Message-ID: <31e6e239c93a18940f6332ae01186a2491bed62f.1765505775.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.51.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 To extend MPTCP support based on TCP TLS, corresponding MPTCP-specific macro MPTCP_SKB_CB() has been exported into net/mptcp.h. TLS implementation switches between the respective TCP and MPTCP macros based on the detected protocol. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- include/net/mptcp.h | 10 ++++++++++ net/mptcp/protocol.h | 10 ---------- net/tls/tls_strp.c | 8 ++++++-- net/tls/tls_sw.c | 4 +++- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 82660374859a..050c2e820fc4 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -132,6 +132,16 @@ struct mptcp_pm_ops { void (*release)(struct mptcp_sock *msk); } ____cacheline_aligned_in_smp; =20 +struct mptcp_skb_cb { + u64 map_seq; + u64 end_seq; + u32 offset; + u8 has_rxtstamp; + u8 cant_coalesce; +}; + +#define MPTCP_SKB_CB(__skb) ((struct mptcp_skb_cb *)&((__skb)->cb[0])) + #ifdef CONFIG_MPTCP void mptcp_init(void); =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index cd5266099993..75f2fd05ece4 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -125,16 +125,6 @@ #define MPTCP_SYNC_STATE 6 #define MPTCP_SYNC_SNDBUF 7 =20 -struct mptcp_skb_cb { - u64 map_seq; - u64 end_seq; - u32 offset; - u8 has_rxtstamp; - u8 cant_coalesce; -}; - -#define MPTCP_SKB_CB(__skb) ((struct mptcp_skb_cb *)&((__skb)->cb[0])) - static inline bool before64(__u64 seq1, __u64 seq2) { return (__s64)(seq1 - seq2) < 0; diff --git a/net/tls/tls_strp.c b/net/tls/tls_strp.c index 98e12f0ff57e..cdbcb07a52f8 100644 --- a/net/tls/tls_strp.c +++ b/net/tls/tls_strp.c @@ -439,7 +439,9 @@ static bool tls_strp_check_queue_ok(struct tls_strparse= r *strp) =20 first =3D skb_shinfo(strp->anchor)->frag_list; skb =3D first; - seq =3D TCP_SKB_CB(first)->seq; + seq =3D sk_is_msk(strp->sk) ? + MPTCP_SKB_CB(first)->map_seq : + TCP_SKB_CB(first)->seq; =20 /* Make sure there's no duplicate data in the queue, * and the decrypted status matches. @@ -449,7 +451,9 @@ static bool tls_strp_check_queue_ok(struct tls_strparse= r *strp) len -=3D skb->len; skb =3D skb->next; =20 - if (TCP_SKB_CB(skb)->seq !=3D seq) + if ((sk_is_msk(strp->sk) ? + MPTCP_SKB_CB(skb)->map_seq : + TCP_SKB_CB(skb)->seq) !=3D seq) return false; if (skb_cmp_decrypted(first, skb)) return false; diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 9937d4c810f2..c35c25abc40c 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -2489,7 +2489,9 @@ int tls_rx_msg_size(struct tls_strparser *strp, struc= t sk_buff *skb) } =20 tls_device_rx_resync_new_rec(strp->sk, data_len + TLS_HEADER_SIZE, - TCP_SKB_CB(skb)->seq + strp->stm.offset); + (sk_is_msk(strp->sk) ? + MPTCP_SKB_CB(skb)->map_seq : + TCP_SKB_CB(skb)->seq) + strp->stm.offset); return data_len + TLS_HEADER_SIZE; =20 read_failure: --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 8E19D274B2E for ; Fri, 12 Dec 2025 02:27:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506451; cv=none; b=mDIqCN8jsbnAyyj39FdpN5i7ajAnsSKgIkJ2xJeTCw/OIzZtPr1RTfkMKErU66/btk5SSSuMqJKQEqux2jrNZ3j065fd6cyDvdZ2BktVzTVSfJxcQwE8FUO08QL8nxpMfqeFqI7Z+dHm7BQ1VSyN6as4L2BpZtCCLpricC4wjhk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506451; c=relaxed/simple; bh=hmLpiN3dL0NAGpnfcAdxNKyTMuE/QkP93XjVbSIynAU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dC5o6xW5JIdtPg2MDTuGuzoRl1dNwAaaAKXgBVL0BlhNzZ4HV7cFMdcJ7Yip8rtkNDcj4UKvrceEltW1G5tIU45RHUoYwKnaV0/Q/oc8wzZqBNLOa7NgdY4RsAjAGXoJnAIsx9D6dSX9AjV9uVWyP1+Iijl7vvtyXlh/2Puw6A8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PCf5fM2n; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PCf5fM2n" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 17EE2C4CEF7; Fri, 12 Dec 2025 02:27:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506451; bh=hmLpiN3dL0NAGpnfcAdxNKyTMuE/QkP93XjVbSIynAU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PCf5fM2n2o6itCD5csh2pbu3sHa/QD/xGQPxe4NHGYtXFaO9lcMUgxHySJ/ABHY5Y O2bpnnnT2yPkjBIEQwuZs2Jas6zyYNU6AaJpOqq0upiCUfiNzecZiX3QSl/iNUGhSG HSND88rGIaM4U7Qdlj+ZU7+I8SQJ77oVnqPBBdSy5vl1B5yUVIpXxZjb/KJyEt0Upn VxIaqJqX3uIEJZTXYUD5WxLHXjq8cd+J1D6gF+a7wlYKnu7suBmUc+hLPy4Prd87dR dq3oS+DIXkuZ9bzuDt6ufn21KkQ7o5ZlYcHC2yqtLfZLC7PngUTiUMhvcitvHEL5TR aVi4fwFwlmOog== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 03/10] tls: switch to mptcp_inq Date: Fri, 12 Dec 2025 10:27:13 +0800 Message-ID: <32d096b7bd6aa7992f33d65e0dd5b1073d03fd80.1765505775.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.51.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 To extend MPTCP support based on TCP TLS, corresponding MPTCP-specific helper mptcp_inq() has been exported into net/mptcp.h. Note that there is a slight difference between mptcp_inq() and mptcp_inq_hint(), it does not return 1 when the socket is closed or shut down; instead, it returns 0. Otherwise, it would break the condition "inq < 1" in tls_strp_read_sock(). TLS implementation switches between the respective TCP and MPTCP helpers based on the detected protocol. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- include/net/mptcp.h | 7 +++++++ net/mptcp/protocol.c | 12 +++++++++++- net/tls/tls_strp.c | 8 ++++++-- net/tls/tls_sw.c | 4 +++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 050c2e820fc4..4c8e483fcc4b 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -254,6 +254,8 @@ static inline __be32 mptcp_reset_option(const struct sk= _buff *skb) } =20 void mptcp_active_detect_blackhole(struct sock *sk, bool expired); + +unsigned int mptcp_inq(const struct sock *sk); #else =20 static inline void mptcp_init(void) @@ -345,6 +347,11 @@ static inline struct request_sock *mptcp_subflow_reqsk= _alloc(const struct reques static inline __be32 mptcp_reset_option(const struct sk_buff *skb) { retu= rn htonl(0u); } =20 static inline void mptcp_active_detect_blackhole(struct sock *sk, bool exp= ired) { } + +static inline unsigned int mptcp_inq(const struct sock *sk) +{ + return 0; +} #endif /* CONFIG_MPTCP */ =20 #if IS_ENABLED(CONFIG_MPTCP_IPV6) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 334fdb10fdf3..82a3b3c70ad1 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2242,7 +2242,7 @@ static bool mptcp_move_skbs(struct sock *sk) return enqueued; } =20 -static unsigned int mptcp_inq_hint(const struct sock *sk) +unsigned int mptcp_inq(const struct sock *sk) { const struct mptcp_sock *msk =3D mptcp_sk(sk); const struct sk_buff *skb; @@ -2257,6 +2257,16 @@ static unsigned int mptcp_inq_hint(const struct sock= *sk) return (unsigned int)hint_val; } =20 + return 0; +} + +static unsigned int mptcp_inq_hint(const struct sock *sk) +{ + unsigned int inq =3D mptcp_inq(sk); + + if (inq) + return inq; + if (sk->sk_state =3D=3D TCP_CLOSE || (sk->sk_shutdown & RCV_SHUTDOWN)) return 1; =20 diff --git a/net/tls/tls_strp.c b/net/tls/tls_strp.c index cdbcb07a52f8..0639130b8d5e 100644 --- a/net/tls/tls_strp.c +++ b/net/tls/tls_strp.c @@ -494,7 +494,9 @@ bool tls_strp_msg_load(struct tls_strparser *strp, bool= force_refresh) DEBUG_NET_WARN_ON_ONCE(!strp->stm.full_len); =20 if (!strp->copy_mode && force_refresh) { - if (unlikely(tcp_inq(strp->sk) < strp->stm.full_len)) { + if (unlikely((sk_is_msk(strp->sk) ? + mptcp_inq(strp->sk) : + tcp_inq(strp->sk)) < strp->stm.full_len)) { WRITE_ONCE(strp->msg_ready, 0); memset(&strp->stm, 0, sizeof(strp->stm)); return false; @@ -517,7 +519,9 @@ static int tls_strp_read_sock(struct tls_strparser *str= p) { int sz, inq; =20 - inq =3D tcp_inq(strp->sk); + inq =3D sk_is_msk(strp->sk) ? + mptcp_inq(strp->sk) : + tcp_inq(strp->sk); if (inq < 1) return 0; =20 diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index c35c25abc40c..30ca332afe41 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -1958,7 +1958,9 @@ tls_read_flush_backlog(struct sock *sk, struct tls_pr= ot_info *prot, return false; =20 max_rec =3D prot->overhead_size - prot->tail_size + TLS_MAX_PAYLOAD_SIZE; - if (done - *flushed_at < SZ_128K && tcp_inq(sk) > max_rec) + if (done - *flushed_at < SZ_128K && (sk_is_msk(sk) ? + mptcp_inq(sk) : + tcp_inq(sk)) > max_rec) return false; =20 *flushed_at =3D done; --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 11B00280325 for ; Fri, 12 Dec 2025 02:27:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506454; cv=none; b=J0j/aSDZn4VHPzLOPLP4y6QyYE2HK31kOxvf3v2vf6O3eIeeSCjuuGdO5iiip75/boHYbkLZrlDOX6J02fyST2kEZwiBeianfEA0Dy2ncTGapVxU3bIARU6F6Q/KOq4h0mb7y4jGw6A/TES6ZgtfhFicUcfiLqmlAJ7LVU99DEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506454; c=relaxed/simple; bh=30WZMJrW/MDsMp6d1QZIUgVuLiZyeCvfaCRlhJzlCOs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=egHEWgBNlXG4ibvOm5wCD7Zgj18CGFyTWkF6H7kA4WktOznoGaDxe/HfOK/sdfEakU0AnpVDzjKPsbMFhVO2VmB1cuiVogSJBdSKi5jQJnznAm0XMtpkbNetCkAY6NYEjedi9Ibb6i4MrzwigWn/bdWahur+UdPRZXIgvkTTUKs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gpsg/iil; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gpsg/iil" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A8AEC113D0; Fri, 12 Dec 2025 02:27:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506453; bh=30WZMJrW/MDsMp6d1QZIUgVuLiZyeCvfaCRlhJzlCOs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gpsg/iil1vsvzJoHl++UrWtv07Cv7KO2NFCNfP6SAq5RRem2JkGOraKVpAEx4QAW4 JnJ53GwWyBIjRpt2t4Q1vUQwr05MX273kyUziWsX0Quo3TmC3mejMGkhPZ8HuLbG+J JOxanR69vF9+vb80tt1vwFZZnf8n8kxvm0btcelAQyunSyYwljz75f0rzpHqZ5f27w ORYYToHcqGg3lXI+eSIFGr/gfUQ6hn+Kb5xT//plX0ycBa7G5d4DE2xwQSUYMxrGXX uWtd1/AiTdipOyaQyc/mLnvY0Bmb2CJFQBTPTBiT3AlBeJ8a56Etzfn6ufuSlivvWV nYz5i3xMTvoZA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 04/10] tls: switch to mptcp_sendmsg_locked Date: Fri, 12 Dec 2025 10:27:14 +0800 Message-ID: X-Mailer: git-send-email 2.51.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 To extend MPTCP support based on TCP TLS, corresponding MPTCP-specific helper mptcp_sendmsg_locked() has been exported into net/mptcp.h. TLS implementation switches between the respective TCP and MPTCP helpers based on the detected protocol. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- include/net/mptcp.h | 8 ++++++++ net/mptcp/protocol.c | 16 ++++++++++++---- net/tls/tls_main.c | 4 +++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 4c8e483fcc4b..cdb726865486 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -256,6 +256,8 @@ static inline __be32 mptcp_reset_option(const struct sk= _buff *skb) void mptcp_active_detect_blackhole(struct sock *sk, bool expired); =20 unsigned int mptcp_inq(const struct sock *sk); + +int mptcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t len); #else =20 static inline void mptcp_init(void) @@ -352,6 +354,12 @@ static inline unsigned int mptcp_inq(const struct sock= *sk) { return 0; } + +static inline int mptcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, + size_t len) +{ + return 0; +} #endif /* CONFIG_MPTCP */ =20 #if IS_ENABLED(CONFIG_MPTCP_IPV6) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 82a3b3c70ad1..feac59a92b32 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1884,7 +1884,7 @@ static void mptcp_rps_record_subflows(const struct mp= tcp_sock *msk) } } =20 -static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) +int mptcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t len) { struct mptcp_sock *msk =3D mptcp_sk(sk); struct page_frag *pfrag; @@ -1895,8 +1895,6 @@ static int mptcp_sendmsg(struct sock *sk, struct msgh= dr *msg, size_t len) /* silently ignore everything else */ msg->msg_flags &=3D MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL | MSG_FASTOPEN; =20 - lock_sock(sk); - mptcp_rps_record_subflows(msk); =20 if (unlikely(inet_test_bit(DEFER_CONNECT, sk) || @@ -2004,7 +2002,6 @@ static int mptcp_sendmsg(struct sock *sk, struct msgh= dr *msg, size_t len) __mptcp_push_pending(sk, msg->msg_flags); =20 out: - release_sock(sk); return copied; =20 do_error: @@ -2015,6 +2012,17 @@ static int mptcp_sendmsg(struct sock *sk, struct msg= hdr *msg, size_t len) goto out; } =20 +static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) +{ + int ret; + + lock_sock(sk); + ret =3D mptcp_sendmsg_locked(sk, msg, len); + release_sock(sk); + + return ret; +} + static void mptcp_rcv_space_adjust(struct mptcp_sock *msk, int copied); =20 static void mptcp_eat_recv_skb(struct sock *sk, struct sk_buff *skb) diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c index 56ce0bc8317b..18c767b7388d 100644 --- a/net/tls/tls_main.c +++ b/net/tls/tls_main.c @@ -194,7 +194,9 @@ int tls_push_sg(struct sock *sk, bvec_set_page(&bvec, p, size, offset); iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, &bvec, 1, size); =20 - ret =3D tcp_sendmsg_locked(sk, &msg, size); + ret =3D sk_is_msk(sk) ? + mptcp_sendmsg_locked(sk, &msg, size) : + tcp_sendmsg_locked(sk, &msg, size); =20 if (ret !=3D size) { if (ret > 0) { --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 E884A7261E for ; Fri, 12 Dec 2025 02:27:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506456; cv=none; b=IOoAnee9OI6CGNpuzSI6g+olSfCebSzlbdJHKazyn7qnKFA51VZHc/ziu47ZZorM4589bcvb6cGNLieg8YCCS4m8r2D4TzO3O0vao+V407VOaXfEqLsMe9v2DV2wF7QLAa2jELDs0x0qydd9s12jtS9YGB2bmpr3AB2TYc2xSuA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506456; c=relaxed/simple; bh=ls47YC+lfCmfLAXQU+GID+bhSte7qT9N4Ef6qxZksI8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lnolgoMYhHqFRuscZWtKC7iS4+SUVG3ja2gtx3R4/iTb62BHKbWcN1f9xGWvmQ5mj0sD29gSuGYth0O1Cf5KpgfuKknCTHCqbCcMUt/DLg9KsAsbdG9osutHVYo4K2bLbc2CU9g6gdIXiPmQg2HdTmnx3XajuVDOHTfR+icAPiM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=J8IOS7Kh; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="J8IOS7Kh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40C4EC113D0; Fri, 12 Dec 2025 02:27:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506455; bh=ls47YC+lfCmfLAXQU+GID+bhSte7qT9N4Ef6qxZksI8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=J8IOS7KhvvgJFh9o5jEim8sc2zfz2CNDbH/JvQDr+1BoePIpmvLKsCWzSepHypYkL kxsM7kF5WIYMdtyodDA/voHH4J4FRZeX2+bAT5o3DleywUdnqLtz8wSH/Qafho4yE5 MZAkQB6Qg79x1Pn860Oa6eFd+Y5Sc9QxtyZtVwjd0tTXKHZsu8IsBZfeN0F8gO5dmo Nm3ni+yt/AXl1cOW9/t6RqoiYHuIYf3wtZAnBLiq7ccYBozfEaGRGugVxtOIdWHvDp V4YNlsQB9xCAqxYr8b1u31O3RGVW4xamL0OOBGAI6f9gKSSNkrea/Os4T5a0SoT3W2 F3sCCmgOiy83A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 05/10] tls: switch to mptcp_recv_skb Date: Fri, 12 Dec 2025 10:27:15 +0800 Message-ID: <19c737895c462fd53849197f1c19b00e93c12bb5.1765505775.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.51.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 To extend MPTCP support based on TCP TLS, corresponding MPTCP-specific helper mptcp_recv_skb() has been exported into net/mptcp.h. TLS implementation switches between the respective TCP and MPTCP helpers based on the detected protocol. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- include/net/mptcp.h | 7 +++++++ net/mptcp/protocol.c | 2 +- net/tls/tls_strp.c | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index cdb726865486..3fe60818cada 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -258,6 +258,8 @@ void mptcp_active_detect_blackhole(struct sock *sk, boo= l expired); unsigned int mptcp_inq(const struct sock *sk); =20 int mptcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t len); + +struct sk_buff *mptcp_recv_skb(struct sock *sk, u32 *off); #else =20 static inline void mptcp_init(void) @@ -360,6 +362,11 @@ static inline int mptcp_sendmsg_locked(struct sock *sk= , struct msghdr *msg, { return 0; } + +static inline struct sk_buff *mptcp_recv_skb(struct sock *sk, u32 *off) +{ + return NULL; +} #endif /* CONFIG_MPTCP */ =20 #if IS_ENABLED(CONFIG_MPTCP_IPV6) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index feac59a92b32..92141e87ed25 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -4340,7 +4340,7 @@ static __poll_t mptcp_poll(struct file *file, struct = socket *sock, return mask; } =20 -static struct sk_buff *mptcp_recv_skb(struct sock *sk, u32 *off) +struct sk_buff *mptcp_recv_skb(struct sock *sk, u32 *off) { struct mptcp_sock *msk =3D mptcp_sk(sk); struct sk_buff *skb; diff --git a/net/tls/tls_strp.c b/net/tls/tls_strp.c index 0639130b8d5e..3bddb871d90b 100644 --- a/net/tls/tls_strp.c +++ b/net/tls/tls_strp.c @@ -468,7 +468,9 @@ static void tls_strp_load_anchor_with_queue(struct tls_= strparser *strp, int len) struct sk_buff *first; u32 offset; =20 - first =3D tcp_recv_skb(strp->sk, tp->copied_seq, &offset); + first =3D sk_is_msk(strp->sk) ? + mptcp_recv_skb(strp->sk, &offset) : + tcp_recv_skb(strp->sk, tp->copied_seq, &offset); if (WARN_ON_ONCE(!first)) return; =20 --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 3D3921B4257 for ; Fri, 12 Dec 2025 02:27:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506458; cv=none; b=IAUGo5poCOZ28OjvjRgeoN/hVM9T+I4RBwHnGP6gl8g669JX+gyIaCNYr7Vy1KP7MKotZbn/E9R12mU87TgNfFTrzbT2ZeyWCfYhzMbsSBTjUaIRgssPg/+JDX7/HOmOlJL1tVep1ynexN+/D4BttnCA/lHsERRml74FkaSlTh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506458; c=relaxed/simple; bh=gCvrdfjrMChvB/FjzP2XZWqZFRWyFeOFCW9Jn+EzowA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hmbuuC4FDjzZ3c5xBx9uFYncMdsETUsTYDA5IpIItRD1WdgarIX9jV68GaB3CKtGsRZOd+E9IWTOIRnpTfOhAgIdxfITFfl/sANN6Rlyx7byGyR47A9+NNGGEdoPDrtpYPpVnqEPO8L4oBB88KkT24U6OE2wauog+hAFR7L8Puw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sHtjLDqg; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sHtjLDqg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AF2C8C4CEF7; Fri, 12 Dec 2025 02:27:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506458; bh=gCvrdfjrMChvB/FjzP2XZWqZFRWyFeOFCW9Jn+EzowA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sHtjLDqgqIpOq6MQ2PpUFteIxwAJKtbVf3iAuhFEd54A4Dqa/M+4QGEK/5FKWXBSd fJsYgeynFKZ+HeLUGHBV4dxGBZIXrg5tIGrxaxzDjLlzqzA2S4UV9kJ2LIEudAlmWe 3mjz7/W1aI3+4NJ4qvrRORPoISriAMVXmGS9BJnjPs5QZ0vHzlaNwBkpw1aYJ4RfDx jJFkI+oDEhpeKGw/dUy9u0rG+LPqVBzPf0WWFvBgBidS7kEOAAqa+HVVb5EcgoaT0I DnaTFtLWyBor7Bd1sKZMrj8aBzLdumMMcU+gYikej8pqGTjv60ZWNA8HczqjYGfbiD XuRURyyECZnDA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 06/10] tls: switch to mptcp_read_done Date: Fri, 12 Dec 2025 10:27:16 +0800 Message-ID: X-Mailer: git-send-email 2.51.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 To extend MPTCP support based on TCP TLS, corresponding MPTCP-specific helper mptcp_read_done() has been implemented. TLS implementation switches between the respective TCP and MPTCP helpers based on the detected protocol. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- include/net/mptcp.h | 4 ++++ net/mptcp/protocol.c | 36 ++++++++++++++++++++++++++++++++++++ net/tls/tls_strp.c | 4 ++++ 3 files changed, 44 insertions(+) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 3fe60818cada..7346eb9b19bd 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -260,6 +260,8 @@ unsigned int mptcp_inq(const struct sock *sk); int mptcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t len); =20 struct sk_buff *mptcp_recv_skb(struct sock *sk, u32 *off); + +void mptcp_read_done(struct sock *sk, size_t len); #else =20 static inline void mptcp_init(void) @@ -367,6 +369,8 @@ static inline struct sk_buff *mptcp_recv_skb(struct soc= k *sk, u32 *off) { return NULL; } + +static inline void mptcp_read_done(struct sock *sk, size_t len) { } #endif /* CONFIG_MPTCP */ =20 #if IS_ENABLED(CONFIG_MPTCP_IPV6) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 92141e87ed25..205492bc6345 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -4532,6 +4532,42 @@ static ssize_t mptcp_splice_read(struct socket *sock= , loff_t *ppos, return ret; } =20 +void mptcp_read_done(struct sock *sk, size_t len) +{ + struct mptcp_sock *msk =3D mptcp_sk(sk); + struct sk_buff *skb; + size_t left; + u32 offset; + + msk_owned_by_me(msk); + + if (sk->sk_state =3D=3D TCP_LISTEN) + return; + + left =3D len; + while (left && (skb =3D mptcp_recv_skb(sk, &offset)) !=3D NULL) { + int used; + + used =3D min_t(size_t, skb->len - offset, left); + msk->bytes_consumed +=3D used; + MPTCP_SKB_CB(skb)->offset +=3D used; + MPTCP_SKB_CB(skb)->map_seq +=3D used; + left -=3D used; + + if (skb->len > offset + used) + break; + + mptcp_eat_recv_skb(sk, skb); + } + + mptcp_rcv_space_adjust(msk, len - left); + + /* Clean up data we have read: This will do ACK frames. */ + if (left !=3D len) + mptcp_cleanup_rbuf(msk, len - left); +} +EXPORT_SYMBOL(mptcp_read_done); + static const struct proto_ops mptcp_stream_ops =3D { .family =3D PF_INET, .owner =3D THIS_MODULE, diff --git a/net/tls/tls_strp.c b/net/tls/tls_strp.c index 3bddb871d90b..81ff6be22162 100644 --- a/net/tls/tls_strp.c +++ b/net/tls/tls_strp.c @@ -132,6 +132,8 @@ int tls_strp_msg_cow(struct tls_sw_context_rx *ctx) tls_strp_anchor_free(strp); strp->anchor =3D skb; =20 + sk_is_msk(strp->sk) ? + mptcp_read_done(strp->sk, strp->stm.full_len) : tcp_read_done(strp->sk, strp->stm.full_len); strp->copy_mode =3D 1; =20 @@ -596,6 +598,8 @@ void tls_strp_msg_done(struct tls_strparser *strp) WARN_ON(!strp->stm.full_len); =20 if (likely(!strp->copy_mode)) + sk_is_msk(strp->sk) ? + mptcp_read_done(strp->sk, strp->stm.full_len) : tcp_read_done(strp->sk, strp->stm.full_len); else tls_strp_flush_anchor_copy(strp); --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 92F5A2989B0 for ; Fri, 12 Dec 2025 02:27:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506460; cv=none; b=DvLoBK0AcO5DU/UBj7fI1fNxmFV+B8823UfqlNMRA8dWlvQ6HyF6o6Cmf4vKYG1b4ZrUslawoASvqDroKeivgX9CCFH9WpclzWoUqhTDFaMk3OFq8dU9WgVEPZkFh/fcv84qTJhOmLufcubRhPqNmoPg2QLJ1VjFOFTycGHFcgg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506460; c=relaxed/simple; bh=tqQxCtBYZEYSb0VBK/bDrbQYT/Rsb0f9OomcFxC4SKU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KfWwtYBq+j1uW6xkcwwkU4ET/CC+agxn4N+5Dp8pdDmk2N6eOPcw9DvIsQHpscU5cT/+VNpmIcWrGFAZj2UI9g0cK4esx+IERwTwuqkf/aKeuce+MJJFvR4CgFBn8uVXHrphUGCRu7OyEsdynYzHe46Lmhmb+dcH4JwCq6Jz4Lw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hydTK7nV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hydTK7nV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BB443C113D0; Fri, 12 Dec 2025 02:27:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506460; bh=tqQxCtBYZEYSb0VBK/bDrbQYT/Rsb0f9OomcFxC4SKU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hydTK7nVbN0MAXnhsI5Vy3332SQaYi79YXB7TvPz/ExNYS1EEm3CkUVXq8e9cO4m+ yS8Rn3K1ayhYmhi0wqhpojbqlcA2fVlsvxS/USCs74hw9LrbwmK/HqQf4kqUq1yS7u cQTSuodljRNjNkgAO9kB7q4vCWkq9cY3iMO4EvsME6LJI35HvTabqWRF0NF8bGqTVG 2l/SXNWfS9XPsHzUFc2S3a9f/B7WWne1q+fkIlxhbhEDhcx4HYwqL9/JfiDsi4oyA5 7bgu2DFPR0y+FPT9d+vQwagQyLoZ+Fr/kFgb8aaQJxj13ZnSm7z+xP8YQ2nA+1xhNb YKgU9iEogCCeA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 07/10] mptcp: update ULP getsockopt Date: Fri, 12 Dec 2025 10:27:17 +0800 Message-ID: X-Mailer: git-send-email 2.51.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 TCP_ULP was obtained by calling mptcp_getsockopt_first_sf_only() to get the ULP of the first subflow. Now that the mechanism has changed, a new helper needs to be implemented to get the ULP of the msk. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- net/mptcp/sockopt.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index de90a2897d2d..f3db4f2e8f81 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -1393,6 +1393,17 @@ static int mptcp_put_int_option(struct mptcp_sock *m= sk, char __user *optval, return 0; } =20 +static int mptcp_getsockopt_msk(struct sock *sk, int level, int optname, + char __user *optval, int __user *optlen) +{ + int ret; + + lock_sock(sk); + ret =3D tcp_getsockopt(sk, level, optname, optval, optlen); + release_sock(sk); + return ret; +} + static int mptcp_getsockopt_sol_tcp(struct mptcp_sock *msk, int optname, char __user *optval, int __user *optlen) { @@ -1400,6 +1411,7 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock= *msk, int optname, =20 switch (optname) { case TCP_ULP: + return mptcp_getsockopt_msk(sk, SOL_TCP, optname, optval, optlen); case TCP_CONGESTION: case TCP_INFO: case TCP_CC_INFO: --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 018A3299948 for ; Fri, 12 Dec 2025 02:27:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506463; cv=none; b=cwgC6MB0dtxmE2s6lllbU7tMr+F96Q0X9JvGqpiYxigzle0mhRkSTJahW3ZLAdQLHRNhDPb6T2sj74H7/fjQNcrsMFI0VeqEp4X7tY1u1SrxNBBmABCTj9cnWTYk4nhEstNCsWE+AmjAXuDYrwGo4fA1nYy+v1FK2m9kV6RaH08= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506463; c=relaxed/simple; bh=oq0zKgX05uRcbn7PAy3rOmQlIOOnqg7bERQHSUE3Ymo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j+Aj2HsIX0E9BT9MmCnaPHGSEmxE77EU+KoIABcU2sJ5xyyDJ+vmOvfNysbWBDwSwiqzEJ9IAJcXm0gJcmKfj4jdCkGmVN562j1vkK8CjxR43Gft0yGRN7E+knJeUcypEhVQX4XLyVMEGWpN9Y+6P1pucUoiKjwxUwy9sexC3fQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UegESR2y; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UegESR2y" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1CE12C19422; Fri, 12 Dec 2025 02:27:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506462; bh=oq0zKgX05uRcbn7PAy3rOmQlIOOnqg7bERQHSUE3Ymo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UegESR2ySt9tgMzlJcQx6af0aOzf1tZJHijBhX2Z6Y3ObYcT+ESeP53HacLd6dZr4 JOGnN90DUdXP4DGBQ/DMGJjUKyVWbGVoVypMd4Po0GI8KGDelGPT25dkCYS0Gf8FmT LeRzi2To76z4NP4Bnf8ha0KGcQGDnWE3RRmop6+AZB9EtQLh1vX51u4hovgm59dZNZ vWYKfN2QwEUR9BPHWktj4joBHAJENr7PzCR+h81zuXVXgoFpBYsv9NipaPJhG4vWnZ tiaU8lhyAUz2h/J5/SgbTnTv/AJprdOo1nw7wBBUCVJ1mBjsvrHiPVVYvgnn+VOczk FEv7NJoBg7dbQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 08/10] mptcp: enable TLS setsockopt Date: Fri, 12 Dec 2025 10:27:18 +0800 Message-ID: <03bbe5c5fa031651f0796c30f3c64a74083d8a7f.1765505775.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.51.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 This patch adds MPTCP TLS setsockopt support. It allows setting the TCP_ULP option to 'tls' exclusively, and enables configuration of the TLS_TX and TLS_RX options at the SOL_TLS level. This option cannot be set when the socket is in CLOSE or LISTEN state. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- net/mptcp/sockopt.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index f3db4f2e8f81..52ff75702404 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "protocol.h" =20 #define MIN_INFO_OPTLEN_SIZE 16 @@ -567,6 +568,7 @@ static bool mptcp_supported_sockopt(int level, int optn= ame) case TCP_FASTOPEN_CONNECT: case TCP_FASTOPEN_KEY: case TCP_FASTOPEN_NO_COOKIE: + case TCP_ULP: return true; } =20 @@ -576,6 +578,13 @@ static bool mptcp_supported_sockopt(int level, int opt= name) * TCP_REPAIR_WINDOW are not supported, better avoid this mess */ } + if (level =3D=3D SOL_TLS) { + switch (optname) { + case TLS_TX: + case TLS_RX: + return true; + } + } return false; } =20 @@ -819,11 +828,18 @@ static int mptcp_setsockopt_sol_tcp(struct mptcp_sock= *msk, int optname, sockptr_t optval, unsigned int optlen) { struct sock *sk =3D (void *)msk; + char ulp[4] =3D ""; int ret, val; =20 switch (optname) { case TCP_ULP: - return -EOPNOTSUPP; + if (copy_from_user(ulp, optval.user, 4)) + return -EFAULT; + if (strcmp(ulp, "tls\0")) + return -EOPNOTSUPP; + if ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)) + return -EINVAL; + return tcp_setsockopt(sk, SOL_TCP, optname, optval, optlen); case TCP_CONGESTION: return mptcp_setsockopt_sol_tcp_congestion(msk, optval, optlen); case TCP_DEFER_ACCEPT: --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A5263192B75 for ; Fri, 12 Dec 2025 02:27:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506464; cv=none; b=ZTu+0paFfDG+Zs2MSCVxQNPGlJ7CdDZ9Qp2+TCrL8sLu8MTROvcZ2receuUg4gr+bGS4MUCoW3t40n3zeFU5xBcKYnNDMWb+omk42K6li6xPRMXEVTB4EhiIh3cQdrHTzkcaqcGg2H+yvfCrTGTbilKcKp7KMIuCAhavwoo8+wA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506464; c=relaxed/simple; bh=3RLRIH72HmYZgUYeM9xQ5rFdNU5lF0ekjAuqe7Te4w8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hqxR6ygMpc2jsfCjgPgH+YpJenx9AO1T6jIAZ2WSJuxO6NKecIHfRajIq6WR8L9jI097h45mvMaT2p59wUgLY4nAcnMDl+A051MCUQKGx8u1Ac9vu60kV5GnqS7A33leHIu7gfGgASB5+UCo1+ci/M7RLShkHPJP6dxuFVYjTdE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iQm6BMlm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iQm6BMlm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0792DC4CEF7; Fri, 12 Dec 2025 02:27:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506464; bh=3RLRIH72HmYZgUYeM9xQ5rFdNU5lF0ekjAuqe7Te4w8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iQm6BMlmSYSz1pURDE0JZj7ABZ7GzfkaAk98WBjksMTNQLrVzWe0XrXai237310vv pTJRZmZJgjamcEdupg/IL2eZfznKhYsMeNRPhwXbxSMfEOJG3LJEid8RpEf+d7Xu05 7lknadeEjGZGPsPMFgiVUHi5bAHc22HQ0klOk69o/sTmxnKKzbJdBgt9/cuoQiMhYC GcKf3GkIp8/KadAL435VtVCFZYd6L4FU67qgthrQ+tW3aUC+H3DdGiiCLkXnlkm6gM L8aGyP/hLJhfAEq344qWKYdgXTX7SoPzoOX5BKcmIgdmdN4iAvZiOSxV4k2wE6XBLF Kr+4uX/QRc+8A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 09/10] selftests: mptcp: connect: update sock_test_tcpulp Date: Fri, 12 Dec 2025 10:27:19 +0800 Message-ID: <8ec35b02f8c253ff49b58b01ad9ea9f53c99a39e.1765505775.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.51.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 Update sock_test_tcpulp() to ensure the mptcp_connect.c tests are not broken. fallback() helper has been implemented to verify fallback scenarios, ensuring that MPTCP fallback-to-TCP tests continue to pass. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- .../selftests/net/mptcp/mptcp_connect.c | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.c b/tools/test= ing/selftests/net/mptcp/mptcp_connect.c index b82df82e0594..e5c394ea4e11 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.c +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c @@ -266,6 +266,18 @@ static void set_mptfo(int fd, int pf) perror("TCP_FASTOPEN"); } =20 +static int fallback(int fd) +{ + int is_mptcp =3D 0; + socklen_t optlen; + + optlen =3D sizeof(is_mptcp); + if (getsockopt(fd, IPPROTO_TCP, TCP_IS_MPTCP, &is_mptcp, &optlen) =3D=3D = -1) + perror("TCP_IS_MPTCP"); + + return !is_mptcp; +} + static int do_ulp_so(int sock, const char *name) { return setsockopt(sock, IPPROTO_TCP, TCP_ULP, name, strlen(name)); @@ -282,7 +294,7 @@ static void sock_test_tcpulp(int sock, int proto, unsig= ned int line) X("getsockopt"); =20 if (buflen > 0) { - if (strcmp(buf, "mptcp") !=3D 0) + if (strcmp(buf, fallback(sock) ? "mptcp" : "tls") !=3D 0) xerror("unexpected ULP '%s' for proto %d at line %u", buf, proto, line); ret =3D do_ulp_so(sock, "tls"); if (ret =3D=3D 0) @@ -424,8 +436,6 @@ static int sock_connect_mptcp(const char * const remote= addr, } =20 freeaddrinfo(addr); - if (sock !=3D -1) - SOCK_TEST_TCPULP(sock, proto); return sock; } =20 @@ -1197,8 +1207,6 @@ int main_loop_s(int listensock) xerror("can't open %s: %d", cfg_input, errno); } =20 - SOCK_TEST_TCPULP(remotesock, 0); - memset(&winfo, 0, sizeof(winfo)); err =3D copyfd_io(fd, remotesock, 1, true, &winfo); } else { @@ -1371,8 +1379,6 @@ int main_loop(void) again: check_getpeername_connect(fd); =20 - SOCK_TEST_TCPULP(fd, cfg_sock_proto); - if (cfg_rcvbuf) set_rcvbuf(fd, cfg_rcvbuf); if (cfg_sndbuf) --=20 2.51.0 From nobody Sat Feb 7 08:17:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 AAE0F2989B0 for ; Fri, 12 Dec 2025 02:27:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506467; cv=none; b=qWIg1rC72h+EL3sAWE8DusZ56pgbYlIQF+aTRq6hZutK25U1U/8wBgHW9sQsAW62ivpyzEBrqLtHo/Otoxs0U6zaIfT/HFQHo3PgrnI2pdi20Oi8qlfxWyejdE3s5kDc0gc0uXIBImiO2YbqQeNE/8qS8KBJREMd7FWa/jR1/Ps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765506467; c=relaxed/simple; bh=Gi/GylYdIwchxSj3neMhPRFuOIy7gFeV1ARWcOx3H1w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fw4/DjG6Al/OLIpQTLfPUqLrn0ruH8Xqvgq8XePAdfssJfpfz3diZM6ZyfQmTdnOsFKrENvzXI4VjNLjpH1aLkjfzPxaEoP4+1E7Z/yt8RyAqzAQk8RdP+jAUqsuwgrm3phIUQGNmgYzsv32asfxDOvx1/uCxF4fZnGuwK7U6dI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uWm0y7Og; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uWm0y7Og" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 55BADC16AAE; Fri, 12 Dec 2025 02:27:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765506467; bh=Gi/GylYdIwchxSj3neMhPRFuOIy7gFeV1ARWcOx3H1w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uWm0y7OgBNMBiZcZ9RAx/7yRDN/7ZI6B6Q231PwymaenoGPCB8hMRpRuwXdCNcVG0 teh8BQIJs6Mw6ui4vXHUX/Jm7QtdKJW4G4MOGRusaYkMrzd+IS0I1HPXDormc6aN6u NLYvxaW33zOnmnxGDd+jem6ZEi2XWCmVZToZqMl9HRQ2Wp6FYj+z50rcbhYhN5Y7oc GOM/rZ3RyfKdZ8X6NoiJfZO6hV1GsPVk8XoaYHKNHfA/6VVzngqbetdBWBZqkHTCeW tJCBy9rAvQGiGl6xf8TRRbQfGzHRK4jvkuwNmAKcuI1F2s6G8PuCBPBrb9dG9KyFEP PGeHCmUOmFcAg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Gang Yan Subject: [RFC mptcp-next v4 10/10] selftests: mptcp: sockopt: implement MPTCP KTLS tests Date: Fri, 12 Dec 2025 10:27:20 +0800 Message-ID: X-Mailer: git-send-email 2.51.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 This patch adds Kernel TLS (KTLS) testing infrastructure to MPTCP sockopt selftest, introducing a new '-c' option to enable TLS tests. It includes a helper for configuring TLS socket options and implements MPTCP-specific KTLS test cases for both IPv4 and IPv6, along with the necessary header includes and config updates. TLS_OVERHEAD_SIZE macro is defined to account for the overhead in sent and received data length. Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/config | 1 + .../selftests/net/mptcp/mptcp_sockopt.c | 76 ++++++++++++++++++- .../selftests/net/mptcp/mptcp_sockopt.sh | 36 +++++++++ 3 files changed, 111 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/config b/tools/testing/selft= ests/net/mptcp/config index 59051ee2a986..18bd29ac5b24 100644 --- a/tools/testing/selftests/net/mptcp/config +++ b/tools/testing/selftests/net/mptcp/config @@ -34,3 +34,4 @@ CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_TPROXY=3Dm CONFIG_SYN_COOKIES=3Dy CONFIG_VETH=3Dy +CONFIG_TLS=3Dy diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c b/tools/test= ing/selftests/net/mptcp/mptcp_sockopt.c index 286164f7246e..cd7f9a7d8d40 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c @@ -25,8 +25,10 @@ #include =20 #include +#include =20 static int pf =3D AF_INET; +static bool tls; =20 #ifndef IPPROTO_MPTCP #define IPPROTO_MPTCP 262 @@ -34,6 +36,9 @@ static int pf =3D AF_INET; #ifndef SOL_MPTCP #define SOL_MPTCP 284 #endif +#ifndef TCP_ULP +#define TCP_ULP 31 +#endif =20 #ifndef MPTCP_INFO struct mptcp_info { @@ -135,7 +140,7 @@ static void die_perror(const char *msg) =20 static void die_usage(int r) { - fprintf(stderr, "Usage: mptcp_sockopt [-6]\n"); + fprintf(stderr, "Usage: mptcp_sockopt [-6] [-c]\n"); exit(r); } =20 @@ -182,6 +187,54 @@ static void xgetaddrinfo(const char *node, const char = *service, } } =20 +#define TLS_OVERHEAD_SIZE 29 + +static int do_setsockopt_tls(int fd) +{ + struct tls12_crypto_info_aes_gcm_128 tls_tx =3D { + .info =3D { + .version =3D TLS_1_2_VERSION, + .cipher_type =3D TLS_CIPHER_AES_GCM_128, + }, + }; + struct tls12_crypto_info_aes_gcm_128 tls_rx =3D { + .info =3D { + .version =3D TLS_1_2_VERSION, + .cipher_type =3D TLS_CIPHER_AES_GCM_128, + }, + }; + int so_buf =3D 6553500; + int err; + + err =3D setsockopt(fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls")); + if (err) { + perror("setsockopt TCP_ULP"); + return err; + } + err =3D setsockopt(fd, SOL_TLS, TLS_TX, (void *)&tls_tx, sizeof(tls_tx)); + if (err) { + perror("setsockopt TLS_TX"); + return err; + } + err =3D setsockopt(fd, SOL_TLS, TLS_RX, (void *)&tls_rx, sizeof(tls_rx)); + if (err) { + perror("setsockopt TLS_RX"); + return err; + } + err =3D setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &so_buf, sizeof(so_buf)); + if (err) { + perror("setsockopt SO_SNDBUF"); + return err; + } + err =3D setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &so_buf, sizeof(so_buf)); + if (err) { + perror("setsockopt SO_RCVBUF"); + return err; + } + + return 0; +} + static int sock_listen_mptcp(const char * const listenaddr, const char * const port) { @@ -263,7 +316,7 @@ static void parse_opts(int argc, char **argv) { int c; =20 - while ((c =3D getopt(argc, argv, "h6")) !=3D -1) { + while ((c =3D getopt(argc, argv, "h6c")) !=3D -1) { switch (c) { case 'h': die_usage(0); @@ -271,6 +324,9 @@ static void parse_opts(int argc, char **argv) case '6': pf =3D AF_INET6; break; + case 'c': + tls =3D true; + break; default: die_usage(1); break; @@ -626,6 +682,11 @@ static void connect_one_server(int fd, int pipefd) if (s.tcpi_rcv_delta) assert(s.tcpi_rcv_delta <=3D total); =20 + if (tls) { + ret +=3D TLS_OVERHEAD_SIZE; + total +=3D TLS_OVERHEAD_SIZE; + } + do_getsockopts(&s, fd, ret, ret); =20 if (eof) @@ -665,6 +726,11 @@ static void process_one_client(int fd, int pipefd) if (ret3 !=3D 0) xerror("expected EOF, got %lu", ret3); =20 + if (tls) { + ret +=3D TLS_OVERHEAD_SIZE; + ret2 +=3D TLS_OVERHEAD_SIZE; + } + do_getsockopts(&s, fd, ret, ret2); if (s.mptcpi_rcv_delta !=3D (uint64_t)ret + 1) xerror("mptcpi_rcv_delta %" PRIu64 ", expect %" PRIu64 ", diff %" PRId64, @@ -724,6 +790,9 @@ static int server(int pipefd) alarm(15); r =3D xaccept(fd); =20 + if (tls) + do_setsockopt_tls(r); + process_one_client(r, pipefd); =20 close(fd); @@ -787,6 +856,9 @@ static int client(int pipefd) =20 test_ip_tos_sockopt(fd); =20 + if (tls) + do_setsockopt_tls(fd); + connect_one_server(fd, pipefd); =20 return 0; diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_sockopt.sh index ab8bce06b262..23b483241f01 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh @@ -351,6 +351,41 @@ do_tcpinq_tests() return $? } =20 +do_tls_test() +{ + print_title "KTLS $*" | head -c 53 + ip netns exec "$ns_sbox" ./mptcp_sockopt "$@" + local lret=3D$? + if [ $lret -ne 0 ];then + ret=3D$lret + mptcp_lib_pr_fail + mptcp_lib_result_fail "KTLS: $*" + return $lret + fi + + mptcp_lib_pr_ok + mptcp_lib_result_pass "KTLS: $*" + return $lret +} + +do_tls_tests() +{ + local lret=3D0 + + mptcp_lib_print_info "sockopt KTLS" + + local args + for args in "-c" "-6 -c"; do + do_tls_test $args + lret=3D$? + if [ $lret -ne 0 ] ; then + return $lret + fi + done + + return $lret +} + sin=3D$(mktemp) sout=3D$(mktemp) cin=3D$(mktemp) @@ -366,6 +401,7 @@ run_tests $ns1 $ns2 dead:beef:1::1 =20 do_mptcp_sockopt_tests do_tcpinq_tests +do_tls_tests =20 mptcp_lib_result_print_all_tap exit $ret --=20 2.51.0