diff options
author | Dmytro Shytyi <dmytro@shytyi.net> | 2022-11-25 23:29:47 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-11-29 20:24:24 -0800 |
commit | 1e777f39b4d75e599a3aac8e0f67d739474f198c (patch) | |
tree | 244a6e63b51e17a2e41ce9fc3cd2e8e1409fda15 /net/mptcp | |
parent | f2bb566f5c977ff010baaa9e5e14d9a75b06e5f2 (diff) | |
download | linux-stable-1e777f39b4d75e599a3aac8e0f67d739474f198c.tar.gz linux-stable-1e777f39b4d75e599a3aac8e0f67d739474f198c.tar.bz2 linux-stable-1e777f39b4d75e599a3aac8e0f67d739474f198c.zip |
mptcp: add MSG_FASTOPEN sendmsg flag support
Since commit 54f1944ed6d2 ("mptcp: factor out mptcp_connect()"), all the
infrastructure is now in place to support the MSG_FASTOPEN flag, we
just need to call into the fastopen path in mptcp_sendmsg().
Co-developed-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Dmytro Shytyi <dmytro@shytyi.net>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/mptcp')
-rw-r--r-- | net/mptcp/protocol.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 3722a8580b61..efc84816a692 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1711,17 +1711,14 @@ static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) int ret = 0; long timeo; - /* we don't support FASTOPEN yet */ - if (msg->msg_flags & MSG_FASTOPEN) - return -EOPNOTSUPP; - /* silently ignore everything else */ - msg->msg_flags &= MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL; + msg->msg_flags &= MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL | MSG_FASTOPEN; lock_sock(sk); ssock = __mptcp_nmpc_socket(msk); - if (unlikely(ssock && inet_sk(ssock->sk)->defer_connect)) { + if (unlikely(ssock && (inet_sk(ssock->sk)->defer_connect || + msg->msg_flags & MSG_FASTOPEN))) { int copied_syn = 0; ret = mptcp_sendmsg_fastopen(sk, ssock->sk, msg, len, &copied_syn); |