1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-13 03:41:54 +00:00

Backport some MPTCP changes from Christoph Paasch

This commit is contained in:
Ycarus 2019-05-24 19:36:28 +02:00
parent 8fd4a789b9
commit 1bc77db345
2 changed files with 12 additions and 11 deletions

View file

@ -8139,7 +8139,7 @@ diff -aurN linux-4.14.121/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.94/net/mptcp/
diff -aurN linux-4.14.121/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ctrl.c diff -aurN linux-4.14.121/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.94/net/mptcp/mptcp_ctrl.c
--- linux-4.14.121/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 --- linux-4.14.121/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100
+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ctrl.c 2019-05-23 20:14:17.000000000 +0200 +++ mptcp-mptcp_v0.94/net/mptcp/mptcp_ctrl.c 2019-05-23 20:14:17.000000000 +0200
@@ -0,0 +1,3001 @@ @@ -0,0 +1,3000 @@
+/* +/*
+ * MPTCP implementation - MPTCP-control + * MPTCP implementation - MPTCP-control
+ * + *
@ -9511,8 +9511,6 @@ diff -aurN linux-4.14.121/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.94/net/mptcp/mpt
+ tp->mptcp->attached = 1; + tp->mptcp->attached = 1;
+ +
+ mpcb->cnt_subflows++; + mpcb->cnt_subflows++;
+ atomic_add(atomic_read(&((struct sock *)tp)->sk_rmem_alloc),
+ &meta_sk->sk_rmem_alloc);
+ +
+ mptcp_sub_inherit_sockopts(meta_sk, sk); + mptcp_sub_inherit_sockopts(meta_sk, sk);
+ INIT_DELAYED_WORK(&tp->mptcp->work, mptcp_sub_close_wq); + INIT_DELAYED_WORK(&tp->mptcp->work, mptcp_sub_close_wq);
@ -9779,6 +9777,7 @@ diff -aurN linux-4.14.121/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.94/net/mptcp/mpt
+ if (!cancel_delayed_work(work)) + if (!cancel_delayed_work(work))
+ return; + return;
+ sock_put(sk); + sock_put(sk);
+ mptcp_mpcb_put(tp->mpcb);
+ } + }
+ +
+ if (!delay) { + if (!delay) {
@ -17043,7 +17042,7 @@ diff -aurN linux-4.14.121/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.94/net/mptcp/mpt
diff -aurN linux-4.14.121/net/mptcp/mptcp_output.c mptcp-mptcp_v0.94/net/mptcp/mptcp_output.c diff -aurN linux-4.14.121/net/mptcp/mptcp_output.c mptcp-mptcp_v0.94/net/mptcp/mptcp_output.c
--- linux-4.14.121/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 --- linux-4.14.121/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100
+++ mptcp-mptcp_v0.94/net/mptcp/mptcp_output.c 2019-05-23 20:14:17.000000000 +0200 +++ mptcp-mptcp_v0.94/net/mptcp/mptcp_output.c 2019-05-23 20:14:17.000000000 +0200
@@ -0,0 +1,1822 @@ @@ -0,0 +1,1824 @@
+/* +/*
+ * MPTCP implementation - Sending side + * MPTCP implementation - Sending side
+ * + *
@ -18523,6 +18522,8 @@ diff -aurN linux-4.14.121/net/mptcp/mptcp_output.c mptcp-mptcp_v0.94/net/mptcp/m
+ UINT_MAX / mss_now, + UINT_MAX / mss_now,
+ TCP_NAGLE_OFF); + TCP_NAGLE_OFF);
+ +
+ limit = min(limit, tcp_wnd_end(meta_tp) - TCP_SKB_CB(skb)->seq);
+
+ if (skb->len > limit && + if (skb->len > limit &&
+ unlikely(mptcp_fragment(meta_sk, skb, limit, + unlikely(mptcp_fragment(meta_sk, skb, limit,
+ GFP_ATOMIC, 0))) + GFP_ATOMIC, 0)))
@ -19800,7 +19801,7 @@ diff -aurN linux-4.14.121/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.94/net/mptcp/mp
+ * calculated end_seq (because here at this point end_seq is still at + * calculated end_seq (because here at this point end_seq is still at
+ * the meta-level). + * the meta-level).
+ */ + */
+ if (skb && !zero_wnd_test && + if (skb && zero_wnd_test &&
+ after(tp->write_seq + min(skb->len, mss_now), tcp_wnd_end(tp))) + after(tp->write_seq + min(skb->len, mss_now), tcp_wnd_end(tp)))
+ return true; + return true;
+ +

