All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [MPTCP] [RFC PATCH v3 10/16] mptcp: Add shutdown() socket operation
@ 2018-10-10 12:43 Matthieu Baerts
  0 siblings, 0 replies; 4+ messages in thread
From: Matthieu Baerts @ 2018-10-10 12:43 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 2051 bytes --]

Hi Peter,

On 06/10/2018 00:59, Mat Martineau wrote:
> From: Peter Krystad <peter.krystad(a)intel.com>
> 
> Signed-off-by: Peter Krystad <peter.krystad(a)intel.com>
> ---
>  net/mptcp/protocol.c | 21 ++++++++++++++++++++-
>  1 file changed, 20 insertions(+), 1 deletion(-)
> 
> diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> index 2fa9031a77ca..3d10ab287bd6 100644
> --- a/net/mptcp/protocol.c
> +++ b/net/mptcp/protocol.c
> @@ -255,6 +255,25 @@ int mptcp_stream_accept(struct socket *sock, struct socket *newsock, int flags,
>  	return inet_accept(sock, newsock, flags, kern);
>  }
>  
> +int mptcp_stream_shutdown(struct socket *sock, int how)
> +{
> +	struct mptcp_sock *msk = mptcp_sk(sock->sk);
> +	int ret = 0;
> +
> +	pr_debug("sk=%p, how=%d", msk, how);
> +
> +	if (msk->subflow) {
> +		pr_debug("subflow=%p", msk->subflow->sk);
> +		ret = kernel_sock_shutdown(msk->subflow, how);
> +	}
> +	if (msk->connection_list) {
> +		pr_debug("conn_list->subflow=%p", msk->connection_list->sk);
> +		ret = kernel_sock_shutdown(msk->connection_list, how);

Just to be sure, can we have "subflow != NULL" and "connection_list !=
NULL"?
Because I saw the possible override of "ret" here but it is not possible
to have both a "subflow" and a "connection_list" (we could use a "else
if" here I guess).

Cheers,
Matthieu

> +	}
> +
> +	return ret;
> +}
> +
>  static struct proto mptcp_prot = {
>  	.name		= "MPTCP",
>  	.owner		= THIS_MODULE,
> @@ -284,7 +303,7 @@ const struct proto_ops mptcp_stream_ops = {
>  	.poll		   = tcp_poll,
>  	.ioctl		   = inet_ioctl,
>  	.listen		   = mptcp_stream_listen,
> -	.shutdown	   = inet_shutdown,
> +	.shutdown	   = mptcp_stream_shutdown,
>  	.setsockopt	   = sock_common_setsockopt,
>  	.getsockopt	   = sock_common_getsockopt,
>  	.sendmsg	   = inet_sendmsg,
> 

-- 
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium

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

* Re: [MPTCP] [RFC PATCH v3 10/16] mptcp: Add shutdown() socket operation
@ 2018-10-11 11:24 Matthieu Baerts
  0 siblings, 0 replies; 4+ messages in thread
From: Matthieu Baerts @ 2018-10-11 11:24 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 3141 bytes --]

On Wed, Oct 10, 2018 at 10:42 PM Krystad, Peter <peter.krystad(a)intel.com> wrote:
>
> On Wed, 2018-10-10 at 14:43 +0200, Matthieu Baerts wrote:
> > Hi Peter,
> >
> > On 06/10/2018 00:59, Mat Martineau wrote:
> > > From: Peter Krystad <peter.krystad(a)intel.com>
> > >
> > > Signed-off-by: Peter Krystad <peter.krystad(a)intel.com>
> > > ---
> > >  net/mptcp/protocol.c | 21 ++++++++++++++++++++-
> > >  1 file changed, 20 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> > > index 2fa9031a77ca..3d10ab287bd6 100644
> > > --- a/net/mptcp/protocol.c
> > > +++ b/net/mptcp/protocol.c
> > > @@ -255,6 +255,25 @@ int mptcp_stream_accept(struct socket *sock, struct socket *newsock, int flags,
> > >     return inet_accept(sock, newsock, flags, kern);
> > >  }
> > >
> > > +int mptcp_stream_shutdown(struct socket *sock, int how)
> > > +{
> > > +   struct mptcp_sock *msk = mptcp_sk(sock->sk);
> > > +   int ret = 0;
> > > +
> > > +   pr_debug("sk=%p, how=%d", msk, how);
> > > +
> > > +   if (msk->subflow) {
> > > +           pr_debug("subflow=%p", msk->subflow->sk);
> > > +           ret = kernel_sock_shutdown(msk->subflow, how);
> > > +   }
> > > +   if (msk->connection_list) {
> > > +           pr_debug("conn_list->subflow=%p", msk->connection_list->sk);
> > > +           ret = kernel_sock_shutdown(msk->connection_list, how);
> >
> > Just to be sure, can we have "subflow != NULL" and "connection_list !=
> > NULL"?
> > Because I saw the possible override of "ret" here but it is not possible
> > to have both a "subflow" and a "connection_list" (we could use a "else
> > if" here I guess).
>
> Your point is good, it should not be possible for them both to be set.
>
>
> But in a future commit the connection_list will become a real rcu
> linked list of  subflows and a single lock will be used to protect the
> list and the subflow field. When the in-progress subflow is done
> connecting it will be moved to the connection list under lock
> protection.

Yes, sorry I should have added another comment after have seen that.
Thank you for the precision!

Matthieu

> Peter.
>
> > Cheers,
> > Matthieu
> >
> > > +   }
> > > +
> > > +   return ret;
> > > +}
> > > +
> > >  static struct proto mptcp_prot = {
> > >     .name           = "MPTCP",
> > >     .owner          = THIS_MODULE,
> > > @@ -284,7 +303,7 @@ const struct proto_ops mptcp_stream_ops = {
> > >     .poll              = tcp_poll,
> > >     .ioctl             = inet_ioctl,
> > >     .listen            = mptcp_stream_listen,
> > > -   .shutdown          = inet_shutdown,
> > > +   .shutdown          = mptcp_stream_shutdown,
> > >     .setsockopt        = sock_common_setsockopt,
> > >     .getsockopt        = sock_common_getsockopt,
> > >     .sendmsg           = inet_sendmsg,
> > >
> >
> >



-- 
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium

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

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

* Re: [MPTCP] [RFC PATCH v3 10/16] mptcp: Add shutdown() socket operation
@ 2018-10-10 20:42 Krystad, Peter
  0 siblings, 0 replies; 4+ messages in thread
From: Krystad, Peter @ 2018-10-10 20:42 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 2421 bytes --]

On Wed, 2018-10-10 at 14:43 +0200, Matthieu Baerts wrote:
> Hi Peter,
> 
> On 06/10/2018 00:59, Mat Martineau wrote:
> > From: Peter Krystad <peter.krystad(a)intel.com>
> > 
> > Signed-off-by: Peter Krystad <peter.krystad(a)intel.com>
> > ---
> >  net/mptcp/protocol.c | 21 ++++++++++++++++++++-
> >  1 file changed, 20 insertions(+), 1 deletion(-)
> > 
> > diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> > index 2fa9031a77ca..3d10ab287bd6 100644
> > --- a/net/mptcp/protocol.c
> > +++ b/net/mptcp/protocol.c
> > @@ -255,6 +255,25 @@ int mptcp_stream_accept(struct socket *sock, struct socket *newsock, int flags,
> >  	return inet_accept(sock, newsock, flags, kern);
> >  }
> >  
> > +int mptcp_stream_shutdown(struct socket *sock, int how)
> > +{
> > +	struct mptcp_sock *msk = mptcp_sk(sock->sk);
> > +	int ret = 0;
> > +
> > +	pr_debug("sk=%p, how=%d", msk, how);
> > +
> > +	if (msk->subflow) {
> > +		pr_debug("subflow=%p", msk->subflow->sk);
> > +		ret = kernel_sock_shutdown(msk->subflow, how);
> > +	}
> > +	if (msk->connection_list) {
> > +		pr_debug("conn_list->subflow=%p", msk->connection_list->sk);
> > +		ret = kernel_sock_shutdown(msk->connection_list, how);
> 
> Just to be sure, can we have "subflow != NULL" and "connection_list !=
> NULL"?
> Because I saw the possible override of "ret" here but it is not possible
> to have both a "subflow" and a "connection_list" (we could use a "else
> if" here I guess).

Your point is good, it should not be possible for them both to be set.


But in a future commit the connection_list will become a real rcu
linked list of  subflows and a single lock will be used to protect the
list and the subflow field. When the in-progress subflow is done
connecting it will be moved to the connection list under lock
protection.

Peter.

> Cheers,
> Matthieu
> 
> > +	}
> > +
> > +	return ret;
> > +}
> > +
> >  static struct proto mptcp_prot = {
> >  	.name		= "MPTCP",
> >  	.owner		= THIS_MODULE,
> > @@ -284,7 +303,7 @@ const struct proto_ops mptcp_stream_ops = {
> >  	.poll		   = tcp_poll,
> >  	.ioctl		   = inet_ioctl,
> >  	.listen		   = mptcp_stream_listen,
> > -	.shutdown	   = inet_shutdown,
> > +	.shutdown	   = mptcp_stream_shutdown,
> >  	.setsockopt	   = sock_common_setsockopt,
> >  	.getsockopt	   = sock_common_getsockopt,
> >  	.sendmsg	   = inet_sendmsg,
> > 
> 
> 

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

* [MPTCP] [RFC PATCH v3 10/16] mptcp: Add shutdown() socket operation
@ 2018-10-05 22:59 Mat Martineau
  0 siblings, 0 replies; 4+ messages in thread
From: Mat Martineau @ 2018-10-05 22:59 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 1461 bytes --]

From: Peter Krystad <peter.krystad(a)intel.com>

Signed-off-by: Peter Krystad <peter.krystad(a)intel.com>
---
 net/mptcp/protocol.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 2fa9031a77ca..3d10ab287bd6 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -255,6 +255,25 @@ int mptcp_stream_accept(struct socket *sock, struct socket *newsock, int flags,
 	return inet_accept(sock, newsock, flags, kern);
 }
 
+int mptcp_stream_shutdown(struct socket *sock, int how)
+{
+	struct mptcp_sock *msk = mptcp_sk(sock->sk);
+	int ret = 0;
+
+	pr_debug("sk=%p, how=%d", msk, how);
+
+	if (msk->subflow) {
+		pr_debug("subflow=%p", msk->subflow->sk);
+		ret = kernel_sock_shutdown(msk->subflow, how);
+	}
+	if (msk->connection_list) {
+		pr_debug("conn_list->subflow=%p", msk->connection_list->sk);
+		ret = kernel_sock_shutdown(msk->connection_list, how);
+	}
+
+	return ret;
+}
+
 static struct proto mptcp_prot = {
 	.name		= "MPTCP",
 	.owner		= THIS_MODULE,
@@ -284,7 +303,7 @@ const struct proto_ops mptcp_stream_ops = {
 	.poll		   = tcp_poll,
 	.ioctl		   = inet_ioctl,
 	.listen		   = mptcp_stream_listen,
-	.shutdown	   = inet_shutdown,
+	.shutdown	   = mptcp_stream_shutdown,
 	.setsockopt	   = sock_common_setsockopt,
 	.getsockopt	   = sock_common_getsockopt,
 	.sendmsg	   = inet_sendmsg,
-- 
2.19.1


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

end of thread, other threads:[~2018-10-11 11:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-10 12:43 [MPTCP] [RFC PATCH v3 10/16] mptcp: Add shutdown() socket operation Matthieu Baerts
  -- strict thread matches above, loose matches on Subject: below --
2018-10-11 11:24 Matthieu Baerts
2018-10-10 20:42 Krystad, Peter
2018-10-05 22:59 Mat Martineau

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.