Message ID | 7f941e06e6434902ea4a0a572392f65cd2745447.1625053058.git.pabeni@redhat.com |
---|---|
State | New |
Headers | show |
Series | [net] tcp: consistently disable header prediction for mptcp | expand |
diff --git a/include/net/tcp.h b/include/net/tcp.h index d05193cb0d99..b42b3e6731ed 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -682,6 +682,10 @@ static inline u32 __tcp_set_rto(const struct tcp_sock *tp) static inline void __tcp_fast_path_on(struct tcp_sock *tp, u32 snd_wnd) { + /* mptcp hooks are only on the slow path */ + if (sk_is_mptcp((struct sock *)tp)) + return; + tp->pred_flags = htonl((tp->tcp_header_len << 26) | ntohl(TCP_FLAG_ACK) | snd_wnd);
The MPTCP receive path is hooked only into the TCP slow-path. The DSS presence allows plain MPTCP traffic to hit that consistently. Since commit e1ff9e82e2ea ("net: mptcp: improve fallback to TCP"), when an MPTCP socket falls back to TCP, it can hit the TCP receive fast-path, and delay or stop triggering the event notification. Address the issue explicitly disabling the header prediction for MPTCP sockets. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/200 Fixes: e1ff9e82e2ea ("net: mptcp: improve fallback to TCP") Signed-off-by: Paolo Abeni <pabeni@redhat.com> --- Notes: - I'm unable to disable header prediction consistently for MPTCP sockets touching only MPTCP code - possible alternatives could be: - hook MPTCP in the TCP fastpath, too - try to pull again commit 45f119bf936b ("tcp: remove header prediction") avoiding the regression noded in 31770e34e43d ("tcp: Revert "tcp: remove header prediction"") I choose this option as the hopefully less invasive one. --- include/net/tcp.h | 4 ++++ 1 file changed, 4 insertions(+)