Fix: Reset snd_nxt when falling back to infinite

snd_nxt must be reset too, to have correct accounting afterwards.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Update copied_seq when purging rcv-queue upon csum-failure

Otherwise, copied_seq is out of sync with the rest. It is safer, to
update it correctly.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: mptcp_skb_split_tail allocate a tcp-header

We need a tcp-header because we are accessing the fin-flag.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: When falling back to infinite, don't use the subseq from the DSS

The middlebox messed up with our mapping. We can only rely on the
mapping in the tcp-header.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Final fix to infinite mapping

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

Conflicts:

	net/ipv4/tcp_output.c
	net/mptcp/mptcp_output.c
Build-Fix

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

Conflicts:

	net/mptcp/mptcp_input.c
Add version-info

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Infinite fallback - replace csum_error by send_mp_fail

Otherwise we will not stop sending mp_fails, because csum_error is set
to 1.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Allow to resend on same subflow if all possibilities expired

We must allow resending on the same subflow, if no other possibility
exists. Otherwise, we cannot reinject data that is missing at the
destination through a middlbox that randomly removes DSS-options.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Cleanup: Remove unused variables from tcp_skb_cb

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Fully fallback to infinite, if first data is without DSS

We have to do seamless bidirectional fallback, when the first data is without
DSS.
Bidirectional fallback has been introduced in c00e8536517 (Final fix to
infinite mapping)

Reported-by: Krishna Khanal <erkrishna.khanal@gmail.com>
Tested-by: Krishna Khanal <erkrishna.khanal@gmail.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Update version-info

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

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Support receiving DSS without CSUM - even if it has been negotiated.

RFC 6824, Section 3.3:
If a checksum is not present when its use has been negotiated, the
receiver MUST close the subflow with a RST as it is considered broken.

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

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