Still something wrong with tcp_sack_option ()
Mohan Srinivasan
mohan_srinivasan at yahoo.com
Wed Jun 8 04:25:15 GMT 2005
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 at 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 at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
>
More information about the freebsd-current
mailing list