mptcp.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH mptcp-next v1 0/5] mptcp: add support for TFO, sender side only
@ 2022-09-21 15:25 Benjamin Hesmans
  2022-09-21 15:25 ` [PATCH mptcp-next v1 1/5] mptcp: add TCP_FASTOPEN_CONNECT socket option Benjamin Hesmans
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Benjamin Hesmans @ 2022-09-21 15:25 UTC (permalink / raw)
  To: mptcp; +Cc: Benjamin Hesmans

The series only consider the sender side.

Compared to the previous RFC patches, these ones focus on
the sender side only. It corresponds to the 4 first patches from the RFC
series.

The sending part is less complex and even if it looks like we are
converging for the receive part, there are still discussions on-going
there.

Again, thank you Dmytro for the previous work done. As already discussed
on the ML and meeting, this approach was slightly different from what
Dmytro originally proposed. Here tcp_sendmsg_fastopen() is exported and
re-used and TCP_FASTOPEN_CONNECT is supported. MSG_FASTOPEN was already
handled by Dmytro's patches and it has been added to the series re-using
Dmytro's SoB, hopefully that's still OK for him.

Individual changelogs have been added per patch.


Benjamin Hesmans (4):
  mptcp: add TCP_FASTOPEN_CONNECT socket option
  tcp: export tcp_sendmsg_fastopen
  mptcp: handle defer connect in mptcp_sendmsg
  mptcp: poll allow write call before actual connect

Dmytro Shytyi (1):
  mptcp: add MSG_FASTOPEN support

 include/net/tcp.h    |  2 ++
 net/ipv4/tcp.c       |  5 ++---
 net/mptcp/protocol.c | 32 ++++++++++++++++++++++++++++----
 net/mptcp/sockopt.c  | 19 ++++++++++++++++++-
 4 files changed, 50 insertions(+), 8 deletions(-)

-- 
2.25.1


-- 


Disclaimer: https://www.tessares.net/mail-disclaimer/ 
<https://www.tessares.net/mail-disclaimer/>



^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH mptcp-next v1 1/5] mptcp: add TCP_FASTOPEN_CONNECT socket option
  2022-09-21 15:25 [PATCH mptcp-next v1 0/5] mptcp: add support for TFO, sender side only Benjamin Hesmans
@ 2022-09-21 15:25 ` Benjamin Hesmans
  2022-09-21 15:25 ` [PATCH mptcp-next v1 2/5] tcp: export tcp_sendmsg_fastopen Benjamin Hesmans
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Benjamin Hesmans @ 2022-09-21 15:25 UTC (permalink / raw)
  To: mptcp; +Cc: Benjamin Hesmans

Set the option for the first subflow only. For the other subflows TFO
can't be used because a mapping would be needed to cover the data in the
SYN.

Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
---

Notes:
    v1:
    - also support getsockopt() for TCP_FASTOPEN_CONNECT
    - remove comment about msk->first. __mptcp_nmpc_socket() should be good here

 net/mptcp/sockopt.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index 423d3826ca1e..c7cb68c725b2 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -559,6 +559,7 @@ static bool mptcp_supported_sockopt(int level, int optname)
 		case TCP_NOTSENT_LOWAT:
 		case TCP_TX_DELAY:
 		case TCP_INQ:
+		case TCP_FASTOPEN_CONNECT:
 			return true;
 		}
 
@@ -567,7 +568,7 @@ static bool mptcp_supported_sockopt(int level, int optname)
 		/* TCP_REPAIR, TCP_REPAIR_QUEUE, TCP_QUEUE_SEQ, TCP_REPAIR_OPTIONS,
 		 * TCP_REPAIR_WINDOW are not supported, better avoid this mess
 		 */
-		/* TCP_FASTOPEN_KEY, TCP_FASTOPEN TCP_FASTOPEN_CONNECT, TCP_FASTOPEN_NO_COOKIE,
+		/* TCP_FASTOPEN_KEY, TCP_FASTOPEN, TCP_FASTOPEN_NO_COOKIE,
 		 * are not supported fastopen is currently unsupported
 		 */
 	}
@@ -768,6 +769,19 @@ static int mptcp_setsockopt_sol_tcp_defer(struct mptcp_sock *msk, sockptr_t optv
 	return tcp_setsockopt(listener->sk, SOL_TCP, TCP_DEFER_ACCEPT, optval, optlen);
 }
 
+static int mptcp_setsockopt_sol_tcp_fastopen_connect(struct mptcp_sock *msk, sockptr_t optval,
+						     unsigned int optlen)
+{
+	struct socket *sock;
+
+	/* Limit to first subflow */
+	sock = __mptcp_nmpc_socket(msk);
+	if (!sock)
+		return -EINVAL;
+
+	return tcp_setsockopt(sock->sk, SOL_TCP, TCP_FASTOPEN_CONNECT, optval, optlen);
+}
+
 static int mptcp_setsockopt_sol_tcp(struct mptcp_sock *msk, int optname,
 				    sockptr_t optval, unsigned int optlen)
 {
@@ -796,6 +810,8 @@ static int mptcp_setsockopt_sol_tcp(struct mptcp_sock *msk, int optname,
 		return mptcp_setsockopt_sol_tcp_nodelay(msk, optval, optlen);
 	case TCP_DEFER_ACCEPT:
 		return mptcp_setsockopt_sol_tcp_defer(msk, optval, optlen);
+	case TCP_FASTOPEN_CONNECT:
+		return mptcp_setsockopt_sol_tcp_fastopen_connect(msk, optval, optlen);
 	}
 
 	return -EOPNOTSUPP;
@@ -1157,6 +1173,7 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock *msk, int optname,
 	case TCP_INFO:
 	case TCP_CC_INFO:
 	case TCP_DEFER_ACCEPT:
+	case TCP_FASTOPEN_CONNECT:
 		return mptcp_getsockopt_first_sf_only(msk, SOL_TCP, optname,
 						      optval, optlen);
 	case TCP_INQ:
-- 
2.25.1


-- 


Disclaimer: https://www.tessares.net/mail-disclaimer/ 
<https://www.tessares.net/mail-disclaimer/>



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH mptcp-next v1 2/5] tcp: export tcp_sendmsg_fastopen
  2022-09-21 15:25 [PATCH mptcp-next v1 0/5] mptcp: add support for TFO, sender side only Benjamin Hesmans
  2022-09-21 15:25 ` [PATCH mptcp-next v1 1/5] mptcp: add TCP_FASTOPEN_CONNECT socket option Benjamin Hesmans
