* [PATCH net-next 00/15] mptcp: misc. features for v6.20/7.0
@ 2026-02-03 18:41 Matthieu Baerts (NGI0)
2026-02-03 18:41 ` [PATCH net-next 04/15] trace: mptcp: add mptcp_rcvbuf_grow tracepoint Matthieu Baerts (NGI0)
2026-02-05 2:50 ` [PATCH net-next 00/15] mptcp: misc. features for v6.20/7.0 patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-02-03 18:41 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Shuah Khan
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0), Steven Rostedt, Masami Hiramatsu,
Mathieu Desnoyers, linux-trace-kernel, David Laight, Gang Yan,
Thomas Weißschuh, Geliang Tang
This series contains a few independent new features, and small fixes for
net-next:
- Patches 1-2: two small fixes linked to the MPTCP receive buffer that
are not urgent, requiring code that has been recently changed, and is
needed for the next patch. Because we are at the end of the cycle, it
seems easier to send them to net-next, instead of dealing with
conflicts between net and net-next.
- Patch 3: a refactoring to simplify the code around MPTCP DRS.
- Patch 4: a new trace event for MPTCP to help debugging receive buffer
auto-tuning issues.
- Patch 5: align internal MPTCP PM structure with NL specs, just to
manipulate the same thing.
- Patch 6: convert some min_t(int, ...) to min(): cleaner, and to avoid
future warnings.
- Patch 7: prepare future extensions replacing sk_write_space().
- Patch 8: sort all #include in MPTCP Diag tool in the selftests to
prevent future potential conflicts and ease the reading.
- Patches 9-11: improve the MPTCP Join selftest by waiting for an event
instead of a "random" sleep.
- Patches 12-14: some small cleanups in the selftests, seen while
working on the previous patches.
- Patch 15: avoid marking subtests as skipped while still validating
most checks when executing the last MPTCP selftests on older kernels.
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
David Laight (1):
mptcp: Change some dubious min_t(int, ...) to min()
Geliang Tang (1):
mptcp: allow overridden write_space to be invoked
Matthieu Baerts (NGI0) (9):
mptcp: pm: align endpoint flags size with the NL specs
selftests: mptcp: diag: sort all #include
selftests: mptcp: join: wait for estab event instead of MPJ
selftests: mptcp: join: fix wait_mpj helper
selftests: mptcp: join: userspace: wait for new events
selftests: mptcp: join chk_stale_nr: avoid dup stats
selftests: mptcp: join: avoid declaring i if not used
selftests: mptcp: connect cleanup TFO setup
selftests: mptcp: join: no SKIP mark for group checks
Paolo Abeni (4):
mptcp: do not account for OoO in mptcp_rcvbuf_grow()
mptcp: fix receive space timestamp initialization
mptcp: consolidate rcv space init
trace: mptcp: add mptcp_rcvbuf_grow tracepoint
include/trace/events/mptcp.h | 80 ++++++++++++++++
net/mptcp/protocol.c | 56 ++++++-----
net/mptcp/protocol.h | 12 ++-
net/mptcp/subflow.c | 2 -
tools/testing/selftests/net/mptcp/mptcp_connect.c | 17 ++--
tools/testing/selftests/net/mptcp/mptcp_diag.c | 29 +++---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 107 +++++++++++-----------
7 files changed, 189 insertions(+), 114 deletions(-)
---
base-commit: fae1c659d7bd5640012be21b5b5d6490b83c0df8
change-id: 20260128-net-next-mptcp-misc-feat-6-20-0eb96b13bc4a
Best regards,
--
Matthieu Baerts (NGI0) <matttbe@kernel.org>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH net-next 04/15] trace: mptcp: add mptcp_rcvbuf_grow tracepoint
2026-02-03 18:41 [PATCH net-next 00/15] mptcp: misc. features for v6.20/7.0 Matthieu Baerts (NGI0)
@ 2026-02-03 18:41 ` Matthieu Baerts (NGI0)
2026-02-05 2:50 ` [PATCH net-next 00/15] mptcp: misc. features for v6.20/7.0 patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-02-03 18:41 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Shuah Khan
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0), Steven Rostedt, Masami Hiramatsu,
Mathieu Desnoyers, linux-trace-kernel
From: Paolo Abeni <pabeni@redhat.com>
Similar to tcp, provide a new tracepoint to better understand
mptcp_rcv_space_adjust() behavior, which presents many artifacts.
Note that the used format string is so long that I preferred
wrap it, contrary to guidance for quoted strings.
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
To: Steven Rostedt <rostedt@goodmis.org>
To: Masami Hiramatsu <mhiramat@kernel.org>
To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: linux-trace-kernel@vger.kernel.org
---
include/trace/events/mptcp.h | 80 ++++++++++++++++++++++++++++++++++++++++++++
net/mptcp/protocol.c | 3 ++
2 files changed, 83 insertions(+)
diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h
index 085b749cdd97..269d949b2025 100644
--- a/include/trace/events/mptcp.h
+++ b/include/trace/events/mptcp.h
@@ -5,7 +5,13 @@
#if !defined(_TRACE_MPTCP_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_MPTCP_H
+#include <linux/ipv6.h>
+#include <linux/tcp.h>
#include <linux/tracepoint.h>
+#include <net/ipv6.h>
+#include <net/tcp.h>
+#include <linux/sock_diag.h>
+#include <net/rstreason.h>
#define show_mapping_status(status) \
__print_symbolic(status, \
@@ -178,6 +184,80 @@ TRACE_EVENT(subflow_check_data_avail,
__entry->skb)
);
+#include <trace/events/net_probe_common.h>
+
+TRACE_EVENT(mptcp_rcvbuf_grow,
+
+ TP_PROTO(struct sock *sk, int time),
+
+ TP_ARGS(sk, time),
+
+ TP_STRUCT__entry(
+ __field(int, time)
+ __field(__u32, rtt_us)
+ __field(__u32, copied)
+ __field(__u32, inq)
+ __field(__u32, space)
+ __field(__u32, ooo_space)
+ __field(__u32, rcvbuf)
+ __field(__u32, rcv_wnd)
+ __field(__u8, scaling_ratio)
+ __field(__u16, sport)
+ __field(__u16, dport)
+ __field(__u16, family)
+ __array(__u8, saddr, 4)
+ __array(__u8, daddr, 4)
+ __array(__u8, saddr_v6, 16)
+ __array(__u8, daddr_v6, 16)
+ __field(const void *, skaddr)
+ ),
+
+ TP_fast_assign(
+ struct mptcp_sock *msk = mptcp_sk(sk);
+ struct inet_sock *inet = inet_sk(sk);
+ bool ofo_empty;
+ __be32 *p32;
+
+ __entry->time = time;
+ __entry->rtt_us = msk->rcvq_space.rtt_us >> 3;
+ __entry->copied = msk->rcvq_space.copied;
+ __entry->inq = mptcp_inq_hint(sk);
+ __entry->space = msk->rcvq_space.space;
+ ofo_empty = RB_EMPTY_ROOT(&msk->out_of_order_queue);
+ __entry->ooo_space = ofo_empty ? 0 :
+ MPTCP_SKB_CB(msk->ooo_last_skb)->end_seq -
+ msk->ack_seq;
+
+ __entry->rcvbuf = sk->sk_rcvbuf;
+ __entry->rcv_wnd = atomic64_read(&msk->rcv_wnd_sent) -
+ msk->ack_seq;
+ __entry->scaling_ratio = msk->scaling_ratio;
+ __entry->sport = ntohs(inet->inet_sport);
+ __entry->dport = ntohs(inet->inet_dport);
+ __entry->family = sk->sk_family;
+
+ p32 = (__be32 *)__entry->saddr;
+ *p32 = inet->inet_saddr;
+
+ p32 = (__be32 *)__entry->daddr;
+ *p32 = inet->inet_daddr;
+
+ TP_STORE_ADDRS(__entry, inet->inet_saddr, inet->inet_daddr,
+ sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);
+
+ __entry->skaddr = sk;
+ ),
+
+ TP_printk("time=%u rtt_us=%u copied=%u inq=%u space=%u ooo=%u scaling_ratio=%u "
+ "rcvbuf=%u rcv_wnd=%u family=%d sport=%hu dport=%hu saddr=%pI4 "
+ "daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c skaddr=%p",
+ __entry->time, __entry->rtt_us, __entry->copied,
+ __entry->inq, __entry->space, __entry->ooo_space,
+ __entry->scaling_ratio, __entry->rcvbuf, __entry->rcv_wnd,
+ __entry->family, __entry->sport, __entry->dport,
+ __entry->saddr, __entry->daddr, __entry->saddr_v6,
+ __entry->daddr_v6, __entry->skaddr)
+);
#endif /* _TRACE_MPTCP_H */
/* This part must be outside protection */
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 514272179714..197ee169c0bc 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -28,6 +28,8 @@
#include "protocol.h"
#include "mib.h"
+static unsigned int mptcp_inq_hint(const struct sock *sk);
+
#define CREATE_TRACE_POINTS
#include <trace/events/mptcp.h>
@@ -2133,6 +2135,7 @@ static void mptcp_rcv_space_adjust(struct mptcp_sock *msk, int copied)
if (msk->rcvq_space.copied <= msk->rcvq_space.space)
goto new_measure;
+ trace_mptcp_rcvbuf_grow(sk, time);
if (mptcp_rcvbuf_grow(sk, msk->rcvq_space.copied)) {
/* Make subflows follow along. If we do not do this, we
* get drops at subflow level if skbs can't be moved to
--
2.51.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next 00/15] mptcp: misc. features for v6.20/7.0
2026-02-03 18:41 [PATCH net-next 00/15] mptcp: misc. features for v6.20/7.0 Matthieu Baerts (NGI0)
2026-02-03 18:41 ` [PATCH net-next 04/15] trace: mptcp: add mptcp_rcvbuf_grow tracepoint Matthieu Baerts (NGI0)
@ 2026-02-05 2:50 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-02-05 2:50 UTC (permalink / raw)
To: Matthieu Baerts
Cc: martineau, geliang, davem, edumazet, kuba, pabeni, horms, shuah,
netdev, mptcp, linux-kernel, linux-kselftest, rostedt, mhiramat,
mathieu.desnoyers, linux-trace-kernel, david.laight.linux,
yangang, thomas.weissschuh
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Tue, 03 Feb 2026 19:41:16 +0100 you wrote:
> This series contains a few independent new features, and small fixes for
> net-next:
>
> - Patches 1-2: two small fixes linked to the MPTCP receive buffer that
> are not urgent, requiring code that has been recently changed, and is
> needed for the next patch. Because we are at the end of the cycle, it
> seems easier to send them to net-next, instead of dealing with
> conflicts between net and net-next.
>
> [...]
Here is the summary with links:
- [net-next,01/15] mptcp: do not account for OoO in mptcp_rcvbuf_grow()
https://git.kernel.org/netdev/net-next/c/6b329393502e
- [net-next,02/15] mptcp: fix receive space timestamp initialization
https://git.kernel.org/netdev/net-next/c/70274765fef5
- [net-next,03/15] mptcp: consolidate rcv space init
https://git.kernel.org/netdev/net-next/c/5c4dcc52c68a
- [net-next,04/15] trace: mptcp: add mptcp_rcvbuf_grow tracepoint
https://git.kernel.org/netdev/net-next/c/2002286e68c9
- [net-next,05/15] mptcp: pm: align endpoint flags size with the NL specs
https://git.kernel.org/netdev/net-next/c/d7e712b66f9b
- [net-next,06/15] mptcp: Change some dubious min_t(int, ...) to min()
https://git.kernel.org/netdev/net-next/c/b582090005d5
- [net-next,07/15] mptcp: allow overridden write_space to be invoked
(no matching commit)
- [net-next,08/15] selftests: mptcp: diag: sort all #include
https://git.kernel.org/netdev/net-next/c/f7f4e8e9448c
- [net-next,09/15] selftests: mptcp: join: wait for estab event instead of MPJ
https://git.kernel.org/netdev/net-next/c/32207bed0547
- [net-next,10/15] selftests: mptcp: join: fix wait_mpj helper
https://git.kernel.org/netdev/net-next/c/ab8b64ca3af3
- [net-next,11/15] selftests: mptcp: join: userspace: wait for new events
https://git.kernel.org/netdev/net-next/c/62c0774f0f18
- [net-next,12/15] selftests: mptcp: join chk_stale_nr: avoid dup stats
https://git.kernel.org/netdev/net-next/c/91453a62e5ec
- [net-next,13/15] selftests: mptcp: join: avoid declaring i if not used
https://git.kernel.org/netdev/net-next/c/79d5069cfbec
- [net-next,14/15] selftests: mptcp: connect cleanup TFO setup
https://git.kernel.org/netdev/net-next/c/ae68da495ae9
- [net-next,15/15] selftests: mptcp: join: no SKIP mark for group checks
https://git.kernel.org/netdev/net-next/c/4dca8d0030c7
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-02-05 2:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-03 18:41 [PATCH net-next 00/15] mptcp: misc. features for v6.20/7.0 Matthieu Baerts (NGI0)
2026-02-03 18:41 ` [PATCH net-next 04/15] trace: mptcp: add mptcp_rcvbuf_grow tracepoint Matthieu Baerts (NGI0)
2026-02-05 2:50 ` [PATCH net-next 00/15] mptcp: misc. features for v6.20/7.0 patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox