Paolo Abeni wrote: > > No, its also for outgoing connections, we use in kernel sockets for > > those. > > Uhm... I see. Everything created via mptcp_subflow_create_socket(), > right? I though of always using msk's socket also/mainly to reduce the > memory usage, but server side we should have very few > mptcp_subflow_create_socket() instances, so I guess it's no necessary > optimize them. FWIW it might make sense to not have those in kernel sockets either in the future, but this might need a bit more changes to how outgoing connections work in mptcp-next. I would have a look at it at some later date, I don't think its a high priority. > > > > @@ -1443,6 +1470,20 @@ static int mptcp_stream_accept(struct socket *sock, struct socket *newsock, > > > > return -EINVAL; > > > > > > > > err = ssock->ops->accept(sock, newsock, flags, kern); > > > > + if (err == 0 && (newsock->sk->sk_prot == &mptcp_prot || > > > > + is_mptcp_v6(newsock))) { > > > > > > Is not clear to me why/how we can hit the condition '!(newsock->sk- > > > > sk_prot == &mptcp_prot || is_mptcp_v6(newsock))' ... Can you please > > > explain? > > > > We will hit it when we get connection from non-mptcp peer, i.e. the > > !mp_capable part of mptcp_accept(). > > > > In that case sk_prot is &tcp_prot. > > > > It might make sense to change this to > > err == 0 && newsock->sk->sk_prot != &tcp_prot > > > > perhaps that would clarify this a bit. WDYT? > > Yep, I like this latter code more! Ok, I've flagged the patches 'RFC' in patchwork already. I will make this change and will resubmit that part later. Thanks, Florian