]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: merge 'init_req' and 'route_req' functions
authorFlorian Westphal <fw@strlen.de>
Mon, 30 Nov 2020 15:36:30 +0000 (16:36 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 3 Dec 2020 20:56:03 +0000 (12:56 -0800)
commit8aec45040b762ad9bcefc5c0d38e320137172185
treeee60d28532343974c65fcc8876e2341c0931e18d
parent5ac7383c140635e0ea97d80f1da3612df87788f2
tcp: merge 'init_req' and 'route_req' functions

The Multipath-TCP standard (RFC 8684) says that an MPTCP host should send
a TCP reset if the token in a MP_JOIN request is unknown.

At this time we don't do this, the 3whs completes and the 'new subflow'
is reset afterwards.  There are two ways to allow MPTCP to send the
reset.

1. override 'send_synack' callback and emit the rst from there.
   The drawback is that the request socket gets inserted into the
   listeners queue just to get removed again right away.

2. Send the reset from the 'route_req' function instead.
   This avoids the 'add&remove request socket', but route_req lacks the
   skb that is required to send the TCP reset.

Instead of just adding the skb to that function for MPTCP sake alone,
Paolo suggested to merge init_req and route_req functions.

This saves one indirection from syn processing path and provides the skb
to the merged function at the same time.

'send reset on unknown mptcp join token' is added in next patch.

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Cc: Eric Dumazet <edumazet@google.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/tcp.h
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv6/tcp_ipv6.c
net/mptcp/subflow.c