Lines Matching full:end
166 if (SEQ_LEQ(tp->sackblks[0].end, tp->rcv_nxt))
180 tcp_seq start, end;
189 (tp->sackblks[0].end == tp->rcv_nxt))) {
191 saved_blks[0].end = rcv_end;
193 saved_blks[0].start = saved_blks[0].end = 0;
196 head_blk.start = head_blk.end = 0;
198 mid_blk.end = rcv_end;
203 end = tp->sackblks[i].end;
208 if (SEQ_GT(rcv_start, end)) {
212 if (SEQ_GT(tp->rcv_nxt, end)) {
213 if ((SEQ_MAX(rcv_start, start) != SEQ_MIN(rcv_end, end)) &&
215 (head_blk.start == head_blk.end))) {
217 head_blk.end = SEQ_MIN(rcv_end, end);
221 if (((head_blk.start == head_blk.end) ||
223 (SEQ_GT(end, rcv_start) &&
226 head_blk.end = end;
229 mid_blk.end = SEQ_MAX(mid_blk.end, end);
231 (mid_blk.end == end))
234 if (SEQ_LT(head_blk.start, head_blk.end)) {
237 saved_blks[0].end = SEQ_MIN(rcv_end, head_blk.end);
244 if ((SEQ_LT(tp->rcv_nxt, mid_blk.end) &&
246 (mid_blk.end == saved_blks[0].end))) ||
249 saved_blks[n++].end = mid_blk.end;
252 if (((SEQ_LT(tp->sackblks[j].end, mid_blk.start) ||
253 SEQ_GT(tp->sackblks[j].start, mid_blk.end)) &&
259 /* we can end up with a stale initial entry */
260 if (SEQ_LT(saved_blks[i].start, saved_blks[i].end)) {
290 (rcv_end == tp->sackblks[0].end)) {
296 head_blk.end = rcv_end;
307 tcp_seq end = tp->sackblks[i].end;
308 if (SEQ_GEQ(start, end) || SEQ_LEQ(start, tp->rcv_nxt)) {
312 } else if (SEQ_LEQ(head_blk.start, end) &&
313 SEQ_GEQ(head_blk.end, start)) {
331 if (head_blk.start == end)
333 else if (head_blk.end == start)
334 head_blk.end = end;
341 if (SEQ_GT(head_blk.end, end)) {
342 tcp_seq temp = end;
343 end = head_blk.end;
344 head_blk.end = temp;
347 (head_blk.end != end)) {
350 SEQ_LEQ(saved_blks[num_saved-1].end, end))
353 saved_blks[num_saved].end = end;
363 SEQ_LEQ(saved_blks[num_saved-1].end, end))
369 saved_blks[num_saved].end = end;
393 (rcv_start == tp->sackblks[0].end)) {
423 tcp_seq end = tp->sackblks[i].end;
424 if (SEQ_GEQ(start, end) || SEQ_LEQ(start, tp->rcv_nxt)) {
434 saved_blks[num_saved].end = end;
458 tp->sackblks[i].start = tp->sackblks[i].end=0;
465 tcp_sackhole_alloc(struct tcpcb *tp, tcp_seq start, tcp_seq end)
480 hole->end = end;
509 tcp_sackhole_insert(struct tcpcb *tp, tcp_seq start, tcp_seq end,
515 hole = tcp_sackhole_alloc(tp, start, end);
587 sack_blocks[num_sack_blks++].end = th_ack;
607 sack.end = ntohl(sack.end);
608 if (SEQ_GT(sack.end, sack.start) &&
612 SEQ_GT(sack.end, tp->snd_una) &&
613 SEQ_LEQ(sack.end, tp->snd_max) &&
614 ((sack.end - sack.start) >= maxseg ||
615 SEQ_GEQ(sack.end, tp->snd_max))) {
618 SEQ_LEQ(sack.end, th_ack)) {
622 tcp_record_dsack(tp, sack.start, sack.end, 0);
640 if (SEQ_GT(sack_blocks[i].end, sack_blocks[j].end)) {
670 tp->sackhint.last_sack_ack = sblkp->end;
676 * is always to the right of the end.
679 SEQ_LEQ(tp->snd_fack,temp->end)) {
680 tp->sackhint.hole_bytes -= temp->end - temp->start;
682 temp->end = sblkp->start;
684 delivered_data += sblkp->end - sblkp->start;
685 tp->sackhint.hole_bytes += temp->end - temp->start;
688 tp->snd_fack = sblkp->end;
700 delivered_data += sblkp->end - sblkp->start;
701 tp->sackhint.hole_bytes += temp->end - temp->start;
702 tp->snd_fack = sblkp->end;
719 SEQ_LT(tp->snd_fack, sblkp->end)) {
720 delivered_data += sblkp->end - tp->snd_fack;
721 tp->snd_fack = sblkp->end;
731 } else if (SEQ_LT(tp->snd_fack, sblkp->end)) {
733 delivered_data += sblkp->end - tp->snd_fack;
734 tp->snd_fack = sblkp->end;
749 loss_thresh += loss_hiack - cur->end;
754 notlost_bytes += cur->end - cur->start;
761 if (SEQ_GEQ(sblkp->start, cur->end)) {
769 if (SEQ_LEQ(sblkp->end, cur->start)) {
774 loss_thresh += loss_hiack - cur->end;
779 notlost_bytes += cur->end - cur->start;
784 (SEQ_MIN(cur->rxmit, cur->end) - cur->start);
790 if (SEQ_GEQ(sblkp->end, cur->end)) {
792 delivered_data += (cur->end - cur->start);
795 tp->sackhint.hole_bytes -= temp->end - temp->start;
805 delivered_data += (sblkp->end - cur->start);
806 tp->sackhint.hole_bytes -= sblkp->end - cur->start;
807 cur->start = sblkp->end;
811 /* Data acks at least the end of hole. */
812 if (SEQ_GEQ(sblkp->end, cur->end)) {
813 /* Move end of hole backward. */
814 delivered_data += (cur->end - sblkp->start);
815 tp->sackhint.hole_bytes -= cur->end - sblkp->start;
816 cur->end = sblkp->start;
817 cur->rxmit = SEQ_MIN(cur->rxmit, cur->end);
818 if ((tp->t_flags & TF_LRD) && SEQ_GEQ(cur->rxmit, cur->end))
825 temp = tcp_sackhole_insert(tp, sblkp->end,
826 cur->end, cur);
833 temp->end) - temp->start);
835 tp->sackhint.hole_bytes -= sblkp->end - sblkp->start;
836 loss_thresh += loss_hiack - temp->end;
841 notlost_bytes += temp->end - temp->start;
842 cur->end = sblkp->start;
844 cur->end);
845 if ((tp->t_flags & TF_LRD) && SEQ_GEQ(cur->rxmit, cur->end))
847 delivered_data += (sblkp->end - sblkp->start);
852 (SEQ_MIN(cur->rxmit, cur->end) - cur->start);
859 loss_thresh += loss_hiack - cur->end;
864 notlost_bytes += cur->end - cur->start;
1019 temp->end - temp->start;
1035 * hint with (rxmit == end). But, for all holes following the current hint,
1039 * end). But that can't happen, (start == end) means that all the data in
1053 if (SEQ_GEQ(hole->rxmit, hole->end)) {
1058 if (SEQ_LT(hole->rxmit, hole->end)) {
1064 KASSERT(SEQ_LT(hole->start, hole->end), ("%s: hole.start >= hole.end", __func__));
1067 KASSERT(SEQ_LT(hole->end, tp->snd_fack), ("%s: hole.end >= snd.fack", __func__));
1069 if (SEQ_GEQ(hole->start, hole->end) ||
1071 SEQ_GEQ(hole->end, tp->snd_fack) ||
1074 hole->start, hole->end, hole->rxmit, tp->snd_fack);
1106 * i) snd_nxt lies between end of one hole and beginning of another
1107 * ii) snd_nxt lies between end of last hole and snd_fack
1110 if (SEQ_LT(tp->snd_nxt, cur->end)) {
1113 sacked += p->start - cur->end;
1121 if (SEQ_LT(tp->snd_nxt, cur->end)) {
1142 SEQ_GEQ(temp->rxmit, temp->end) &&
1153 SEQ_GEQ(temp->rxmit, temp->end))