@ 2022-09-21 15:25 ` Benjamin Hesmans
  2022-09-21 15:25 ` [PATCH mptcp-next v1 3/5] mptcp: handle defer connect in mptcp_sendmsg Benjamin Hesmans
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Benjamin Hesmans @ 2022-09-21 15:25 UTC (permalink / raw)
  To: mptcp; +Cc: Benjamin Hesmans

It will be used to support TCP FastOpen with MPTCP in the following
commit.

Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
---
 include/net/tcp.h | 2 ++
 net/ipv4/tcp.c    | 5 ++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/include/net/tcp.h b/include/net/tcp.h
index 27e8d378c70a..4f71cc15ff8e 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -327,6 +327,8 @@ void tcp_remove_empty_skb(struct sock *sk);
 int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw);
 int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size);
 int tcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t size);
+int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, int *copied,
+			 size_t size, struct ubuf_info *uarg);
 int tcp_sendpage(struct sock *sk, struct page *page, int offset, size_t size,
 		 int flags);
 int tcp_sendpage_locked(struct sock *sk, struct page *page, int offset,
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 5702ca9b952d..5237a3f08c94 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -1162,9 +1162,8 @@ void tcp_free_fastopen_req(struct tcp_sock *tp)
 	}
 }
 
-static int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg,
-				int *copied, size_t size,
-				struct ubuf_info *uarg)
+int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, int *copied,
+			 size_t size, struct ubuf_info *uarg)
 {
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct inet_sock *inet = inet_sk(sk);
-- 
2.25.1


-- 


Disclaimer: https://www.tessares.net/mail-disclaimer/ 
<https://www.tessares.net/mail-disclaimer/>



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH mptcp-next v1 3/5] mptcp: handle defer connect in mptcp_sendmsg
  2022-09-21 15:25 [PATCH mptcp-next v1 0/5] mptcp: add support for TFO, sender side only Benjamin Hesmans
  2022-09-21 15:25 ` [PATCH mptcp-next v1 1/5] mptcp: add TCP_FASTOPEN_CONNECT socket option Benjamin Hesmans
  2022-09-21 15:25 ` [PATCH mptcp-next v1 2/5] tcp: export tcp_sendmsg_fastopen Benjamin Hesmans