View file

@ -8885,7 +8885,7 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.95/net/mptcp/m
diff -aurN linux-4.19.44/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ctrl.c diff -aurN linux-4.19.44/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.95/net/mptcp/mptcp_ctrl.c
--- linux-4.19.44/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 --- linux-4.19.44/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100
+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ctrl.c 2019-05-23 10:38:14.000000000 +0200 +++ mptcp-mptcp_v0.95/net/mptcp/mptcp_ctrl.c 2019-05-23 10:38:14.000000000 +0200
@@ -0,0 +1,3112 @@ @@ -0,0 +1,3110 @@
+/* +/*
+ * MPTCP implementation - MPTCP-control + * MPTCP implementation - MPTCP-control
+ * + *
@ -10343,9 +10343,6 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.95/net/mptcp/mptc
+ +
+ tp->mptcp->attached = 1; + tp->mptcp->attached = 1;
+ +
+ atomic_add(atomic_read(&((struct sock *)tp)->sk_rmem_alloc),
+ &meta_sk->sk_rmem_alloc);
+
+ mptcp_sub_inherit_sockopts(meta_sk, sk); + mptcp_sub_inherit_sockopts(meta_sk, sk);
+ INIT_DELAYED_WORK(&tp->mptcp->work, mptcp_sub_close_wq); + INIT_DELAYED_WORK(&tp->mptcp->work, mptcp_sub_close_wq);
+ +
@ -10598,6 +10595,7 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.95/net/mptcp/mptc
+ if (!cancel_delayed_work(work)) + if (!cancel_delayed_work(work))
+ return; + return;
+ sock_put(sk); + sock_put(sk);
+ mptcp_mpcb_put(tp->mpcb);
+ } + }
+ +
+ if (!delay) { + if (!delay) {
@ -19021,7 +19019,7 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.95/net/mptcp/mptc
diff -aurN linux-4.19.44/net/mptcp/mptcp_output.c mptcp-mptcp_v0.95/net/mptcp/mptcp_output.c diff -aurN linux-4.19.44/net/mptcp/mptcp_output.c mptcp-mptcp_v0.95/net/mptcp/mptcp_output.c
--- linux-4.19.44/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 --- linux-4.19.44/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100
+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_output.c 2019-05-23 10:38:14.000000000 +0200 +++ mptcp-mptcp_v0.95/net/mptcp/mptcp_output.c 2019-05-23 10:38:14.000000000 +0200
@@ -0,0 +1,1923 @@ @@ -0,0 +1,1925 @@
+/* +/*
+ * MPTCP implementation - Sending side + * MPTCP implementation - Sending side
+ * + *
@ -20593,6 +20591,8 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_output.c mptcp-mptcp_v0.95/net/mptcp/mp
+ UINT_MAX / mss_now, + UINT_MAX / mss_now,
+ TCP_NAGLE_OFF); + TCP_NAGLE_OFF);
+ +
+ limit = min(limit, tcp_wnd_end(meta_tp) - TCP_SKB_CB(skb)->seq);
+
+ if (skb->len > limit && + if (skb->len > limit &&
+ unlikely(mptcp_fragment(meta_sk, TCP_FRAG_IN_RTX_QUEUE, skb, + unlikely(mptcp_fragment(meta_sk, TCP_FRAG_IN_RTX_QUEUE, skb,
+ limit, GFP_ATOMIC, 0))) + limit, GFP_ATOMIC, 0)))
@ -21976,7 +21976,7 @@ diff -aurN linux-4.19.44/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.95/net/mptcp/mpt
+ * calculated end_seq (because here at this point end_seq is still at + * calculated end_seq (because here at this point end_seq is still at
+ * the meta-level). + * the meta-level).
+ */ + */
+ if (skb && !zero_wnd_test && + if (skb && zero_wnd_test &&
+ after(tp->write_seq + min(skb->len, mss_now), tcp_wnd_end(tp))) + after(tp->write_seq + min(skb->len, mss_now), tcp_wnd_end(tp)))
+ return true; + return true;
+ +