All of lore.kernel.org
 help / color / mirror / Atom feed
* [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
       [not found]   ` <759c28ad07974bee4f83d69bd85ab5477690c0da@linux.dev>
@ 2026-04-20  9:31     ` gang.yan
  2026-04-20  9:35       ` Matthieu Baerts
  0 siblings, 1 reply; 5+ messages in thread
From: gang.yan @ 2026-04-20  9:31 UTC (permalink / raw)
  To: mptcp

-------- Forwarded message -------

From: gang.yan@linux.dev mailto:gang.yan@linux.dev 
To: "Matthieu Baerts" <matttbe@kernel.org mailto:matttbe@kernel.org?to=%22Matthieu%20Baerts%22%20%3Cmatttbe%40kernel.org%3E >
Sent: April 20, 2026 at 5:30 PM
Subject: Re: [RESEDN PATCH mptcp-net] mptcp: update window_clamp on subflows when SO_RCVBUF is set

April 20, 2026 at 5:24 PM, "Matthieu Baerts" <matttbe@kernel.org mailto:matttbe@kernel.org?to=%22Matthieu%20Baerts%22%20%3Cmatttbe%40kernel.org%3E > wrote:



> 
> 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.
> 
Thanks for the advice and reminder!

The reason I sent this patch with the RESEND tag is that I wanted to
trigger the CI checks, especially the AI reivew, to see if there are any
issues that need to be fixed. It seems my previous patch didn't properly
trigger those tests.

Thanks
Gang

> 
> 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  9:31     ` gang.yan
@ 2026-04-20  9:35       ` Matthieu Baerts
  0 siblings, 0 replies; 5+ messages in thread
From: Matthieu Baerts @ 2026-04-20  9:35 UTC (permalink / raw)
  To: gang.yan, mptcp

On 20/04/2026 11:31, gang.yan@linux.dev wrote:
> -------- Forwarded message -------
> 
> From: gang.yan@linux.dev mailto:gang.yan@linux.dev 
> To: "Matthieu Baerts" <matttbe@kernel.org mailto:matttbe@kernel.org?to=%22Matthieu%20Baerts%22%20%3Cmatttbe%40kernel.org%3E >
> Sent: April 20, 2026 at 5:30 PM
> Subject: Re: [RESEDN PATCH mptcp-net] mptcp: update window_clamp on subflows when SO_RCVBUF is set
> 
> April 20, 2026 at 5:24 PM, "Matthieu Baerts" <matttbe@kernel.org mailto:matttbe@kernel.org?to=%22Matthieu%20Baerts%22%20%3Cmatttbe%40kernel.org%3E > wrote:
> 
> 
> 
>>
>> 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.
>>
> Thanks for the advice and reminder!
> 
> The reason I sent this patch with the RESEND tag is that I wanted to
> trigger the CI checks, especially the AI reivew, to see if there are any
> issues that need to be fixed. It seems my previous patch didn't properly
> trigger those tests.

Strange, I don't see your previous patch on Patchew:

  https://patchew.org/MPTCP/

And sashiko had some issues with it:


https://sashiko.dev/#/patchset/20260416122945.324166-1-gang.yan%40linux.dev

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.