mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
Update MPTCP with a BLEST fix
This commit is contained in:
parent
3ecb98175a
commit
97d48e22fc
1 changed files with 6 additions and 3 deletions
|
@ -8164,7 +8164,7 @@ diff -aurN linux-4.19.56/net/mptcp/mptcp_binder.c mptcp-mptcp_v0.95/net/mptcp/mp
|
||||||
diff -aurN linux-4.19.56/net/mptcp/mptcp_blest.c mptcp-mptcp_v0.95/net/mptcp/mptcp_blest.c
|
diff -aurN linux-4.19.56/net/mptcp/mptcp_blest.c mptcp-mptcp_v0.95/net/mptcp/mptcp_blest.c
|
||||||
--- linux-4.19.56/net/mptcp/mptcp_blest.c 1970-01-01 01:00:00.000000000 +0100
|
--- linux-4.19.56/net/mptcp/mptcp_blest.c 1970-01-01 01:00:00.000000000 +0100
|
||||||
+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_blest.c 2019-07-05 08:00:07.000000000 +0200
|
+++ mptcp-mptcp_v0.95/net/mptcp/mptcp_blest.c 2019-07-05 08:00:07.000000000 +0200
|
||||||
@@ -0,0 +1,475 @@
|
@@ -0,0 +1,478 @@
|
||||||
+// SPDX-License-Identifier: GPL-2.0
|
+// SPDX-License-Identifier: GPL-2.0
|
||||||
+/* MPTCP Scheduler to reduce HoL-blocking and spurious retransmissions.
|
+/* MPTCP Scheduler to reduce HoL-blocking and spurious retransmissions.
|
||||||
+ *
|
+ *
|
||||||
|
@ -8367,7 +8367,7 @@ diff -aurN linux-4.19.56/net/mptcp/mptcp_blest.c mptcp-mptcp_v0.95/net/mptcp/mpt
|
||||||
+
|
+
|
||||||
+ /* if we decided to use a slower flow, we have the option of not using it at all */
|
+ /* if we decided to use a slower flow, we have the option of not using it at all */
|
||||||
+ if (bestsk && minsk && bestsk != minsk) {
|
+ if (bestsk && minsk && bestsk != minsk) {
|
||||||
+ u32 slow_linger_time, fast_bytes, slow_inflight_bytes, slow_bytes, avail_space;
|
+ u32 slow_linger_time, fast_bytes, buffered_bytes, slow_inflight_bytes, slow_bytes, avail_space;
|
||||||
+
|
+
|
||||||
+ meta_tp = tcp_sk(meta_sk);
|
+ meta_tp = tcp_sk(meta_sk);
|
||||||
+ besttp = tcp_sk(bestsk);
|
+ besttp = tcp_sk(bestsk);
|
||||||
|
@ -8380,13 +8380,16 @@ diff -aurN linux-4.19.56/net/mptcp/mptcp_blest.c mptcp-mptcp_v0.95/net/mptcp/mpt
|
||||||
+ slow_linger_time = blestsched_estimate_linger_time(bestsk);
|
+ slow_linger_time = blestsched_estimate_linger_time(bestsk);
|
||||||
+ fast_bytes = blestsched_estimate_bytes(minsk, slow_linger_time);
|
+ fast_bytes = blestsched_estimate_bytes(minsk, slow_linger_time);
|
||||||
+
|
+
|
||||||
|
+ if (skb)
|
||||||
|
+ buffered_bytes = skb->len;
|
||||||
|
+
|
||||||
+ /* is the required space available in the mptcp meta send window?
|
+ /* is the required space available in the mptcp meta send window?
|
||||||
+ * we assume that all bytes inflight on the slow path will be acked in besttp->srtt seconds
|
+ * we assume that all bytes inflight on the slow path will be acked in besttp->srtt seconds
|
||||||
+ * (just like the SKB if it was sent now) -> that means that those inflight bytes will
|
+ * (just like the SKB if it was sent now) -> that means that those inflight bytes will
|
||||||
+ * keep occupying space in the meta window until then
|
+ * keep occupying space in the meta window until then
|
||||||
+ */
|
+ */
|
||||||
+ slow_inflight_bytes = besttp->write_seq - besttp->snd_una;
|
+ slow_inflight_bytes = besttp->write_seq - besttp->snd_una;
|
||||||
+ slow_bytes = skb->len + slow_inflight_bytes; // bytes of this SKB plus those in flight already
|
+ slow_bytes = buffered_bytes + slow_inflight_bytes; // bytes of this SKB plus those in flight already
|
||||||
+
|
+
|
||||||
+ avail_space = (slow_bytes < meta_tp->snd_wnd) ? (meta_tp->snd_wnd - slow_bytes) : 0;
|
+ avail_space = (slow_bytes < meta_tp->snd_wnd) ? (meta_tp->snd_wnd - slow_bytes) : 0;
|
||||||
+
|
+
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue