Bug in TCP window update?

Andre Oppermann oppermann at networx.ch
Thu Jan 13 13:55:36 PST 2005


Girish Rayas wrote:
> 
> In tcp_input.c, window is updated when below condition is true,
> 
> if ((thflags & TH_ACK) &&
> (SEQ_LT(tp->snd_wl1, th->th_seq) ||
> (tp->snd_wl1 == th->th_seq && (SEQ_LT(tp->snd_wl2, th->th_ack) ||
> (tp->snd_wl2 == th->th_ack && tiwin > tp->snd_wnd)))))
> 
> This check is to prevent old segments from affecting the send window.
> But, left trim logic that was executed earlier in tcp_input.c sets the
> th->th_seq to
> tp->rcv_nxt for old segments. In many scenarios this effectively causes
> snd_wl1 < th_seq and results in incorrect window update by old
> segments.
> 
> Using actual sequence number of received segment in the above if
> statement will fix the problem. Any comments?

Please file a PR and post the PR number so we can track this properly.

Thanks
-- 
Andre


More information about the freebsd-net mailing list