diff -urNp linux-2.6.13/net/ipv4/tcp_bic.c linux-2.6.13-new/net/ipv4/tcp_bic.c --- linux-2.6.13/net/ipv4/tcp_bic.c 2005-08-28 18:41:01.000000000 -0500 +++ linux-2.6.13-new/net/ipv4/tcp_bic.c 2005-10-13 12:12:22.000000000 -0500 @@ -27,7 +27,7 @@ */ static int fast_convergence = 1; -static int max_increment = 32; +static int max_increment = 16; static int low_window = 14; static int beta = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */ static int low_utilization_threshold = 153; @@ -136,17 +136,16 @@ static inline void bictcp_update(struct else if (cwnd < ca->last_max_cwnd + max_increment*(BICTCP_B-1)) /* slow start */ ca->cnt = (cwnd * (BICTCP_B-1)) - / cwnd-ca->last_max_cwnd; + / (cwnd-ca->last_max_cwnd); else /* linear increase */ ca->cnt = cwnd / max_increment; } /* if in slow start or link utilization is very low */ - if ( ca->loss_cwnd == 0 || - (cwnd > ca->loss_cwnd && ca->low_utilization)) { - if (ca->cnt > 20) /* increase cwnd 5% per RTT */ - ca->cnt = 20; + if ( ca->loss_cwnd == 0) { + if (ca->cnt > 50) /* increase cwnd 5% per RTT */ + ca->cnt = 50; } ca->cnt = (ca->cnt << ACK_RATIO_SHIFT) / ca->delayed_ack;