summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_indata.c
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2007-04-19 11:28:43 +0000
committerrrs <rrs@FreeBSD.org>2007-04-19 11:28:43 +0000
commite8a77bd9270dfbfa30aa44607f5f3ecb4e70ee3e (patch)
treed950582b945c3e6f66e506197c41a7fa14d07c72 /sys/netinet/sctp_indata.c
parent19613c2bfe0ba59b977ac06457e84b93cceb5045 (diff)
downloadFreeBSD-src-e8a77bd9270dfbfa30aa44607f5f3ecb4e70ee3e.zip
FreeBSD-src-e8a77bd9270dfbfa30aa44607f5f3ecb4e70ee3e.tar.gz
- More work on making send lock contention.
- Removed free-oqueue cache. - Fix counter for sq entries - Increased the amount of information retained on ASOC_TSN logging on the association. - Made it so with the ASOC_TSN logging on sending or recieving an abort we dump the log. - Went through and added invariant's around some panic's that needed them. - decrements went to atomic_subtact_int instead of add -1 - Removed residual count increment that threw off a strm oq count. - Tracks and complaints if we don't have a LAST fragment and clean up the sp structure. - Track a new stat that counts number of abandoned msgs that happen if you close without reading. - Fix lookup of frag point to be aware of a 0 assoc-id. Reviewed by: gnn
Diffstat (limited to 'sys/netinet/sctp_indata.c')
-rw-r--r--sys/netinet/sctp_indata.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/sys/netinet/sctp_indata.c b/sys/netinet/sctp_indata.c
index c9c2ff9..81d6780 100644
--- a/sys/netinet/sctp_indata.c
+++ b/sys/netinet/sctp_indata.c
@@ -1608,9 +1608,12 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc,
asoc->in_tsnlog[asoc->tsn_in_at].tsn = tsn;
asoc->in_tsnlog[asoc->tsn_in_at].strm = strmno;
asoc->in_tsnlog[asoc->tsn_in_at].seq = strmseq;
+ asoc->in_tsnlog[asoc->tsn_in_at].sz = chk_length;
+ asoc->in_tsnlog[asoc->tsn_in_at].flgs = chunk_flags;
asoc->tsn_in_at++;
if (asoc->tsn_in_at >= SCTP_TSN_LOG_SIZE) {
asoc->tsn_in_at = 0;
+ asoc->tsn_in_wrapped = 1;
}
#endif
if ((chunk_flags & SCTP_DATA_FIRST_FRAG) &&
@@ -4077,8 +4080,14 @@ sctp_fs_audit(struct sctp_association *asoc)
acked++;
}
}
+
if ((inflight > 0) || (inbetween > 0)) {
+#ifdef INVARIANTS
panic("Flight size-express incorrect? \n");
+#else
+ printf("Flight size-express incorrect inflight:%d inbetween:%d\n",
+ inflight, inbetween);
+#endif
}
}
@@ -4986,11 +4995,13 @@ skip_segments:
}
if ((TAILQ_FIRST(&asoc->sent_queue) == NULL) &&
(asoc->total_flight > 0)) {
+#ifdef INVARIANTS
panic("Warning flight size is postive and should be 0");
-/*
- printf("Warning flight size incorrect should be 0 is %d\n",
- asoc->total_flight);
-*/
+#else
+
+ printf("Warning flight size incorrect should be 0 is %d\n",
+ asoc->total_flight);
+#endif
asoc->total_flight = 0;
}
if (tp1->data) {
OpenPOWER on IntegriCloud