Lines Matching full:start
180 tcp_seq start, end;
190 saved_blks[0].start = rcv_start;
193 saved_blks[0].start = saved_blks[0].end = 0;
196 head_blk.start = head_blk.end = 0;
197 mid_blk.start = rcv_start;
202 start = tp->sackblks[i].start;
204 if (SEQ_LT(rcv_end, start)) {
213 if ((SEQ_MAX(rcv_start, start) != SEQ_MIN(rcv_end, end)) &&
214 (SEQ_GT(head_blk.start, SEQ_MAX(rcv_start, start)) ||
215 (head_blk.start == head_blk.end))) {
216 head_blk.start = SEQ_MAX(rcv_start, start);
221 if (((head_blk.start == head_blk.end) ||
222 SEQ_LT(start, head_blk.start)) &&
224 SEQ_LEQ(start, rcv_end))) {
225 head_blk.start = start;
228 mid_blk.start = SEQ_MIN(mid_blk.start, start);
230 if ((mid_blk.start == start) &&
234 if (SEQ_LT(head_blk.start, head_blk.end)) {
236 saved_blks[0].start = SEQ_MAX(rcv_start, head_blk.start);
245 !((mid_blk.start == saved_blks[0].start) &&
248 saved_blks[n].start = mid_blk.start;
252 if (((SEQ_LT(tp->sackblks[j].end, mid_blk.start) ||
253 SEQ_GT(tp->sackblks[j].start, mid_blk.end)) &&
254 (SEQ_GT(tp->sackblks[j].start, tp->rcv_nxt))))
260 if (SEQ_LT(saved_blks[i].start, saved_blks[i].end)) {
295 head_blk.start = rcv_start;
306 tcp_seq start = tp->sackblks[i].start;
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)
332 head_blk.start = start;
333 else if (head_blk.end == start)
336 if (SEQ_LT(head_blk.start, start)) {
337 tcp_seq temp = start;
338 start = head_blk.start;
339 head_blk.start = temp;
346 if ((head_blk.start != start) ||
349 SEQ_GEQ(saved_blks[num_saved-1].start, start) &&
352 saved_blks[num_saved].start = start;
362 SEQ_GEQ(saved_blks[num_saved-1].start, start) &&
368 saved_blks[num_saved].start = start;
422 tcp_seq start = tp->sackblks[i].start;
424 if (SEQ_GEQ(start, end) || SEQ_LEQ(start, tp->rcv_nxt)) {
433 saved_blks[num_saved].start = start;
458 tp->sackblks[i].start = tp->sackblks[i].end=0;
465 tcp_sackhole_alloc(struct tcpcb *tp, tcp_seq start, tcp_seq end)
479 hole->start = start;
481 hole->rxmit = start;
509 tcp_sackhole_insert(struct tcpcb *tp, tcp_seq start, tcp_seq end,
515 hole = tcp_sackhole_alloc(tp, start, end);
586 sack_blocks[num_sack_blks].start = tp->snd_una;
606 sack.start = ntohl(sack.start);
608 if (SEQ_GT(sack.end, sack.start) &&
609 SEQ_GT(sack.start, tp->snd_una) &&
610 SEQ_GT(sack.start, th_ack) &&
611 SEQ_LT(sack.start, tp->snd_max) &&
614 ((sack.end - sack.start) >= maxseg ||
617 } else if (SEQ_LEQ(sack.start, th_ack) &&
622 tcp_record_dsack(tp, sack.start, sack.end, 0);
671 if (SEQ_LT(tp->snd_fack, sblkp->start)) {
680 tp->sackhint.hole_bytes -= temp->end - temp->start;
681 temp->start = SEQ_MAX(tp->snd_fack, SEQ_MAX(tp->snd_una, th_ack));
682 temp->end = sblkp->start;
683 temp->rxmit = temp->start;
684 delivered_data += sblkp->end - sblkp->start;
685 tp->sackhint.hole_bytes += temp->end - temp->start;
698 temp = tcp_sackhole_insert(tp, tp->snd_fack,sblkp->start,NULL);
700 delivered_data += sblkp->end - sblkp->start;
701 tp->sackhint.hole_bytes += temp->end - temp->start;
716 SEQ_LT(tp->snd_fack, sblkp->start))
750 loss_hiack = cur->start;
754 notlost_bytes += cur->end - cur->start;
761 if (SEQ_GEQ(sblkp->start, cur->end)) {
769 if (SEQ_LEQ(sblkp->end, cur->start)) {
775 loss_hiack = cur->start;
779 notlost_bytes += cur->end - cur->start;
784 (SEQ_MIN(cur->rxmit, cur->end) - cur->start);
788 if (SEQ_LEQ(sblkp->start, cur->start)) {
792 delivered_data += (cur->end - cur->start);
795 tp->sackhint.hole_bytes -= temp->end - temp->start;
804 /* Move start of hole forward. */
805 delivered_data += (sblkp->end - cur->start);
806 tp->sackhint.hole_bytes -= sblkp->end - cur->start;
807 cur->start = sblkp->end;
808 cur->rxmit = SEQ_MAX(cur->rxmit, cur->start);
814 delivered_data += (cur->end - sblkp->start);
815 tp->sackhint.hole_bytes -= cur->end - sblkp->start;
816 cur->end = sblkp->start;
833 temp->end) - temp->start);
835 tp->sackhint.hole_bytes -= sblkp->end - sblkp->start;
837 loss_hiack = temp->start;
841 notlost_bytes += temp->end - temp->start;
842 cur->end = sblkp->start;
847 delivered_data += (sblkp->end - sblkp->start);
852 (SEQ_MIN(cur->rxmit, cur->end) - cur->start);
854 * Testing sblkp->start against cur->start tells us whether
858 if (SEQ_LEQ(sblkp->start, cur->start)) {
860 loss_hiack = cur->start;
864 notlost_bytes += cur->end - cur->start;
939 p->rxmit = p->start;
1019 temp->end - temp->start;
1036 * (start == rxmit), since we have not yet retransmitted from them.
1038 * have at least one node following the current hint with (start == rxmit ==
1039 * end). But that can't happen, (start == end) means that all the data in
1064 KASSERT(SEQ_LT(hole->start, hole->end), ("%s: hole.start >= hole.end", __func__));
1066 KASSERT(SEQ_LT(hole->start, tp->snd_fack), ("%s: hole.start >= snd.fack", __func__));
1069 if (SEQ_GEQ(hole->start, hole->end) ||
1070 SEQ_GEQ(hole->start, tp->snd_fack) ||
1074 hole->start, hole->end, hole->rxmit, tp->snd_fack);
1113 sacked += p->start - cur->end;
1114 if (SEQ_GEQ(tp->snd_nxt, p->start)) {
1117 tp->snd_nxt = p->start;
1146 * Start retransmissions from the first hole, and
1154 temp->rxmit = temp->start;