Xiaoliang (David) Wei wrote:
Hi gurus,

   I am reading the code of tcp_highspeed.c in the kernel and have a
question on the hstcp_cong_avoid function, specifically the following
AI part (line 136~143 in net/ipv4/tcp_highspeed.c ):

               /* Do additive increase */
               if (tp->snd_cwnd < tp->snd_cwnd_clamp) {
                       tp->snd_cwnd_cnt += ca->ai;
                       if (tp->snd_cwnd_cnt >= tp->snd_cwnd) {
                               tp->snd_cwnd++;
                               tp->snd_cwnd_cnt -= tp->snd_cwnd;
                       }
               }

   In this part, when (tp->snd_cwnd_cnt == tp->snd_cwnd),
snd_cwnd_cnt will be -1... snd_cwnd_cnt is defined as u16, will this
small chance of getting -1 becomes a problem?
Shall we change it by reversing the order of the cwnd++ and cwnd_cnt -= cwnd?

Absolutely correct.  Thanks.

Signed-off-by: John Heffner <[EMAIL PROTECTED]>
diff --git a/net/ipv4/tcp_highspeed.c b/net/ipv4/tcp_highspeed.c
index e0e9d13..b72fa55 100644
--- a/net/ipv4/tcp_highspeed.c
+++ b/net/ipv4/tcp_highspeed.c
@@ -137,8 +137,8 @@ static void hstcp_cong_avoid(struct sock
                if (tp->snd_cwnd < tp->snd_cwnd_clamp) {
                        tp->snd_cwnd_cnt += ca->ai;
                        if (tp->snd_cwnd_cnt >= tp->snd_cwnd) {
-                               tp->snd_cwnd++;
                                tp->snd_cwnd_cnt -= tp->snd_cwnd;
+                               tp->snd_cwnd++;
                        }
                }
        }

Reply via email to