]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mptcp: fix retransmission loop when csum is enabled
authorPaolo Abeni <pabeni@redhat.com>
Tue, 2 Jun 2026 12:14:09 +0000 (22:14 +1000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 4 Jun 2026 02:04:25 +0000 (19:04 -0700)
Sashiko noted that retransmission with csum enabled can actually
transmit new data, but currently the relevant code does not update
accordingly snd_nxt.

The may cause incoming ack drop and an endless retransmission loop.

Address the issue incrementing snd_nxt as needed.

Fixes: 4e14867d5e91 ("mptcp: tune re-injections for csum enabled mode")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20260602-net-mptcp-misc-fixes-7-1-rc7-v2-2-856831229976@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/protocol.c

index 5a20ab2789aebb5fd9ac1262e7647815a730890d..7fac5fac20976a260e2efc72f7835dba9a9f0a63 100644 (file)
@@ -2869,6 +2869,10 @@ static void __mptcp_retrans(struct sock *sk)
        msk->bytes_retrans += len;
        dfrag->already_sent = max(dfrag->already_sent, len);
 
+       /* With csum enabled retransmission can send new data. */
+       if (after64(dfrag->already_sent + dfrag->data_seq, msk->snd_nxt))
+               WRITE_ONCE(msk->snd_nxt, dfrag->already_sent + dfrag->data_seq);
+
 reset_timer:
        mptcp_check_and_set_pending(sk);