@ 2022-09-21 15:25 ` Benjamin Hesmans
  2022-09-21 17:41   ` Paolo Abeni
  2022-09-21 15:25 ` [PATCH mptcp-next v1 4/5] mptcp: add MSG_FASTOPEN support Benjamin Hesmans
  2022-09-21 15:25 ` [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Benjamin Hesmans
  4 siblings, 1 reply; 9+ messages in thread
From: Benjamin Hesmans @ 2022-09-21 15:25 UTC (permalink / raw)
  To: mptcp; +Cc: Benjamin Hesmans

When TCP_FASTOPEN_CONNECT has been set on the socket before a connect,
the defer flag is set and must be handled when sendmsg is called.

This is similar to what is done in tcp_sendmsg_locked().

Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
---

Notes:
    v1:
    - error case use latest patch from Paolo (propagate fastclose error)
    - I believe the use __mptcp_nmpc_socket(msk); is correct here (instead of
      msk->first but would be nice is someone can confirm
    - add unlikely for the TFO check
    - propagate the ssk state to the msk (Paolo)

 net/mptcp/protocol.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 7d4e197ec567..f5f20910cd83 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1668,6 +1668,7 @@ static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
 {
 	struct mptcp_sock *msk = mptcp_sk(sk);
 	struct page_frag *pfrag;
+	struct socket *ssock;
 	size_t copied = 0;
 	int ret = 0;
 	long timeo;
@@ -1681,6 +1682,27 @@ static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
 
 	lock_sock(sk);
 
+	ssock = __mptcp_nmpc_socket(msk);
+	if (unlikely(ssock && inet_sk(ssock->sk)->defer_connect)) {
+		struct sock *ssk = ssock->sk;
+		int copied_syn = 0;
+
+		lock_sock(ssk);
+
+		ret = tcp_sendmsg_fastopen(ssk, msg, &copied_syn, len, NULL);
+		copied += copied_syn;
+		if (ret == -EINPROGRESS && copied_syn > 0) {
+			/* reflect the new state on the MPTCP socket */
+			inet_sk_state_store(sk, inet_sk_state_load(ssk));
+			release_sock(ssk);
+			goto out;
+		} else if (ret) {
+			release_sock(ssk);
+			goto do_error;
+		}
+		release_sock(ssk);
+	}
+
 	timeo = sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT);
 
 	if ((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) {
-- 
2.25.1


-- 


Disclaimer: https://www.tessares.net/mail-disclaimer/ 
<https://www.tessares.net/mail-disclaimer/>



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH mptcp-next v1 4/5] mptcp: add MSG_FASTOPEN support
  2022-09-21 15:25 [PATCH mptcp-next v1 0/5] mptcp: add support for TFO, sender side only Benjamin Hesmans
                   ` (2 preceding siblings ...)
  2022-09-21 15:25 ` [PATCH mptcp-next v1 3/5] mptcp: handle defer connect in mptcp_sendmsg Benjamin Hesmans
@ 2022-09-21 15:25 ` Benjamin Hesmans
  2022-09-21 15:25 ` [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Benjamin Hesmans
  4 siblings, 0 replies; 9+ messages in thread
From: Benjamin Hesmans @ 2022-09-21 15:25 UTC (permalink / raw)
  To: mptcp; +Cc: Dmytro Shytyi, Benjamin Hesmans

From: Dmytro Shytyi <dmytro@shytyi.net>

Support for TFO when it's used via sendmsg() or sendto().

Signed-off-by: Dmytro Shytyi <dmytro@shytyi.net>
Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
---

Notes:
    Imported code from Dmytro's series

 net/mptcp/protocol.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index f5f20910cd83..aa6e13949b23 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1673,17 +1673,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;
 
 	lock_sock(sk);
 
 	ssock = __mptcp_nmpc_socket(msk);
-	if (unlikely(ssock && inet_sk(ssock->sk)->defer_connect)) {
+	if (unlikely(ssock && (msg->msg_flags & MSG_FASTOPEN ||
+			       inet_sk(ssock->sk)->defer_connect))) {
 		struct sock *ssk = ssock->sk;
 		int copied_syn = 0;
 
-- 
2.25.1


-- 


Disclaimer: https://www.tessares.net/mail-disclaimer/ 
<https://www.tessares.net/mail-disclaimer/>



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect
  2022-09-21 15:25 [PATCH mptcp-next v1 0/5] mptcp: add support for TFO, sender side only Benjamin Hesmans
                   ` (3 preceding siblings ...)
  2022-09-21 15:25 ` [PATCH mptcp-next v1 4/5] mptcp: add MSG_FASTOPEN support Benjamin Hesmans
@ 2022-09-21 15:25 ` Benjamin Hesmans
  2022-09-21 16:52   ` mptcp: poll allow write call before actual connect: Tests Results MPTCP CI
  2022-09-21 17:43   ` [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Paolo Abeni
  4 siblings, 2 replies; 9+ messages in thread
From: Benjamin Hesmans @ 2022-09-21 15:25 UTC (permalink / raw)
  To: mptcp; +Cc: Benjamin Hesmans

If fastopen is used, poll must allow a first write that will trigger
the SYN+data

Similar to what is done in tcp_poll().

Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
---
 net/mptcp/protocol.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index aa6e13949b23..308a09b3c0b6 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -3733,10 +3733,12 @@ static __poll_t mptcp_poll(struct file *file, struct socket *sock,
 {
 	struct sock *sk = sock->sk;
 	struct mptcp_sock *msk;
+	struct socket *ssock;
 	__poll_t mask = 0;
 	int state;
 
 	msk = mptcp_sk(sk);
+	ssock = __mptcp_nmpc_socket(msk);
 	sock_poll_wait(file, sock, wait);
 
 	state = inet_sk_state_load(sk);
@@ -3751,6 +3753,9 @@ static __poll_t mptcp_poll(struct file *file, struct socket *sock,
 	if (state != TCP_SYN_SENT && state != TCP_SYN_RECV) {
 		mask |= mptcp_check_readable(msk);
 		mask |= mptcp_check_writeable(msk);
+	} else if (ssock && state == TCP_SYN_SENT && inet_sk(ssock->sk)->defer_connect) {
+		/* cf tcp_poll() note about TFO */
+		mask |= EPOLLOUT | EPOLLWRNORM;
 	}
 	if (sk->sk_shutdown == SHUTDOWN_MASK || state == TCP_CLOSE)
 		mask |= EPOLLHUP;
-- 
2.25.1


-- 


Disclaimer: https://www.tessares.net/mail-disclaimer/ 
<https://www.tessares.net/mail-disclaimer/>



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: mptcp: poll allow write call before actual connect: Tests Results
  2022-09-21 15:25 ` [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Benjamin Hesmans
@ 2022-09-21 16:52   ` MPTCP CI
  2022-09-21 17:43   ` [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Paolo Abeni
  1 sibling, 0 replies; 9+ messages in thread
From: MPTCP CI @ 2022-09-21 16:52 UTC (permalink / raw)
  To: Benjamin Hesmans; +Cc: mptcp

Hi Benjamin,

Thank you for your modifications, that's great!

Our CI did some validations and here is its report:

- KVM Validation: normal:
  - Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
  - Task: https://cirrus-ci.com/task/6174768750657536
  - Summary: https://api.cirrus-ci.com/v1/artifact/task/6174768750657536/summary/summary.txt

- KVM Validation: debug:
  - Unstable: 1 failed test(s): packetdrill_add_addr 🔴:
  - Task: https://cirrus-ci.com/task/5611818797236224
  - Summary: https://api.cirrus-ci.com/v1/artifact/task/5611818797236224/summary/summary.txt

Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/559d6c15f187


If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:

    $ cd [kernel source code]
    $ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
        --pull always mptcp/mptcp-upstream-virtme-docker:latest \
        auto-debug

For more details:

    https://github.com/multipath-tcp/mptcp-upstream-virtme-docker


Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (Tessares)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH mptcp-next v1 3/5] mptcp: handle defer connect in mptcp_sendmsg
  2022-09-21 15:25 ` [PATCH mptcp-next v1 3/5] mptcp: handle defer connect in mptcp_sendmsg Benjamin Hesmans
@ 2022-09-21 17:41   ` Paolo Abeni
  0 siblings, 0 replies; 9+ messages in thread
From: Paolo Abeni @ 2022-09-21 17:41 UTC (permalink / raw)
  To: Benjamin Hesmans, mptcp

Hello,

On Wed, 2022-09-21 at 17:25 +0200, Benjamin Hesmans wrote:
> When TCP_FASTOPEN_CONNECT has been set on the socket before a connect,
> the defer flag is set and must be handled when sendmsg is called.
> 
> This is similar to what is done in tcp_sendmsg_locked().
> 
> Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
> ---
> 
> Notes:
>     v1:
>     - error case use latest patch from Paolo (propagate fastclose error)
>     - I believe the use __mptcp_nmpc_socket(msk); is correct here (instead of
>       msk->first but would be nice is someone can confirm

Yep, AFAICS it's correct. 

And patch LGTM.

Cheers,

Paolo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect
  2022-09-21 15:25 ` [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Benjamin Hesmans
  2022-09-21 16:52   ` mptcp: poll allow write call before actual connect: Tests Results MPTCP CI
@ 2022-09-21 17:43   ` Paolo Abeni
  1 sibling, 0 replies; 9+ messages in thread
From: Paolo Abeni @ 2022-09-21 17:43 UTC (permalink / raw)
  To: Benjamin Hesmans, mptcp

On Wed, 2022-09-21 at 17:25 +0200, Benjamin Hesmans wrote:
> If fastopen is used, poll must allow a first write that will trigger
> the SYN+data
> 
> Similar to what is done in tcp_poll().
> 
> Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
> ---
>  net/mptcp/protocol.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> index aa6e13949b23..308a09b3c0b6 100644
> --- a/net/mptcp/protocol.c
> +++ b/net/mptcp/protocol.c
> @@ -3733,10 +3733,12 @@ static __poll_t mptcp_poll(struct file *file, struct socket *sock,
>  {
>  	struct sock *sk = sock->sk;
>  	struct mptcp_sock *msk;
> +	struct socket *ssock;
>  	__poll_t mask = 0;
>  	int state;
>  
>  	msk = mptcp_sk(sk);
> +	ssock = __mptcp_nmpc_socket(msk);

The above is not safe. We need to own the msk socket lock to invoke
__mptcp_nmpc_socket(), and we really want to avoid acquiring such lock
here.

Instead you can copy the ssk 'defer_connect' into the msk at
mptcp_stream_connect() time...

> 
>  	sock_poll_wait(file, sock, wait);
>  
>  	state = inet_sk_state_load(sk);
> @@ -3751,6 +3753,9 @@ static __poll_t mptcp_poll(struct file *file, struct socket *sock,
>  	if (state != TCP_SYN_SENT && state != TCP_SYN_RECV) {
>  		mask |= mptcp_check_readable(msk);
>  		mask |= mptcp_check_writeable(msk);
> +	} else if (ssock && state == TCP_SYN_SENT && inet_sk(ssock->sk)->defer_connect) {

... and check it here.

Cheers,

Paolo


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-09-21 17:43 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-21 15:25 [PATCH mptcp-next v1 0/5] mptcp: add support for TFO, sender side only Benjamin Hesmans
2022-09-21 15:25 ` [PATCH mptcp-next v1 1/5] mptcp: add TCP_FASTOPEN_CONNECT socket option Benjamin Hesmans
2022-09-21 15:25 ` [PATCH mptcp-next v1 2/5] tcp: export tcp_sendmsg_fastopen Benjamin Hesmans
2022-09-21 15:25 ` [PATCH mptcp-next v1 3/5] mptcp: handle defer connect in mptcp_sendmsg Benjamin Hesmans
2022-09-21 17:41   ` Paolo Abeni
2022-09-21 15:25 ` [PATCH mptcp-next v1 4/5] mptcp: add MSG_FASTOPEN support Benjamin Hesmans
2022-09-21 15:25 ` [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Benjamin Hesmans
2022-09-21 16:52   ` mptcp: poll allow write call before actual connect: Tests Results MPTCP CI
2022-09-21 17:43   ` [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Paolo Abeni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).