[PATCH export v3 3/4] mptcp: reset subflow on MP_FAIL when OoO queue is non-empty
Chenguang Zhao <[email protected]>
| Newsgroups | dev.linux.lists.mptcp |
|---|---|
| Message-ID | <[email protected]> |
From: Chenguang Zhao <[email protected]> Infinite mapping needs contiguous data. If the MPTCP OoO queue is not empty, reset the subflow instead of falling back. Signed-off-by: Chenguang Zhao <[email protected]> --- net/mptcp/pm.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index ba7c6f80a183..8c263084db7b 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -882,6 +882,16 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fail_seq) spin_unlock_bh(&msk->fallback_lock); return; } + + /* RFC8684 §3.7: Infinite mapping requires contiguous data */ + if (!subflow->fail_tout && + !RB_EMPTY_ROOT(&msk->out_of_order_queue)) { + spin_unlock_bh(&msk->fallback_lock); + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_FALLBACKFAILED); + mptcp_subflow_reset(sk); + return; + } + msk->allow_subflows = false; spin_unlock_bh(&msk->fallback_lock); -- 2.25.1