From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
To: MPTCP Upstream <mptcp@lists.linux.dev>
Cc: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
Subject: [PATCH mptcp-net v5 07/20] mptcp: pm: ADD_ADDR rtx: skip inactive subflows
Date: Wed, 15 Apr 2026 11:56:55 +0200 [thread overview]
Message-ID: <20260415-mptcp-inc-limits-v5-7-e54c3bf80e4e@kernel.org> (raw)
In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org>
When looking at the maximum RTO amongst the subflows, inactive subflows
were taken into account: that includes stale ones, and the initial one
if it has been already been closed.
Unusable subflows are now simply skipped. Stale ones are used as an
alternative: if there are only stale ones, to take their maximum RTO and
avoid to eventually fallback to net.mptcp.add_addr_timeout, which is set
to 2 minutes by default.
Fixes: 30549eebc4d8 ("mptcp: make ADD_ADDR retransmission timeout adaptive")
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
v2: restore accidentally deleted icsk->icsk_rto > max check
---
net/mptcp/pm.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index bc5168831085..22ba75fa876c 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -306,20 +306,27 @@ static unsigned int mptcp_adjust_add_addr_timeout(struct mptcp_sock *msk)
const struct net *net = sock_net((struct sock *)msk);
unsigned int rto = mptcp_get_add_addr_timeout(net);
struct mptcp_subflow_context *subflow;
- unsigned int max = 0;
+ unsigned int max = 0, max_stale = 0;
mptcp_for_each_subflow(msk, subflow) {
struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
struct inet_connection_sock *icsk = inet_csk(ssk);
- if (icsk->icsk_rto > max)
+ if (!__mptcp_subflow_active(subflow))
+ continue;
+
+ if (unlikely(subflow->stale)) {
+ if (icsk->icsk_rto > max_stale)
+ max_stale = icsk->icsk_rto;
+ } else if (icsk->icsk_rto > max) {
max = icsk->icsk_rto;
+ }
}
- if (max && max < rto)
- rto = max;
+ if (max)
+ return max < rto ? max : rto;
- return rto;
+ return max_stale && max_stale < rto ? max_stale : rto;
}
static void mptcp_pm_add_timer(struct timer_list *timer)
--
2.53.0
next prev parent reply other threads:[~2026-04-15 9:58 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-15 9:56 [PATCH mptcp-net v5 00/20] mptcp: pm: increase limits, and related fixes and cleanup Matthieu Baerts (NGI0)
2026-04-15 9:56 ` [PATCH mptcp-net v5 01/20] mptcp: pm: kernel: correctly retransmit ADD_ADDR ID 0 Matthieu Baerts (NGI0)
2026-04-15 9:56 ` [PATCH mptcp-net v5 02/20] mptcp: pm: ADD_ADDR rtx: fix potential data-race Matthieu Baerts (NGI0)
2026-04-15 9:56 ` [PATCH mptcp-net v5 03/20] mptcp: pm: ADD_ADDR rtx: allow ID 0 Matthieu Baerts (NGI0)
2026-04-15 9:56 ` [PATCH mptcp-net v5 04/20] mptcp: pm: ADD_ADDR rtx: always decrease sk refcount Matthieu Baerts (NGI0)
2026-04-15 17:09 ` Matthieu Baerts
2026-04-15 9:56 ` [PATCH mptcp-net v5 05/20] mptcp: pm: ADD_ADDR rtx: free sk if last Matthieu Baerts (NGI0)
2026-04-18 18:00 ` Mat Martineau
2026-04-20 17:12 ` Matthieu Baerts
2026-04-20 21:07 ` Mat Martineau
2026-04-15 9:56 ` [PATCH mptcp-net v5 06/20] mptcp: pm: ADD_ADDR rtx: resched blocked ADD_ADDR quicker Matthieu Baerts (NGI0)
2026-04-15 9:56 ` Matthieu Baerts (NGI0) [this message]
2026-04-18 18:09 ` [PATCH mptcp-net v5 07/20] mptcp: pm: ADD_ADDR rtx: skip inactive subflows Mat Martineau
2026-04-20 17:18 ` Matthieu Baerts
2026-04-20 21:07 ` Mat Martineau
2026-04-15 9:56 ` [PATCH mptcp-net v5 08/20] mptcp: pm: retrans ADD_ADDR: return early if no retrans Matthieu Baerts (NGI0)
2026-04-15 9:56 ` [PATCH mptcp-net v5 09/20] mptcp: pm: prio: skip closed subflows Matthieu Baerts (NGI0)
2026-04-15 9:56 ` [PATCH mptcp-net v5 10/20] selftests: mptcp: check output: catch cmd errors Matthieu Baerts (NGI0)
2026-04-15 9:56 ` [PATCH mptcp-net v5 11/20] selftests: mptcp: pm: restrict 'unknown' check to pm_nl_ctl Matthieu Baerts (NGI0)
2026-04-15 9:57 ` [PATCH mptcp-net v5 12/20] mptcp: pm: in-kernel: explicitly limit batches to array size Matthieu Baerts (NGI0)
2026-04-15 9:57 ` [PATCH mptcp-net v5 13/20] mptcp: pm: in-kernel: increase all limits to 64 Matthieu Baerts (NGI0)
2026-04-15 9:57 ` [PATCH mptcp-net v5 14/20] mptcp: pm: kernel: allow flushing more than 8 endpoints Matthieu Baerts (NGI0)
2026-04-15 9:57 ` [PATCH mptcp-net v5 15/20] mptcp: pm: in-kernel: increase endpoints limit Matthieu Baerts (NGI0)
2026-04-15 17:10 ` Matthieu Baerts
2026-04-15 9:57 ` [PATCH mptcp-net v5 16/20] selftests: mptcp: join: allow changing ifaces nr per test Matthieu Baerts (NGI0)
2026-04-15 9:57 ` [PATCH mptcp-net v5 17/20] selftests: mptcp: join: validate 8x8 subflows Matthieu Baerts (NGI0)
2026-04-18 18:22 ` Mat Martineau
2026-04-20 17:30 ` Matthieu Baerts
2026-04-20 21:11 ` Mat Martineau
2026-04-15 9:57 ` [PATCH mptcp-net v5 18/20] selftests: mptcp: pm: validate new limits Matthieu Baerts (NGI0)
2026-04-15 9:57 ` [PATCH mptcp-net v5 19/20] selftests: mptcp: pm: use simpler send/recv forms Matthieu Baerts (NGI0)
2026-04-15 9:57 ` [PATCH mptcp-net v5 20/20] mptcp: pm: clearer ADD_ADDR related helpers names Matthieu Baerts (NGI0)
2026-04-18 18:27 ` Mat Martineau
2026-04-20 17:50 ` Matthieu Baerts
2026-04-15 11:32 ` [PATCH mptcp-net v5 00/20] mptcp: pm: increase limits, and related fixes and cleanup MPTCP CI
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260415-mptcp-inc-limits-v5-7-e54c3bf80e4e@kernel.org \
--to=matttbe@kernel.org \
--cc=mptcp@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox