tcp: add gfp parameter to tcp_fragment

tcp_fragment can be called from process context (from tso_fragment).
Add a new gfp parameter to allow it to preserve atomic memory if
possible.

Depends-on: c8ac37746489f ([TCP]: Fix bug #5070: kernel BUG at net/ipv4/tcp_output.c:864)
Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: add gfp parameter to mptcp_fragment

mptcp_fragment can be called from process context (from
mptso_fragment).  Add a new gfp parameter to allow it to preserve
atomic memory, if possible.

Depends-on: e5d878af34b2e (tcp: add gfp parameter to tcp_fragment)
Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: remove mptso_fragment

In the MPTCP case mptso_fragment can be called for frames that already
leaved the meta-sock so we must ajust the packet counters. This makes
mptso_fragment very similar with mptcp_fragment.

To remove some code duplication lets use mptcp_fragment instead of
mptso_fragment, the overhead should be very small.

Depends-on: e5d878af34b2e (tcp: add gfp parameter to tcp_fragment)
Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
mptcp: remove code duplication between mptcp_fragment and tcp_fragment

Because DSS handling has now been moved out of tcp_fragment, we can
avoid duplicating code between mptcp_fragment and tcp_fragment.

For the reinjection case we do need to undo some tcp_fragment
operations. Not so pretty, but still I think it is better since it is
easier to read how the MPTCP path differs over the TCP path.

Depends-on: e5d878af34b2e (tcp: add gfp parameter to tcp_fragment)
Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>