Date: Tue, 7 Jun 2005 21:25:14 -0700 (PDT) From: Mohan Srinivasan <mohan_srinivasan@yahoo.com> To: Andrey Chernov <ache@nagual.pp.ru> Cc: raja@moselle.com, current@freebsd.org, demizu@dd.iij4u.or.jp Subject: Re: Still something wrong with tcp_sack_option () Message-ID: <20050608042514.19223.qmail@web80604.mail.yahoo.com> In-Reply-To: 6667
next in thread | raw e-mail | index | archive | help
Hi, Noritoshi Demizu sent me a fix for this issue. Can you try this fix ? I'll get this committed to -current shortly. It looks like because you run with larger windows, generating a lot of sack holes, we ran into the sackhole limits that caused allocation of a new sackhole to fail, causing the bug. thanks ! mohan Index: tcp_sack.c =================================================================== RCS file: /home/cvsup/FreeBSD/ncvs/src/sys/netinet/tcp_sack.c,v retrieving revision 1.22 diff -u -r1.22 tcp_sack.c --- tcp_sack.c 6 Jun 2005 19:46:53 -0000 1.22 +++ tcp_sack.c 8 Jun 2005 03:18:42 -0000 @@ -458,13 +458,19 @@ * beyond the current fack, they will be inserted by * way of hole splitting in the while-loop below. */ - tcp_sackhole_insert(tp, tp->snd_fack, sblkp->start, NULL); + temp = tcp_sackhole_insert(tp, tp->snd_fack,sblkp->start,NULL); + if (temp == NULL) + return 0; tp->snd_fack = sblkp->end; /* Go to the previous sack block. */ sblkp--; } else if (SEQ_LT(tp->snd_fack, sblkp->end)) /* fack is advanced. */ tp->snd_fack = sblkp->end; + /* + * At this point, at least one SACK hole must exist. + */ + KASSERT(!TAILQ_EMPTY(&tp->snd_holes), ("SACK scoreboard is emtpy")); cur = TAILQ_LAST(&tp->snd_holes, sackhole_head); /* Last SACK hole */ /* * Since the incoming sack blocks are sorted, we can process them --- Andrey Chernov <ache@nagual.pp.ru> wrote: > On Tue, Jun 07, 2005 at 07:01:22PM -0700, Mohan Srinivasan wrote: > > Yes. That will work around it too. > > > > I forget to mention that I use relatively large send/recvspace, about > 128K, it may increase bug trigger because SACK happens often. > > -- > http://ache.pp.ru/ > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050608042514.19223.qmail>