[PATCH export v3 0/4] mptcp: fix TCP fallback on single-subflow MP_FAIL
Chenguang Zhao <[email protected]>
| Newsgroups | dev.linux.lists.mptcp |
|---|---|
| Message-ID | <[email protected]> |
From: Chenguang Zhao <[email protected]> When a valid MP_FAIL is received and infinite fallback is still allowed (single contiguous subflow), RFC8684 section 3.7 requires leaving MPTCP mode. Today the stack only clears allow_subflows and defers the real fallback to the later infinite-map transmit path. If no data is sent in between, the peer can still complete the 4th ACK as MPTCP and keep using MPTCP options. This series adds a dedicated MPFailFallback MIB, rejects joins after fallback via mptcp_is_fully_established(), resets when the OoO queue blocks infinite mapping, and falls back immediately after the MP_FAIL response through mptcp_try_fallback(). Patch 1 adds the MPFailFallback MIB. Patch 2 rejects joins once fallback has completed. Patch 3 resets on MP_FAIL when the OoO queue is non-empty. Patch 4 falls back to TCP after sending the MP_FAIL response. v3: - Address Matthieu Baerts' review - Introduce the MIB first (Fixes: c65c2e3bae69) and reuse mptcp_try_fallback() in the functional fix - Split mptcp_is_fully_established() and OoO handling into dedicated commits for easier backport - Check FALLBACK_DONE via test_bit() - Drop allow_subflows from mptcp_is_fully_established() (and the READ/WRITE_ONCE follow-up) - On OoO failure, reset without sending MP_FAIL - This patch series is based on the export branch, The git repository is: git://git.kernel.org/pub/scm/linux/kernel/git/mptcp/linux.git Chenguang Zhao (4): mptcp: add MPFailFallback MIB mptcp: reject joins after fallback in mptcp_is_fully_established mptcp: reset subflow on MP_FAIL when OoO queue is non-empty mptcp: fallback to TCP on MP_FAIL with a single subflow net/mptcp/mib.c | 1 + net/mptcp/mib.h | 1 + net/mptcp/pm.c | 17 +++++++++++++++-- net/mptcp/protocol.c | 4 +++- net/mptcp/protocol.h | 5 ++++- 5 files changed, 24 insertions(+), 4 deletions(-) --- v2: https://lore.kernel.org/all/[email protected]/ v1: https://lore.kernel.org/all/[email protected]/ -- 2.25.1