In current RFC3465 Appropriate Byte Count implementation,
slow start after retransmit timeout does not work.
I fixed it.

--
Daikichi Osuga


*** linux-2.6.15.i686.org/net/ipv4/tcp_input.c 2006-07-25 15:44:35.000000000 
+0900
--- linux-2.6.15.i686/net/ipv4/tcp_input.c 2006-08-08 14:38:24.000000000 +0900
***************
*** 2450,2456 ****
  if (before(ack, prior_snd_una))
   goto old_ack;
! if (sysctl_tcp_abc && icsk->icsk_ca_state < TCP_CA_CWR)
   tp->bytes_acked += ack - prior_snd_una;
if (!(flag&FLAG_SLOWPATH) && after(ack, prior_snd_una)) {
--- 2551,2557 ----
  if (before(ack, prior_snd_una))
   goto old_ack;
! if (sysctl_tcp_abc && (icsk->icsk_ca_state < TCP_CA_CWR || icsk->icsk_ca_state == TCP_CA_Loss))
   tp->bytes_acked += ack - prior_snd_una;
if (!(flag&FLAG_SLOWPATH) && after(ack, prior_snd_una)) {
*** linux-2.6.15.i686.org/net/ipv4/tcp_cong.c 2006-07-25 15:44:35.000000000 
+0900
--- linux-2.6.15.i686/net/ipv4/tcp_cong.c 2006-08-08 15:47:45.000000000 +0900
***************
*** 180,185 ****
--- 180,186 ----
  */
 void tcp_slow_start(struct tcp_sock *tp)
 {
+  struct inet_connection_sock *icsk = (struct inet_connection_sock *)tp;
  if (sysctl_tcp_abc) {
   /* RFC3465: Slow Start
    * TCP sender SHOULD increase cwnd by the number of
***************
*** 190,196 ****
    return;
/* We MAY increase by 2 if discovered delayed ack */
!   if (sysctl_tcp_abc > 1 && tp->bytes_acked > 2*tp->mss_cache) {
    if (tp->snd_cwnd < tp->snd_cwnd_clamp)
     tp->snd_cwnd++;
   }
--- 191,197 ----
    return;
/* We MAY increase by 2 if discovered delayed ack */
!   if (sysctl_tcp_abc > 1 && tp->bytes_acked >= 2*tp->mss_cache && 
icsk->icsk_ca_state != TCP_CA_Loss) {
    if (tp->snd_cwnd < tp->snd_cwnd_clamp)
     tp->snd_cwnd++;
   }

-
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

Reply via email to