From: sashiko-bot@kernel.org
To: "Shardul Bankar" <shardul.b@mpiricsoftware.com>
Cc: mptcp@lists.linux.dev
Subject: Re: [PATCH mptcp-next v3 4/4] mptcp: sched: add penalise counters and tracepoint
Date: Mon, 17 Aug 2026 15:34:40 +0000 [thread overview]
Message-ID: <20260817153441.3F7001F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260817-mptcp_penalise_send_v2-v3-4-e6a2ad2f1b82@mpiricsoftware.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The `mptcp_subflow_penalise` tracepoint logs an inaccurate verdict because it is emitted before the scheduler finalizes the decision to penalize a subflow.
- [Medium] Unprotected lockless plain reads and writes of TCP and subflow state violate concurrency rules, which will trigger KCSAN warnings.
--
--- Patch [4]: [PATCH mptcp-next v3 4/4] mptcp: sched: add penalise counters and tracepoint ---
commit 5337879700eb732d117ee91fe901b615a12833e3
Author: Shardul Bankar <shardul.b@mpiricsoftware.com>
mptcp: sched: add penalise counters and tracepoint
Add observability for the cwnd-halving penalty introduced in the previous
patches. It adds MPTcpExt SNMP counters and an mptcp_subflow_penalise
tracepoint.
> diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> index e4d26c2dce1ee..0cd18705ab404 100644
> --- a/net/mptcp/protocol.c
> +++ b/net/mptcp/protocol.c
> @@ -1656,6 +1656,7 @@ static void mptcp_penalise_cwnd(struct sock *ssk)
> return;
> subflow->last_penalise = tcp_jiffies32;
[Severity: Medium]
Is this unprotected write safe from load tearing?
Since subflow->last_penalise is concurrently read locklessly in
mptcp_penalise_throttle_ok(), should this be updated using WRITE_ONCE()
to avoid KCSAN warnings?
> + MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_CWNDPENALISED);
> if (cwnd >= tp->snd_ssthresh)
> tp->snd_ssthresh = max_t(u32, tp->snd_ssthresh >> 1, 2);
> }
[ ... ]
> @@ -1739,6 +1740,8 @@ struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
> subflow = mptcp_subflow_ctx(ssk);
> penal_cand = fastest && ssk != fastest &&
> subflow->avg_pacing_rate < max_pace / MPTCP_PENALISE_RATE_RATIO;
> + if (penal_cand)
> + MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_PENALCAND);
[Severity: Medium]
Does this block trigger KCSAN data race warnings?
These lockless plain reads of TCP socket fields (tcp_snd_cwnd, icsk_ca_state,
tcp_is_cwnd_limited) execute under the MPTCP connection lock, while softirqs
may concurrently process incoming ACKs and update the states.
Do these need data_race() or READ_ONCE() annotations to meet kernel
concurrency standards?
> subflow->penalise = penal_cand &&
> tcp_snd_cwnd(tcp_sk(ssk)) > MPTCP_PENALISE_MIN_CWND &&
> inet_csk(ssk)->icsk_ca_state == TCP_CA_Open &&
> @@ -1746,6 +1749,9 @@ struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
> mptcp_snd_wnd_test(msk) &&
> mptcp_penalise_throttle_ok(subflow);
>
> + /* trace the penalise verdict, decided here after the selection loop */
> + trace_mptcp_subflow_penalise(subflow, max_pace);
> +
[Severity: Medium]
Will this tracepoint log an inaccurate verdict?
If there is no window room to send (!burst), the code immediately below
sets subflow->penalise = false.
Since the tracepoint is emitted before this window limitation check, could
it log penalise=1 even when the penalty is later canceled?
> burst = min(MPTCP_SEND_BURST_SIZE, mptcp_wnd_end(msk) - msk->snd_nxt);
> wmem = READ_ONCE(ssk->sk_wmem_queued);
> if (!burst) {
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260817-mptcp_penalise_send_v2-v3-0-e6a2ad2f1b82@mpiricsoftware.com?part=4
prev parent reply other threads:[~2026-08-17 15:34 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-17 15:24 [PATCH mptcp-next v3 0/4] mptcp: sched: penalise a slow subflow Shardul Bankar
2026-08-17 15:24 ` [PATCH mptcp-next v3 1/4] mptcp: sched: avoid truncating the pacing rate in the scheduler Shardul Bankar
2026-08-17 15:40 ` sashiko-bot
2026-08-17 15:24 ` [PATCH mptcp-next v3 2/4] mptcp: sched: penalise a slow subflow by halving its cwnd Shardul Bankar
2026-08-17 15:39 ` sashiko-bot
2026-08-17 15:24 ` [PATCH mptcp-next v3 3/4] mptcp: sched: do not penalise when receive-window-limited Shardul Bankar
2026-08-17 15:36 ` sashiko-bot
2026-08-17 15:24 ` [PATCH mptcp-next v3 4/4] mptcp: sched: add penalise counters and tracepoint Shardul Bankar
2026-08-17 15:34 ` sashiko-bot [this message]
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=20260817153441.3F7001F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=mptcp@lists.linux.dev \
--cc=sashiko-reviews@lists.linux.dev \
--cc=shardul.b@mpiricsoftware.com \
/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 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.