]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
mptcp: avoid unneeded subflow-level drops
authorPaolo Abeni <pabeni@redhat.com>
Tue, 18 Nov 2025 07:20:20 +0000 (08:20 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 20 Nov 2025 04:07:14 +0000 (20:07 -0800)
commit4f102d747cadd8f595f2b25882eed9bec1675fb1
tree18537428822cef51c6b9db71cb69e4a96a096e23
parent5e15395f6d9ec07395866c5511f4b4ac566c0c9b
mptcp: avoid unneeded subflow-level drops

The rcv window is shared among all the subflows. Currently, MPTCP sync
the TCP-level rcv window with the MPTCP one at tcp_transmit_skb() time.

The above means that incoming data may sporadically observe outdated
TCP-level rcv window and being wrongly dropped by TCP.

Address the issue checking for the edge condition before queuing the
data at TCP level, and eventually syncing the rcv window as needed.

Note that the issue is actually present from the very first MPTCP
implementation, but backports older than the blamed commit below will
range from impossible to useless.

Before:

  $ nstat -n; sleep 1; nstat -z TcpExtBeyondWindow
  TcpExtBeyondWindow              14                 0.0

After:

  $ nstat -n; sleep 1; nstat -z TcpExtBeyondWindow
  TcpExtBeyondWindow              0                  0.0

Fixes: fa3fe2b15031 ("mptcp: track window announced to peer")
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/20251118-net-mptcp-misc-fixes-6-18-rc6-v1-2-806d3781c95f@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/options.c
net/mptcp/protocol.h