summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_indata.c
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2007-03-19 06:53:02 +0000
committerrrs <rrs@FreeBSD.org>2007-03-19 06:53:02 +0000
commitaf970e3016805a81bd955a154f67086cd68daaa0 (patch)
treef1e1b2a5f87feb92e42f13f0cbbd9dc84f4c596b /sys/netinet/sctp_indata.c
parent40843dd888818f89cbcb66dac8c424df851f6e7b (diff)
downloadFreeBSD-src-af970e3016805a81bd955a154f67086cd68daaa0.zip
FreeBSD-src-af970e3016805a81bd955a154f67086cd68daaa0.tar.gz
- errno -> becomes error in sctp_output.c and sctputil.c
- SB_CLEAR macro defined and used for sb clearing. - Fix for CMT express_sack_handling did not do proper pseudo-cumack updates. - Get rid of extraneous function that was never used ip_2_ip6_hdr() - Fixed source address selection bug (initialization problem). - Source address selection debug added.
Diffstat (limited to 'sys/netinet/sctp_indata.c')
-rw-r--r--sys/netinet/sctp_indata.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/sys/netinet/sctp_indata.c b/sys/netinet/sctp_indata.c
index 517f1d1..36bace9 100644
--- a/sys/netinet/sctp_indata.c
+++ b/sys/netinet/sctp_indata.c
@@ -4072,6 +4072,13 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack,
net->prev_cwnd = net->cwnd;
net->net_ack = 0;
net->net_ack2 = 0;
+
+ /*
+ * CMT: Reset CUC and Fast recovery algo variables before
+ * SACK processing
+ */
+ net->new_pseudo_cumack = 0;
+ net->will_exit_fast_recovery = 0;
}
if (sctp_strict_sacks) {
uint32_t send_s;
@@ -4173,6 +4180,22 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack,
tp1->do_rtt = 0;
}
}
+ /*
+ * CMT: CUCv2 algorithm. From the
+ * cumack'd TSNs, for each TSN being
+ * acked for the first time, set the
+ * following variables for the
+ * corresp destination.
+ * new_pseudo_cumack will trigger a
+ * cwnd update.
+ * find_(rtx_)pseudo_cumack will
+ * trigger search for the next
+ * expected (rtx-)pseudo-cumack.
+ */
+ tp1->whoTo->new_pseudo_cumack = 1;
+ tp1->whoTo->find_pseudo_cumack = 1;
+ tp1->whoTo->find_rtx_pseudo_cumack = 1;
+
#ifdef SCTP_CWND_LOGGING
sctp_log_cwnd(stcb, tp1->whoTo, tp1->rec.data.TSN_seq, SCTP_CWND_LOG_FROM_SACK);
#endif
OpenPOWER on IntegriCloud