diff mbox series

[v2,1/4] Squash-to: "net: mptcp: improve fallback to TCP"

Message ID dab15370315ced25255947ec1ea3d9b62e3387b9.1592477699.git.pabeni@redhat.com
State Accepted, archived
Delegated to: Matthieu Baerts
Headers show
Series mptcp: fallback refactor follow-up | expand

Commit Message

Paolo Abeni June 18, 2020, 10:55 a.m. UTC
We need to take care of shutdown, too: drop the
special fallback handling.

Additionally invoke the state_change op on the
relevant socket (the msk one).

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
 net/mptcp/protocol.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

Comments

Mat Martineau June 18, 2020, 9:01 p.m. UTC | #1
On Thu, 18 Jun 2020, Paolo Abeni wrote:

> We need to take care of shutdown, too: drop the
> special fallback handling.
>
> Additionally invoke the state_change op on the
> relevant socket (the msk one).
>
> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> ---
> net/mptcp/protocol.c | 12 +++---------
> 1 file changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> index faa804f63c81..2c15bf4cdb53 100644
> --- a/net/mptcp/protocol.c
> +++ b/net/mptcp/protocol.c
> @@ -1404,8 +1404,6 @@ static void mptcp_subflow_shutdown(struct sock *ssk, int how,
> 		break;
> 	}
>
> -	/* Wake up anyone sleeping in poll. */
> -	ssk->sk_state_change(ssk);
> 	release_sock(ssk);
> }
>
> @@ -2091,18 +2089,11 @@ static int mptcp_shutdown(struct socket *sock, int how)
> {
> 	struct mptcp_sock *msk = mptcp_sk(sock->sk);
> 	struct mptcp_subflow_context *subflow;
> -	struct socket *ssock;
> 	int ret = 0;
>
> 	pr_debug("sk=%p, how=%d", msk, how);
>
> 	lock_sock(sock->sk);
> -	ssock = __mptcp_tcp_fallback(msk);
> -	if (ssock) {
> -		release_sock(sock->sk);
> -		return inet_shutdown(ssock, how);
> -	}
> -
> 	if (how == SHUT_WR || how == SHUT_RDWR)
> 		inet_sk_state_store(sock->sk, TCP_FIN_WAIT1);
>
> @@ -2128,6 +2119,9 @@ static int mptcp_shutdown(struct socket *sock, int how)
> 		mptcp_subflow_shutdown(tcp_sk, how, 1, msk->write_seq);
> 	}
>
> +	/* Wake up anyone sleeping in poll. */
> +	sock->sk->sk_state_change(sock->sk);
> +

I had added this to mptcp_shutdown in my WIP too, so looks good to me!

> out_unlock:
> 	release_sock(sock->sk);
>
> -- 
> 2.26.2

--
Mat Martineau
Intel
diff mbox series

Patch

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index faa804f63c81..2c15bf4cdb53 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1404,8 +1404,6 @@  static void mptcp_subflow_shutdown(struct sock *ssk, int how,
 		break;
 	}
 
-	/* Wake up anyone sleeping in poll. */
-	ssk->sk_state_change(ssk);
 	release_sock(ssk);
 }
 
@@ -2091,18 +2089,11 @@  static int mptcp_shutdown(struct socket *sock, int how)
 {
 	struct mptcp_sock *msk = mptcp_sk(sock->sk);
 	struct mptcp_subflow_context *subflow;
-	struct socket *ssock;
 	int ret = 0;
 
 	pr_debug("sk=%p, how=%d", msk, how);
 
 	lock_sock(sock->sk);
-	ssock = __mptcp_tcp_fallback(msk);
-	if (ssock) {
-		release_sock(sock->sk);
-		return inet_shutdown(ssock, how);
-	}
-
 	if (how == SHUT_WR || how == SHUT_RDWR)
 		inet_sk_state_store(sock->sk, TCP_FIN_WAIT1);
 
@@ -2128,6 +2119,9 @@  static int mptcp_shutdown(struct socket *sock, int how)
 		mptcp_subflow_shutdown(tcp_sk, how, 1, msk->write_seq);
 	}
 
+	/* Wake up anyone sleeping in poll. */
+	sock->sk->sk_state_change(sock->sk);
+
 out_unlock:
 	release_sock(sock->sk);