Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_input.c
Show First 20 Lines • Show All 2,594 Lines • ▼ Show 20 Lines | if (SEQ_LEQ(th->th_ack, tp->snd_una)) { | ||||
imax(1, tp->snd_nxt - tp->snd_una); | imax(1, tp->snd_nxt - tp->snd_una); | ||||
snd_cnt = howmany((long)tp->sackhint.prr_delivered * | snd_cnt = howmany((long)tp->sackhint.prr_delivered * | ||||
tp->snd_ssthresh, tp->sackhint.recover_fs) - | tp->snd_ssthresh, tp->sackhint.recover_fs) - | ||||
(tp->sackhint.sack_bytes_rexmit + | (tp->sackhint.sack_bytes_rexmit + | ||||
(tp->snd_nxt - tp->snd_recover)); | (tp->snd_nxt - tp->snd_recover)); | ||||
} else { | } else { | ||||
if (V_tcp_do_prr_conservative) | if (V_tcp_do_prr_conservative) | ||||
limit = tp->sackhint.prr_delivered - | limit = tp->sackhint.prr_delivered - | ||||
tp->sackhint.sack_bytes_rexmit; | (tp->sackhint.sack_bytes_rexmit + | ||||
(tp->snd_nxt - tp->snd_recover)); | |||||
else | else | ||||
limit = imax(tp->sackhint.prr_delivered - | limit = imax(tp->sackhint.prr_delivered - | ||||
tp->sackhint.sack_bytes_rexmit, | (tp->sackhint.sack_bytes_rexmit + | ||||
(tp->snd_nxt - tp->snd_recover)), | |||||
del_data) + maxseg; | del_data) + maxseg; | ||||
snd_cnt = imin(tp->snd_ssthresh - pipe, limit); | snd_cnt = imin(tp->snd_ssthresh - pipe, limit); | ||||
} | } | ||||
snd_cnt = imax(snd_cnt, 0) / maxseg; | snd_cnt = imax(snd_cnt, 0) / maxseg; | ||||
/* | /* | ||||
* Send snd_cnt new data into the network in | * Send snd_cnt new data into the network in | ||||
* response to this ACK. If there is a going | * response to this ACK. If there is a going | ||||
* to be a SACK retransmission, adjust snd_cwnd | * to be a SACK retransmission, adjust snd_cwnd | ||||
▲ Show 20 Lines • Show All 1,356 Lines • ▼ Show 20 Lines | if (tp->sackhint.recover_fs == 0) | ||||
imax(1, tp->snd_nxt - tp->snd_una); | imax(1, tp->snd_nxt - tp->snd_una); | ||||
snd_cnt = howmany((long)tp->sackhint.prr_delivered * | snd_cnt = howmany((long)tp->sackhint.prr_delivered * | ||||
tp->snd_ssthresh, tp->sackhint.recover_fs) - | tp->snd_ssthresh, tp->sackhint.recover_fs) - | ||||
(tp->sackhint.sack_bytes_rexmit + | (tp->sackhint.sack_bytes_rexmit + | ||||
(tp->snd_nxt - tp->snd_recover)); | (tp->snd_nxt - tp->snd_recover)); | ||||
} else { | } else { | ||||
if (V_tcp_do_prr_conservative) | if (V_tcp_do_prr_conservative) | ||||
limit = tp->sackhint.prr_delivered - | limit = tp->sackhint.prr_delivered - | ||||
tp->sackhint.sack_bytes_rexmit; | (tp->sackhint.sack_bytes_rexmit + | ||||
(tp->snd_nxt - tp->snd_recover)); | |||||
else | else | ||||
limit = imax(tp->sackhint.prr_delivered - | limit = imax(tp->sackhint.prr_delivered - | ||||
tp->sackhint.sack_bytes_rexmit, | (tp->sackhint.sack_bytes_rexmit + | ||||
(tp->snd_nxt - tp->snd_recover)), | |||||
del_data) + maxseg; | del_data) + maxseg; | ||||
snd_cnt = imin((tp->snd_ssthresh - pipe), limit); | snd_cnt = imin((tp->snd_ssthresh - pipe), limit); | ||||
} | } | ||||
snd_cnt = imax(snd_cnt, 0) / maxseg; | snd_cnt = imax(snd_cnt, 0) / maxseg; | ||||
/* | /* | ||||
* Send snd_cnt new data into the network in response to this ack. | * Send snd_cnt new data into the network in response to this ack. | ||||
* If there is going to be a SACK retransmission, adjust snd_cwnd | * If there is going to be a SACK retransmission, adjust snd_cwnd | ||||
* accordingly. | * accordingly. | ||||
▲ Show 20 Lines • Show All 80 Lines • Show Last 20 Lines |