Fix: Support mptcp ofo-queue coalescing and collapsing

When we are under memory-pressure, because the truesize/payload-ratio
has been underestimated the TCP-stack does ofo-queue coalescing to bring
the stack back into normal state.

We did not have this implemented for MPTCP.
This patch supports now ofo-queue coalescing and collapsing of the ofo
and the receive-queue. The results are really good:

In uml, setting tcp_adv_win_scale to 0, to force an underestimation,
doing an iperf-session

Before:
~250Mbps

After:
~600Mbps

And, we collapsed more than 100000 packets:
TcpExtTCPRcvCollapsed           105252

Reported-by: Nils Caspar <ncaspar@me.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Fix Bug#23: Correctly handle congestion-window limitations

We may encounter cwnd-limitations after choosing a subflow, because we
change tso_segs afterwards. If this happens on a DATA_FIN with data, we
might reject this segment, if tso_segs becomes bigger than 1.

This patch fixes this, by correctly handling cwnd-limitations. If the
subflow is limited, we avoid reselecting this one and choose another
subflow.

Reported-by: cjqing0925 (https://github.com/cjqing0925)
Fixes: https://github.com/multipath-tcp/mptcp/issues/23
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
New stable release v0.88.5

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Fix Bug#24: Correctly handle closed-sockets in tcp_rcv_state_process

While merging to 3.11, we messed up one case-statement of the switch in
tcp_rcv_state_process. This patch moves the case-statement again where
it belongs.

Reported-by: David Heidelberger <david.heidelberger@ixit.cz>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Make packet-sizes equal to the maximum among all subflows

Since dbeb18b2219 (tcp: TSO packets automatic sizing) the TSO
packet-size depends on the sending-rate. As MPTCP took the packet-size
as being the minimum among all subflows, if you had a very slow subflow
the packet-size would be quite low.

This patch makes the packet-size become rather the maximum among all
subflows. We will be making more fragmentations in mptcp_write_xmit in
case of a slight MSS-difference, but at least we are no more hurting the
subflow with the fastest sending-rate with too-small packets.

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

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: Fix wrong packet-count in the meta-sk when reinjecting

In mptcp_write_xmit we are updating the pcount of every segment as the
MSS's may be different and we have to consider the correct pcount later
on in mptcp_write_xmit.

If we are reinjecting to overcome receive-buffer limitations, we may
modify the pcount of the segment in the send-queue. Then we have an
incorrect packets_out-counter.

So, we have to adjust it.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
New stable release v0.88.6

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Merge remote-tracking branch 'upstream/mptcp_v0.88' into mptcp_v0.88_binder_v6