diff options
author | rrs <rrs@FreeBSD.org> | 2007-04-19 11:28:43 +0000 |
---|---|---|
committer | rrs <rrs@FreeBSD.org> | 2007-04-19 11:28:43 +0000 |
commit | e8a77bd9270dfbfa30aa44607f5f3ecb4e70ee3e (patch) | |
tree | d950582b945c3e6f66e506197c41a7fa14d07c72 /sys/netinet/sctp_indata.c | |
parent | 19613c2bfe0ba59b977ac06457e84b93cceb5045 (diff) | |
download | FreeBSD-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.c | 19 |
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) { |