mpcb_from_tcpsock - remove it!

It is just dereferencing one single pointer...

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Limit calls to mpcb_meta_tp and mpcb_meta_sk

We prefer now to pass the meta-sk as the argument. This will make it
easier later on.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Put the meta_tp in the tk_hashtable

That way we can add the master-sk in the tk_hashtable in
tcp_connect_init.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix Bug#81: Add token in hash-table in tcp_connect_init

And change the locking of the token-table.
We had two locks. One for the request-sock token-table and one for the
meta-socket token-table.
We always took both locks in the most speed-critical regions
(tcp_openreq_init and tcp_connect_init). Thus, its better to protect
both token-tables by a single lock.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Make the tk-table rcu-style

That way, read-access to the tk-table is lock-less. This is necessary,
because the address-event handler takes first the tk-table-lock and then
the lock-sock although mptcp_alloc_mpcb is holding the lock-sock before
accessing the tk-table.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Definetly remove mpcb_meta_tp/sk

Now, we can get rid of it - necessary for subsequent patches.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Add meta-sk pointer in tcp_sock

Adding this one will be necessary, as we have to access from the
sub-socket directly to the meta-sk without passing by the mpcb. As
mptcp_cb and meta-sk will get separated.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Split mptcp_cb and the meta_sk

Finally, the split of mptcp_cb and the meta-sk. This is necessary to let
the application talk to the meta-sk from the beginning on.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Let the app talk to the meta-sk

And the biggest change. The application creates the master-sk, and the
meta-sk will later be the inheritance of the master-sk.

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

Some more cleanup of the code.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Moved some fields into tcp_options_received structure.

This fields were moved from multipath_options structure
in order to have them on a per-subflow level rather than on
a per-mptcp level.

Signed-off-by: Stefan Sicleru <stefan.g.sicleru@intel.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Wake up when taking data out of the out-of-order queue

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Allow first part of tcp_try_rmem_schedule

If we are running out of receive-buffer, we call tcp_prune_queue.
We did block MPTCP directly there.
We now allow a first part of it to be executed as it is safe to do so.

The tcp_collapse-code is not yet working. Thus, this is still blocked.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Make mptcp_data_ack more look like tcp_ack

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

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

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Handle probe-timer at the meta-level

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Clear xmit-timer when creating master-sk

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Cleanup: Use tcp_rearm_rto in mptcp

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Retransmit the subskb, not the skb

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