Re: [PATCH export v3 4/4] mptcp: fallback to TCP on MP_FAIL with a single subflow
Chenguang Zhao <[email protected]>
| Newsgroups | dev.linux.lists.mptcp |
|---|---|
| Message-ID | <[email protected]> |
在 2026/8/12 18:47, Paolo Abeni 写道: > On 8/12/26 7:46 AM, Chenguang Zhao wrote: >> @@ -901,6 +898,12 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fail_seq) >> subflow->send_mp_fail = 1; >> subflow->send_infinite_map = 1; >> tcp_send_ack(sk); > Slightly unrelated... AFAICS the current code sends the mp_fail reply > immediatally, and will send the infinite mapping with the later data > send, if any. > > I *think* it will be better to send MP_FAIL and infinite mapping > together. It should remove a little bit of complexity on the xmit path > and will be IMHO closer to the RFC specs. > > /P > To keep both MPTCP options on the same packet, that packet would have to be sent before FALLBACK_DONE: once fallback is done, mptcp_established_options() drops MPTCP options unless the skb already carries an infinite mapping. tcp_send_ack() builds a plain ACK with no mpext->infinite_map, so it can include MP_FAIL but not the infinite mapping. The infinite mapping is filled in later on a data skb in mptcp_sendmsg_frag(). With the current xmit path those two options therefore cannot go out on the same packet. Sending them together would need a dedicated transmit helper that builds a skb carrying both, rather than reusing tcp_send_ack().