- list_remove(&q->n);
- q->timestamp = p->timestamp;
- DBG("data(%Ld-%Ld), ", a->stat_in.bytes, a->stat_in.bytes+pkt_len(q)-1);
- pkt_account(&a->stat_in, q);
- f->appl->input(f, (a == &f->pipe[0]), q);
+ while ((q = list_head(&a->queue)) && tcp_seq_le(q->seq+pkt_len(q), ack))
+ {
+ list_remove(&q->n);
+ a->queue_start_seq = q->seq + pkt_len(q);
+ if (!tcp_arrival_times)
+ q->timestamp = p->timestamp;
+ DBG("data(%Ld-%Ld), ", a->stat.bytes, a->stat.bytes+pkt_len(q)-1);
+ pkt_account(&a->stat, q);
+ f->appl->input(f, (a == &f->pipe[0]), q);
+ }