Hi gurus, I am not sure if there is a problem in the additive increment (AI) parameter of tcp_highspeed.c:
When snd_cwnd is smaller than 38 and the connection is in congestion avoidance phase (snd_cwnd > snd_ssthresh), the snd_cwnd seems to stop growing. I guess the problem is in the function of hstcp_cong_avoid (Ln 126~Ln 138 of tcp_highspeed.c): -------------------------------- if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) { while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && ca->ai < HSTCP_AIMD_MAX - 1) ca->ai++; } else if (tp->snd_cwnd < hstcp_aimd_vals[ca->ai].cwnd) { while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && ca->ai > 0) ca->ai--; } /* Do additive increase */ if (tp->snd_cwnd < tp->snd_cwnd_clamp) { tp->snd_cwnd_cnt += ca->ai; -------------------------------- When snd_cwnd < snd_ssthresh, this part of code is effective. And since snd_cwnd is smaller than 38, which is hstcp_aimd_vals[0].cwnd, ca->ai will be equal to 0. Hence, snd_cwnd_cnt will be unchanged for the rest of the connection. As a result, snd_cwnd also freezes. I guess we can add change the Line 138 to make the algorithm more reliable? - tp->snd_cwnd_cnt += ca->ai; + tp->snd_cwnd_cnt += (ca->ai+1); Thanks. -David --------------------------------------------------------- Xiaoliang (David) Wei http://davidwei.org Graduate Student, Netlab, Caltech ====================================== - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html