Subject: Re: TCP/Westwood+ support.
To: Kentaro A. Kurahone <kurahone@sekhmet.sigusr1.org>
From: Charles M. Hannum <abuse@spamalicious.com>
List: tech-kern
Date: 01/03/2005 17:11:35
> if (tp->snd_cwnd > ssthresh)
> tp->snd_cwnd = ssthresh;
>
> /*
> * Do the fast retransmit.
> */
> tp->snd_recover = tp->snd_max;
> TCP_TIMER_DISARM(tp, TCPT_REXMT);
> tp->t_rtttime = 0;
> tp->snd_nxt = th->th_ack;
> (void) tcp_output(tp);
> if (SEQ_GT(onxt, tp->snd_nxt))
> tp->snd_nxt = onxt;
> }
Whoops, I'm on crack. You do need to do the two separate settings of
snd_cwnd, like in the Reno code, to make sure you only send one packet.
OTOH, you certainly don't need to calculate the Reno ssthresh here, like you
were doing.