mptcp: Transform reqsk-htb to rcu-based.

In mptcp_check_req we do a lookup for the five-tuple in the reqsk-htb
for every incoming segment that matches on a listening-socket. This is
needed because any third ack may finalize the 3-way handshake of an
additional subflow. And it is also very suboptimal...

So, improve the situation a bit, by making this an RCU-based list.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Unify collide_tuple and collide_tk into hash_entry

Now that collide_tuple and collide_tk are both hlist-nulls lists, we can
unite them, as they are either used for initial subflows OR for
additional subflows.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Move saw_mpc from tcp_request_sock to inet_request_sock

saw_mpc creates a 7-byte padding in tcp_request_sock. But, in
inet_request_sock there are still some bits left. So, we move saw_mpc to
the inet_request_sock. Anyways, in inet_request_sock there are already
TCP-bits (probably for the same reason).

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Introduce is_sub-flag in the request-sock

This allows to use mptcp_mpcb only on newly created sockets, paving the
path for a union in mptcp_request_sock.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Create union in mptcp_request_sock

This effectively reduces the size of mptcp_request_sock by one
cache-line on common kernel-configs (e.g., those without extensive
debugging enabled).

We can create the union, because many fields are either used for new
MPTCP-connections or for new subflows.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>