Date: Thu, 13 Jan 2005 22:55:36 +0100 From: Andre Oppermann <oppermann@networx.ch> To: Girish Rayas <grayas@gmail.com> Cc: freebsd-net@freebsd.org Subject: Re: Bug in TCP window update? Message-ID: <41E6EE58.EBF168A4@networx.ch> References: <9c9fb1860501101737268508be@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41E6EE58.EBF168A4>