@@ -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 ;
766766nosearch :
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