* [RESEDN PATCH mptcp-net] mptcp: update window_clamp on subflows when SO_RCVBUF is set
@ 2026-04-20 8:56 Gang Yan
2026-04-20 9:24 ` Matthieu Baerts
2026-04-23 16:30 ` MPTCP CI
0 siblings, 2 replies; 5+ messages in thread
From: Gang Yan @ 2026-04-20 8:56 UTC (permalink / raw)
To: mptcp; +Cc: Gang Yan
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=a, Size: 2958 bytes --]
From: Gang Yan <yangang@kylinos.cn>
Add __mptcp_subflow_set_rcvbuf() helper that calls the tcp_set_rcvbuf
to update window_clamp, in addition to writing sk_rcvbuf. Use it in
both mptcp_sol_socket_sync_intval() (setsockopt path) and
sync_socket_options() (new subflow creation path).
Fixes: a2cbb1603943 ("tcp: Update window clamping condition")
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/619
Signed-off-by: Gang Yan <yangang@kylinos.cn>
---
Notes:
Hi Matt:
Note that I do not implement set_rcvbuf in mptcp_stream_ops for the
following reasons:
- The callback receives the MPTCP meta socket as 'sk', but
tcp_set_rcvbuf() must be called on each TCP subflow to update
window_clamp. A callback implementation would need to iterate all
subflows, duplicating the work already done by
mptcp_sol_socket_sync_intval().
- Subflows are grafted to the MPTCP socket via mptcp_sock_graft(),
so ssk->sk_socket->ops points to mptcp_stream_ops, not
inet_stream_ops. This means the TCP set_rcvbuf callback is not
reachable through the subflow's ops either.
- The existing subflow sync functions cover both the setsockopt path
(mptcp_sol_socket_sync_intval) and new subflow creation path
(sync_socket_options), making the proto_ops callback unnecessary.
WDYT?
The packetdrill tests is also implemented:
-Link: https://github.com/multipath-tcp/packetdrill/pull/194
Thanks
Gang
---
net/mptcp/sockopt.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index de90a2897d2d..abe63392826b 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -67,6 +67,12 @@ static int mptcp_get_int_option(struct mptcp_sock *msk, sockptr_t optval,
return 0;
}
+static inline void __mptcp_subflow_set_rcvbuf(struct sock *ssk, int val)
+{
+ WRITE_ONCE(ssk->sk_rcvbuf, val);
+ tcp_set_rcvbuf(ssk, val);
+}
+
static void mptcp_sol_socket_sync_intval(struct mptcp_sock *msk, int optname, int val)
{
struct mptcp_subflow_context *subflow;
@@ -100,7 +106,7 @@ static void mptcp_sol_socket_sync_intval(struct mptcp_sock *msk, int optname, in
case SO_RCVBUF:
case SO_RCVBUFFORCE:
ssk->sk_userlocks |= SOCK_RCVBUF_LOCK;
- WRITE_ONCE(ssk->sk_rcvbuf, sk->sk_rcvbuf);
+ __mptcp_subflow_set_rcvbuf(ssk, sk->sk_rcvbuf);
break;
case SO_MARK:
if (READ_ONCE(ssk->sk_mark) != sk->sk_mark) {
@@ -1556,7 +1562,7 @@ static void sync_socket_options(struct mptcp_sock *msk, struct sock *ssk)
mptcp_subflow_ctx(ssk)->cached_sndbuf = sk->sk_sndbuf;
}
if (sk->sk_userlocks & SOCK_RCVBUF_LOCK)
- WRITE_ONCE(ssk->sk_rcvbuf, sk->sk_rcvbuf);
+ __mptcp_subflow_set_rcvbuf(ssk, sk->sk_rcvbuf);
}
if (sock_flag(sk, SOCK_LINGER)) {
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [RESEDN PATCH mptcp-net] mptcp: update window_clamp on subflows when SO_RCVBUF is set
2026-04-20 8:56 [RESEDN PATCH mptcp-net] mptcp: update window_clamp on subflows when SO_RCVBUF is set Gang Yan
@ 2026-04-20 9:24 ` Matthieu Baerts
[not found] ` <759c28ad07974bee4f83d69bd85ab5477690c0da@linux.dev>
2026-04-23 16:30 ` MPTCP CI
1 sibling, 1 reply; 5+ messages in thread
From: Matthieu Baerts @ 2026-04-20 9:24 UTC (permalink / raw)
To: Gang Yan, mptcp; +Cc: Gang Yan
Hi Gang,
On 20/04/2026 10:56, Gang Yan wrote:
> From: Gang Yan <yangang@kylinos.cn>
>
> Add __mptcp_subflow_set_rcvbuf() helper that calls the tcp_set_rcvbuf
> to update window_clamp, in addition to writing sk_rcvbuf. Use it in
> both mptcp_sol_socket_sync_intval() (setsockopt path) and
> sync_socket_options() (new subflow creation path).
I didn't review the code yet, but just a note for next time: please
don't use the RESEND tag if you did a modification, even if it is only
in the commit message. Instead, increment the version and add a
changelog describing the modifications.
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [RESEDN PATCH mptcp-net] mptcp: update window_clamp on subflows when SO_RCVBUF is set
2026-04-20 8:56 [RESEDN PATCH mptcp-net] mptcp: update window_clamp on subflows when SO_RCVBUF is set Gang Yan
2026-04-20 9:24 ` Matthieu Baerts
@ 2026-04-23 16:30 ` MPTCP CI
1 sibling, 0 replies; 5+ messages in thread
From: MPTCP CI @ 2026-04-23 16:30 UTC (permalink / raw)
To: Gang Yan; +Cc: mptcp
Hi Gang,
Thank you for your modifications, that's great!
Our CI did some validations and here is its report:
- KVM Validation: normal (except selftest_mptcp_join): Success! ✅
- KVM Validation: normal (only selftest_mptcp_join): Success! ✅
- KVM Validation: debug (except selftest_mptcp_join): Success! ✅
- KVM Validation: debug (only selftest_mptcp_join): Success! ✅
- KVM Validation: btf-normal (only bpftest_all): Success! ✅
- KVM Validation: btf-debug (only bpftest_all): Success! ✅
- Task: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/24844502734
Initiator: Matthieu Baerts (NGI0)
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/546f74028ce0
Patchwork: https://patchwork.kernel.org/project/mptcp/list/?series=1083201
If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:
$ cd [kernel source code]
$ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
--pull always mptcp/mptcp-upstream-virtme-docker:latest \
auto-normal
For more details:
https://github.com/multipath-tcp/mptcp-upstream-virtme-docker
Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)
Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-04-23 16:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-20 8:56 [RESEDN PATCH mptcp-net] mptcp: update window_clamp on subflows when SO_RCVBUF is set Gang Yan
2026-04-20 9:24 ` Matthieu Baerts
[not found] ` <759c28ad07974bee4f83d69bd85ab5477690c0da@linux.dev>
2026-04-20 9:31 ` gang.yan
2026-04-20 9:35 ` Matthieu Baerts
2026-04-23 16:30 ` MPTCP CI
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.