Fix: Call tcp_set_skb_tso_segs instead of init

It may be that a segment is inside the write-queue, with tso_segs
initialized. This will prevent the call to tcp_set_skb_tso_segs from
tcp_init_tso_segs.

However, we have no guarantee at all that a subsocket supports TSO,
because it may be a new subflow.

So, we force the call to tcp_set_skb_tso_segs always.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Correctly handle release-cb on subflows.

It may be that a subsocket will get a tsq-flag set although it has just
been removed from the connection_list. This may happen during
subflow-destruction.

To fight against this, we add subflows to a callback_list of the mpcb,
if they get the tsq-flag set. That way upon release_sock, the
meta-socket will iterate over the callback_list.

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

When the write-timer fires, we do not know if it was for the meta-sk or
rather for the subflow. If it fired for the meta-sk and we are owned by
the user, this would make us get stuck, as the write-timer won't ever
fire again.

We fix this by changing the way we handle tsq-deferring in MPTCP.

A new bit is set, if the deferring is for the subflow. Then, we iterate
over the subflows to handle the deferring.

That way, we can disambiguate between meta-deferring and
subflow-deferring. We also change the way TCP small-queue handling is
done. It will now be handled with a call to mptcp_write_xmit and
tcp_write_xmit, to be able to process both kinds of limitations.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Wakeup application when increasing sk_sndbuf

In regular TCP, when sk_sndbuf increases, the app is woken up. With
MPTCP however, the call will end up in mptcp_write_space. We have to
explicitly wakeup the app in mptcp_update_sndbuf.

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