[MPTCP next 00/12] mptcp: receive path improvement

Paolo Abeni posted 12 patches 21 hours ago
Failed in applying to current master (apply log)
include/net/tcp.h    |   1 +
net/ipv4/tcp_input.c |   2 +-
net/mptcp/ctrl.c     |   2 +
net/mptcp/mib.c      |   2 +
net/mptcp/mib.h      |   4 +
net/mptcp/protocol.c | 338 ++++++++++++++++++++++++-------------------
net/mptcp/protocol.h |   8 +-
net/mptcp/subflow.c  |  24 +--
8 files changed, 220 insertions(+), 161 deletions(-)
[MPTCP next 00/12] mptcp: receive path improvement
Posted by Paolo Abeni 21 hours ago
This series includes several changes to the MPTCP RX path.

The main goals are improving the RX performances _and_ increase the
long term maintainability.

Some changes reflects recent (or not so) improvements introduced in the
TCP stack: patch 1, 2 and 3 are the MPTCP counter part of skb deferral
free and auto-tuning improvements.

Note that patch 3 could possibly fix issues/574, and overall such patch
should protect from similar issues to arise in the future.

All the others patches are aimed at introducing the socket backlog usage
to process the packets received by the subflows while the msk socket is
owned. That (almost completely) replace the processing currently
happening in the mptcp_release_cb().

The actual job is done in patch 9, while the others are cleanups needed
to make the change tidy and more follow-up cleanups.

Sharing earlier with known issues (at least on fallback socket) to raise
awareness about this upcoming work.

Paolo Abeni (12):
  mptcp: leverage skb deferral free
  tcp: make tcp_rcvbuf_grow() accessible to mptcp code
  mptcp: rcvbuf auto-tuning improvement
  mptcp: introduce the mptcp_init_skb helper.
  mptcp: remove unneeded mptcp_move_skb()
  mptcp: factor out a basic skb coalesce helper
  mptcp: minor move_skbs_to_msk() cleanup
  mptcp: cleanup fallback data fin reception
  mptcp: leverage the sk backlog for RX packet processing.
  mptcp: prevernt __mptcp_move_skbs() interferring with the fastpath
  mptcp: borrow forward memory from subflow
  mptcp: make fallback backlog aware

 include/net/tcp.h    |   1 +
 net/ipv4/tcp_input.c |   2 +-
 net/mptcp/ctrl.c     |   2 +
 net/mptcp/mib.c      |   2 +
 net/mptcp/mib.h      |   4 +
 net/mptcp/protocol.c | 338 ++++++++++++++++++++++++-------------------
 net/mptcp/protocol.h |   8 +-
 net/mptcp/subflow.c  |  24 +--
 8 files changed, 220 insertions(+), 161 deletions(-)

-- 
2.51.0
Re: [MPTCP next 00/12] mptcp: receive path improvement
Posted by MPTCP CI 23 minutes ago
Hi Paolo,

Thank you for your modifications, that's great!

Our CI did some validations and here is its report:

- KVM Validation: normal: Unstable: 5 failed test(s): packetdrill_mp_capable selftest_mptcp_connect selftest_mptcp_connect_checksum selftest_mptcp_connect_mmap selftest_mptcp_connect_sendfile 🔴
- KVM Validation: debug: Unstable: 5 failed test(s): packetdrill_mp_capable selftest_mptcp_connect selftest_mptcp_connect_checksum selftest_mptcp_connect_mmap selftest_mptcp_connect_sendfile 🔴
- KVM Validation: btf-normal (only bpftest_all): Success! ✅
- KVM Validation: btf-debug (only bpftest_all): Success! ✅
- Task: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/17795536153

Initiator: Matthieu Baerts (NGI0)
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/f83d2e5ccf99
Patchwork: https://patchwork.kernel.org/project/mptcp/list/?series=1002996


If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:

    $ cd [kernel source code]
    $ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
        --pull always mptcp/mptcp-upstream-virtme-docker:latest \
        auto-normal

For more details:

    https://github.com/multipath-tcp/mptcp-upstream-virtme-docker


Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
Re: [MPTCP next 00/12] mptcp: receive path improvement
Posted by MPTCP CI 3 hours ago
Hi Paolo,

Thank you for your modifications, that's great!

But sadly, our CI spotted some issues with it when trying to build it.

You can find more details there:

  https://github.com/multipath-tcp/mptcp_net-next/actions/runs/17795536140

Status: failure
Initiator: Matthieu Baerts (NGI0)
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/f83d2e5ccf99
Patchwork: https://patchwork.kernel.org/project/mptcp/list/?series=1002996

Feel free to reply to this email if you cannot access logs, if you need
some support to fix the error, if this doesn't seem to be caused by your
modifications or if the error is a false positive one.

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
Re: [MPTCP next 00/12] mptcp: receive path improvement
Posted by Geliang Tang 10 hours ago
On Tue, 2025-09-16 at 18:27 +0200, Paolo Abeni wrote:
> This series includes several changes to the MPTCP RX path.
> 
> The main goals are improving the RX performances _and_ increase the
> long term maintainability.
> 
> Some changes reflects recent (or not so) improvements introduced in
> the
> TCP stack: patch 1, 2 and 3 are the MPTCP counter part of skb
> deferral
> free and auto-tuning improvements.
> 
> Note that patch 3 could possibly fix issues/574, and overall such
> patch
> should protect from similar issues to arise in the future.
> 
> All the others patches are aimed at introducing the socket backlog
> usage
> to process the packets received by the subflows while the msk socket
> is
> owned. That (almost completely) replace the processing currently
> happening in the mptcp_release_cb().
> 
> The actual job is done in patch 9, while the others are cleanups
> needed
> to make the change tidy and more follow-up cleanups.
> 
> Sharing earlier with known issues (at least on fallback socket) to
> raise
> awareness about this upcoming work.

Great! Thanks Paolo. Patch 3 "mptcp: rcvbuf auto-tuning improvement"
also fixes issue #487 "send() fails with EAGAIN in blocking IO mode"
that's been bothering me for quite a while. Therefore, please also add:

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/487

Meanwhile, I think this series closes issue #559 as well:

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/559

-Geliang

> 
> Paolo Abeni (12):
>   mptcp: leverage skb deferral free
>   tcp: make tcp_rcvbuf_grow() accessible to mptcp code
>   mptcp: rcvbuf auto-tuning improvement
>   mptcp: introduce the mptcp_init_skb helper.
>   mptcp: remove unneeded mptcp_move_skb()
>   mptcp: factor out a basic skb coalesce helper
>   mptcp: minor move_skbs_to_msk() cleanup
>   mptcp: cleanup fallback data fin reception
>   mptcp: leverage the sk backlog for RX packet processing.
>   mptcp: prevernt __mptcp_move_skbs() interferring with the fastpath
>   mptcp: borrow forward memory from subflow
>   mptcp: make fallback backlog aware
> 
>  include/net/tcp.h    |   1 +
>  net/ipv4/tcp_input.c |   2 +-
>  net/mptcp/ctrl.c     |   2 +
>  net/mptcp/mib.c      |   2 +
>  net/mptcp/mib.h      |   4 +
>  net/mptcp/protocol.c | 338 ++++++++++++++++++++++++-----------------
> --
>  net/mptcp/protocol.h |   8 +-
>  net/mptcp/subflow.c  |  24 +--
>  8 files changed, 220 insertions(+), 161 deletions(-)