diff options
Diffstat (limited to 'net/ipv4/tcp_cubic.c')
| -rw-r--r-- | net/ipv4/tcp_cubic.c | 35 | 
1 files changed, 8 insertions, 27 deletions
diff --git a/net/ipv4/tcp_cubic.c b/net/ipv4/tcp_cubic.c index 3aa0b23c1ea..eb5b9854c8c 100644 --- a/net/ipv4/tcp_cubic.c +++ b/net/ipv4/tcp_cubic.c @@ -1,12 +1,13 @@  /* - * TCP CUBIC: Binary Increase Congestion control for TCP v2.1 - * + * TCP CUBIC: Binary Increase Congestion control for TCP v2.2 + * Home page: + *      http://netsrv.csc.ncsu.edu/twiki/bin/view/Main/BIC   * This is from the implementation of CUBIC TCP in   * Injong Rhee, Lisong Xu.   *  "CUBIC: A New TCP-Friendly High-Speed TCP Variant   *  in PFLDnet 2005   * Available from: - *  http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf + *  http://netsrv.csc.ncsu.edu/export/cubic-paper.pdf   *   * Unless CUBIC is enabled and congestion window is large   * this behaves the same as the original Reno. @@ -20,15 +21,10 @@  #define BICTCP_BETA_SCALE    1024	/* Scale factor beta calculation  					 * max_cwnd = snd_cwnd * beta  					 */ -#define BICTCP_B		4	 /* -					  * In binary search, -					  * go to point (max+min)/N -					  */  #define	BICTCP_HZ		10	/* BIC HZ 2^10 = 1024 */  static int fast_convergence __read_mostly = 1; -static int max_increment __read_mostly = 16; -static int beta __read_mostly = 819;	/* = 819/1024 (BICTCP_BETA_SCALE) */ +static int beta __read_mostly = 717;	/* = 717/1024 (BICTCP_BETA_SCALE) */  static int initial_ssthresh __read_mostly;  static int bic_scale __read_mostly = 41;  static int tcp_friendliness __read_mostly = 1; @@ -40,9 +36,7 @@ static u64 cube_factor __read_mostly;  /* Note parameters that are used for precomputing scale factors are read-only */  module_param(fast_convergence, int, 0644);  MODULE_PARM_DESC(fast_convergence, "turn on/off fast convergence"); -module_param(max_increment, int, 0644); -MODULE_PARM_DESC(max_increment, "Limit on increment allowed during binary search"); -module_param(beta, int, 0444); +module_param(beta, int, 0644);  MODULE_PARM_DESC(beta, "beta for multiplicative increase");  module_param(initial_ssthresh, int, 0644);  MODULE_PARM_DESC(initial_ssthresh, "initial value of slow start threshold"); @@ -145,7 +139,7 @@ static u32 cubic_root(u64 a)  static inline void bictcp_update(struct bictcp *ca, u32 cwnd)  {  	u64 offs; -	u32 delta, t, bic_target, min_cnt, max_cnt; +	u32 delta, t, bic_target, max_cnt;  	ca->ack_cnt++;	/* count the number of ACKs */ @@ -211,19 +205,6 @@ static inline void bictcp_update(struct bictcp *ca, u32 cwnd)  		ca->cnt = 100 * cwnd;              /* very small increment*/  	} -	if (ca->delay_min > 0) { -		/* max increment = Smax * rtt / 0.1  */ -		min_cnt = (cwnd * HZ * 8)/(10 * max_increment * ca->delay_min); - -		/* use concave growth when the target is above the origin */ -		if (ca->cnt < min_cnt && t >= ca->bic_K) -			ca->cnt = min_cnt; -	} - -	/* slow start and low utilization  */ -	if (ca->loss_cwnd == 0)		/* could be aggressive in slow start */ -		ca->cnt = 50; -  	/* TCP Friendly */  	if (tcp_friendliness) {  		u32 scale = beta_scale; @@ -391,4 +372,4 @@ module_exit(cubictcp_unregister);  MODULE_AUTHOR("Sangtae Ha, Stephen Hemminger");  MODULE_LICENSE("GPL");  MODULE_DESCRIPTION("CUBIC TCP"); -MODULE_VERSION("2.1"); +MODULE_VERSION("2.2");  |