summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_usrreq.c
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2009-04-04 11:43:32 +0000
committerrrs <rrs@FreeBSD.org>2009-04-04 11:43:32 +0000
commitf72ef579b2bcf1c9f2abd735735fe92b2f8ada15 (patch)
treeaa1f0e7c08d66758879376d7bd3ed3ff5a7c7bb3 /sys/netinet/sctp_usrreq.c
parent3503cf99e3ac0111488d2a57341ab1b1088e2436 (diff)
downloadFreeBSD-src-f72ef579b2bcf1c9f2abd735735fe92b2f8ada15.zip
FreeBSD-src-f72ef579b2bcf1c9f2abd735735fe92b2f8ada15.tar.gz
Many bug fixes (from the IETF hack-fest):
- PR-SCTP had major issues when skipping through a multi-part message. o Did not look at socket buffer. o Did not properly handle the reassmebly queue. o The MARKED segments could interfere and un-skip a chunk causing a problem with the proper FWD-TSN. o No FR of FWD-TSN's was being done. - NR-Sack code was basically disabled. It needed fixes that never got into the real code. - CMT code had issues when the two paths were NOT the same b/w. We found a few small bugs, but also the critcal one here was not dividing the rwnd amongst the paths. Obtained from: Michael Tuexen and myself at the IETF hack-fest ;-)
Diffstat (limited to 'sys/netinet/sctp_usrreq.c')
-rw-r--r--sys/netinet/sctp_usrreq.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c
index b3bfea5..c80cca0 100644
--- a/sys/netinet/sctp_usrreq.c
+++ b/sys/netinet/sctp_usrreq.c
@@ -126,6 +126,10 @@ sctp_pathmtu_adjustment(struct sctp_inpcb *inp,
* since we sent to big of chunk
*/
chk->flags |= CHUNK_FLAGS_FRAGMENT_OK;
+ if (chk->sent < SCTP_DATAGRAM_RESEND) {
+ sctp_flight_size_decrease(chk);
+ sctp_total_flight_decrease(stcb, chk);
+ }
if (chk->sent != SCTP_DATAGRAM_RESEND) {
sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt);
}
@@ -140,8 +144,6 @@ sctp_pathmtu_adjustment(struct sctp_inpcb *inp,
}
/* Clear any time so NO RTT is being done */
chk->do_rtt = 0;
- sctp_flight_size_decrease(chk);
- sctp_total_flight_decrease(stcb, chk);
}
}
}
OpenPOWER on IntegriCloud