diff options
author | rrs <rrs@FreeBSD.org> | 2007-03-19 06:53:02 +0000 |
---|---|---|
committer | rrs <rrs@FreeBSD.org> | 2007-03-19 06:53:02 +0000 |
commit | af970e3016805a81bd955a154f67086cd68daaa0 (patch) | |
tree | f1e1b2a5f87feb92e42f13f0cbbd9dc84f4c596b /sys/netinet/sctp_indata.c | |
parent | 40843dd888818f89cbcb66dac8c424df851f6e7b (diff) | |
download | FreeBSD-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.c | 23 |
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 |