PERFORCE change 166477 for review
Andre Oppermann
andre at FreeBSD.org
Thu Jul 23 21:10:45 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=166477
Change 166477 by andre at andre_t61 on 2009/07/23 21:10:13
Another go ot rcv_reass_size reporting the size of all sack'ed blocks held.
Affected files ...
.. //depot/projects/tcp_reass/netinet/tcp_reass.c#43 edit
Differences ...
==== //depot/projects/tcp_reass/netinet/tcp_reass.c#43 (text+ko) ====
@@ -219,8 +219,8 @@
total += size;
i++;
}
- //KASSERT(tp->rcv_reass_size == total,
- // ("%s: total not correct", __func__));
+ KASSERT(tp->rcv_reass_size == total,
+ ("%s: rcv_reass_size not correct", __func__));
LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) {
i--;
@@ -241,6 +241,7 @@
LIST_REMOVE(trb, trb_sack);
if (trb->trb_m != NULL)
m_freem(trb->trb_m);
+ tp->rcv_reass_size -= SEQ_DELTA(trb->trb_seqs, trb->trb_seqe);
tp->rcv_reass_blocks--;
uma_zfree(tcp_reass_zone, trb);
}
@@ -257,7 +258,9 @@
RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) {
tcp_reass_free(tp, trb);
}
- //KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__));
+
+ KASSERT(tp->rcv_reass_size == 0,
+ ("%s: rcv_reass_size not zero after flushing", __func__));
}
static __inline void
@@ -411,6 +414,7 @@
tp->rcv_reass_dsack.end = trbs.trb_seqe;
goto done;
}
+ tp->rcv_reass_size += SEQ_DELTA(trbs.trb_seqs, trbs.trb_seqe);
/* Merge in the new segment. */
(void)tcp_reass_merge(trb, &trbs);
@@ -528,16 +532,16 @@
KASSERT(trb != NULL && trbn != NULL,
("%s: incomplete input", __func__));
-
KASSERT(SEQ_LT(trbn->trb_seqs, trb->trb_seqs) ||
SEQ_GT(trbn->trb_seqe, trb->trb_seqe),
- ("%s: ", __func__));
+ ("%s: blocks not overlapping", __func__));
/* Replace, prepend and append. */
if (SEQ_LEQ(trbn->trb_seqs, trb->trb_seqs) &&
SEQ_GEQ(trbn->trb_seqe, trb->trb_seqe)) {
- m_freem(trb->trb_m);
+ i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe);
+
trb->trb_seqs = trbn->trb_seqs;
trb->trb_seqe = trbn->trb_seqe;
trb->trb_m = trbn->trb_m;
@@ -575,10 +579,10 @@
return (NULL);
trbn->trb_seqs = 0;
- trbn->trb_seqe = 0;
+ trbn->trb_seqe = i;
trbn->trb_m = NULL;
trbn->trb_mt = NULL;
- return (trbn);
+ return (trbn);
}
/*
More information about the p4-projects
mailing list