Skip to content
This repository was archived by the owner on Oct 2, 2025. It is now read-only.

Commit 4703ebc

Browse files
committed
allow search above 90 percent
1 parent cc53f8e commit 4703ebc

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

include/linux/tcp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ struct tcp_sock {
515515
u64 prev_tstamp;
516516
u32 rate_est_val;
517517
u32 rate_est_cnt;
518-
u32 last_rate_search_start[3]; /* 3 because that's the search trigger threshold */
518+
u32 last_rate_search_start[5]; /* 5 because that's the search trigger threshold */
519519
u32 init_buffer_size[2];
520520
u32 last_buffer_size[2];
521521
u8 buffer_threshold_cnt;

net/mptcp/mptcp_ratio.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -600,8 +600,8 @@ static struct sk_buff *mptcp_ratio_next_segment(struct sock *meta_sk,
600600
iter++;
601601
}/*End value estimation per sampling interval*/
602602

603-
for (iter = 0; iter < 3; iter++) {
604-
if (iter == 2)
603+
for (iter = 0; iter < 5; iter++) {
604+
if (iter == 4)
605605
meta_tp->last_rate_search_start[iter] = meta_tp->rate_delivered;//is current rate
606606
else
607607
meta_tp->last_rate_search_start[iter] = meta_tp->last_rate_search_start[iter+1];//keep shifting to get the updated rate
@@ -746,7 +746,7 @@ static struct sk_buff *mptcp_ratio_next_segment(struct sock *meta_sk,
746746
meta_tp->ratio_rate_sample = meta_tp->ratio_rate_sample*4;
747747
last_trigger_tstamp = jiffies;
748748

749-
if (meta_tp->num_segments_flow_one < (100 - abs(meta_tp->ratio_search_step))) {
749+
if (meta_tp->num_segments_flow_one <= (100 - abs(meta_tp->ratio_search_step))) {
750750
meta_tp->search_state = RIGHT_RATIO_SET;
751751
meta_tp->num_segments_flow_one += meta_tp->ratio_search_step;
752752
}
@@ -759,9 +759,9 @@ static struct sk_buff *mptcp_ratio_next_segment(struct sock *meta_sk,
759759

760760
/*Calculating averate last_rate if we decide to search*/
761761
last_rate = 0;
762-
for (iter = 0; iter < 3; iter++)
762+
for (iter = 0; iter < 5; iter++)
763763
last_rate += meta_tp->last_rate_search_start[iter];
764-
do_div(last_rate, 3);
764+
do_div(last_rate, 5);
765765
goto reset;
766766
nosearch:
767767
printk("NO SEARCH\n");
@@ -779,8 +779,8 @@ static struct sk_buff *mptcp_ratio_next_segment(struct sock *meta_sk,
779779
switch(meta_tp->search_state) {
780780
case RIGHT_RATIO_SET:
781781
printk("RIGHT_RATIO_SET");
782-
if (meta_tp->rate_delivered > last_rate + 5) {
783-
if (meta_tp->num_segments_flow_one + meta_tp->ratio_search_step < 100) {
782+
if (meta_tp->rate_delivered > last_rate) {
783+
if (meta_tp->num_segments_flow_one + meta_tp->ratio_search_step <= 100) {
784784
meta_tp->num_segments_flow_one += meta_tp->ratio_search_step;
785785
meta_tp->search_state = SEARCH_RATE;
786786
} else {
@@ -803,7 +803,7 @@ static struct sk_buff *mptcp_ratio_next_segment(struct sock *meta_sk,
803803
break;
804804
case LEFT_RATIO_SET:
805805
printk("LEFT_RATIO_SET");
806-
if (meta_tp->rate_delivered > last_rate + 5) {
806+
if (meta_tp->rate_delivered > last_rate) {
807807
meta_tp->ratio_search_step = -1*abs(meta_tp->ratio_search_step);
808808
if (meta_tp->num_segments_flow_one > abs(meta_tp->ratio_search_step)) {
809809
meta_tp->num_segments_flow_one += meta_tp->ratio_search_step;
@@ -827,7 +827,7 @@ static struct sk_buff *mptcp_ratio_next_segment(struct sock *meta_sk,
827827
if (meta_tp->rate_delivered < last_rate) {
828828
meta_tp->num_segments_flow_one -= meta_tp->ratio_search_step;
829829
meta_tp->ratio_search_step = abs(meta_tp->ratio_search_step);
830-
if (meta_tp->num_segments_flow_one + meta_tp->ratio_search_step/2 < 100) {
830+
if (meta_tp->num_segments_flow_one + meta_tp->ratio_search_step/2 <= 100) {
831831
meta_tp->num_segments_flow_one += meta_tp->ratio_search_step/2;
832832
meta_tp->search_state = RIGHT_RATIO_FINE;
833833
} else {
@@ -848,7 +848,7 @@ static struct sk_buff *mptcp_ratio_next_segment(struct sock *meta_sk,
848848
break;
849849
case RIGHT_RATIO_FINE:
850850
printk("RIGHT_RATIO_FINE");
851-
if (meta_tp->rate_delivered > last_rate + 5) {
851+
if (meta_tp->rate_delivered > last_rate) {
852852
last_rate = 0;
853853
in_search = false;
854854
meta_tp->ratio_rate_sample = sysctl_mptcp_rate_sample;
@@ -867,7 +867,7 @@ static struct sk_buff *mptcp_ratio_next_segment(struct sock *meta_sk,
867867
break;
868868
case LEFT_RATIO_FINE:
869869
printk("LEFT_RATIO_FINE");
870-
if (meta_tp->rate_delivered <= last_rate + 5) {
870+
if (meta_tp->rate_delivered <= last_rate) {
871871
meta_tp->num_segments_flow_one += meta_tp->ratio_search_step/2;
872872
}
873873
last_rate = 0;

0 commit comments

Comments
 (0)