Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_output.c
Show First 20 Lines • Show All 1,258 Lines • ▼ Show 20 Lines | if (sack_rxmit == 0) { | ||||
if (len || (flags & (TH_SYN|TH_FIN)) || | if (len || (flags & (TH_SYN|TH_FIN)) || | ||||
tcp_timer_active(tp, TT_PERSIST)) | tcp_timer_active(tp, TT_PERSIST)) | ||||
th->th_seq = htonl(tp->snd_nxt); | th->th_seq = htonl(tp->snd_nxt); | ||||
else | else | ||||
th->th_seq = htonl(tp->snd_max); | th->th_seq = htonl(tp->snd_max); | ||||
} else { | } else { | ||||
th->th_seq = htonl(p->rxmit); | th->th_seq = htonl(p->rxmit); | ||||
p->rxmit += len; | p->rxmit += len; | ||||
/* | |||||
* Lost Retransmission Detection | |||||
* trigger resending of a (then | |||||
* still existing) hole, when | |||||
* fack acks recoverypoint. | |||||
*/ | |||||
if ((tp->t_flags & TF_LRD) && SEQ_GEQ(p->rxmit, p->end)) | |||||
p->rxmit = tp->snd_recover; | |||||
tp->sackhint.sack_bytes_rexmit += len; | tp->sackhint.sack_bytes_rexmit += len; | ||||
} | } | ||||
if (IN_RECOVERY(tp->t_flags)) { | if (IN_RECOVERY(tp->t_flags)) { | ||||
/* | /* | ||||
* Account all bytes transmitted while | * Account all bytes transmitted while | ||||
* IN_RECOVERY, simplifying PRR and | * IN_RECOVERY, simplifying PRR and | ||||
* Lost Retransmit Detection | * Lost Retransmit Detection | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 910 Lines • Show Last 20 Lines |