[PATCH mptcp-net v2 0/2] mptcp: pm: fix ADD_ADDR timer infinite retry on option space shortage

Li Xiasong posted 2 patches 4 days, 22 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/20260430112026.343691-1-lixiasong1@huawei.com
net/mptcp/pm.c                                | 45 +++++++++++++++---
.../testing/selftests/net/mptcp/mptcp_join.sh | 47 +++++++++++++++++++
2 files changed, 85 insertions(+), 7 deletions(-)
[PATCH mptcp-net v2 0/2] mptcp: pm: fix ADD_ADDR timer infinite retry on option space shortage
Posted by Li Xiasong 4 days, 22 hours ago
This patch fixes a bug where the ADD_ADDR timer keeps rescheduling
indefinitely when TCP option space is insufficient, blocking subsequent
addresses in the endpoint list from being announced.

The issue occurs when sending ADD_ADDR with an IPv6 address and port
while tcp_timestamps is enabled. The first patch clears the signal in this
path, skips the matching ADD_ADDR retransmission entry, and preserves PM
state-machine progression semantics.

The second patch adds a selftest to cover this behavior and prevent
regressions.

Patch summary:
  - patch 1: mptcp: pm: fix ADD_ADDR timer infinite retry on option space
    insufficient
  - patch 2: selftests: mptcp: join: cover ADD_ADDR tx drop and list
    progress

Changes since v1:
  - add explicit MIB accounting for this drop path:
    - MPTCP_MIB_ADDADDRTXDROP for non-echo ADD_ADDR
    - MPTCP_MIB_ECHOADDTXDROP for echo ADD_ADDR
  - add explicit handling to stop the matching ADD_ADDR retransmission
    timer when skipping non-echo ADD_ADDR on pure-ACK option-space
    exhaustion
  - keep PM forward progress by advancing PM state after a successful
    skip of the matching ADD_ADDR entry
  - Added selftest to verify IPv6 ADD_ADDR with port tx-drop when
    tcp_timestamps is enabled
  - Link to v1: https://lore.kernel.org/netdev/20260418100018.2219500-1-lixiasong1@huawei.com/

Thanks to Matthieu Baerts for the detailed review and suggestions on
v1, especially around PM progression and retry/timer handling.

Li Xiasong (2):
  mptcp: pm: fix ADD_ADDR timer infinite retry on option space
    insufficient
  selftests: mptcp: join: cover ADD_ADDR tx drop and list progress

 net/mptcp/pm.c                                | 45 +++++++++++++++---
 .../testing/selftests/net/mptcp/mptcp_join.sh | 47 +++++++++++++++++++
 2 files changed, 85 insertions(+), 7 deletions(-)

-- 
2.34.1
Re: [PATCH mptcp-net v2 0/2] mptcp: pm: fix ADD_ADDR timer infinite retry on option space shortage
Posted by MPTCP CI 4 days, 21 hours ago
Hi Li,

Thank you for your modifications, that's great!

Our CI did some validations and here is its report:

- KVM Validation: normal (except selftest_mptcp_join): Success! ✅
- KVM Validation: normal (only selftest_mptcp_join): Success! ✅
- KVM Validation: debug (except selftest_mptcp_join): Unstable: 1 failed test(s): packetdrill_dss ⚠️ 
- KVM Validation: debug (only selftest_mptcp_join): Success! ✅
- 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/25162701341

Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/7d24b4ab078e
Patchwork: https://patchwork.kernel.org/project/mptcp/list/?series=1088056


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)