/*
* Find a segment which begins after this one does.
*/
- LIST_FOREACH(q, &tp->t_segq, tqe_q) {
+ TAILQ_FOREACH(q, &tp->t_segq, tqe_q) {
if (SEQ_GT(q->tqe_th->th_seq, th->th_seq))
break;
p = q;
break;
}
- nq = LIST_NEXT(q, tqe_q);
- LIST_REMOVE(q, tqe_q);
+ nq = TAILQ_NEXT(q, tqe_q);
+ TAILQ_REMOVE(&tp->t_segq, q, tqe_q);
m_freem(q->tqe_m);
kfree(q, M_TSEGQ);
atomic_add_int(&tcp_reass_qsize, -1);
*/
if (!(tp->sack_flags & TSACK_F_DUPSEG))
tp->reportblk.rblk_end = tend_sack;
- LIST_REMOVE(q, tqe_q);
+ TAILQ_REMOVE(&tp->t_segq, q, tqe_q);
kfree(q, M_TSEGQ);
atomic_add_int(&tcp_reass_qsize, -1);
}
if (p == NULL) {
- LIST_INSERT_HEAD(&tp->t_segq, te, tqe_q);
+ TAILQ_INSERT_HEAD(&tp->t_segq, te, tqe_q);
} else {
/* check if can coalesce with preceding segment */
if (p->tqe_th->th_seq + p->tqe_len == th->th_seq) {
kfree(te, M_TSEGQ);
atomic_add_int(&tcp_reass_qsize, -1);
} else {
- LIST_INSERT_AFTER(p, te, tqe_q);
+ TAILQ_INSERT_AFTER(&tp->t_segq, p, te, tqe_q);
}
}
*/
if (!TCPS_HAVEESTABLISHED(tp->t_state))
return (0);
- q = LIST_FIRST(&tp->t_segq);
+ q = TAILQ_FIRST(&tp->t_segq);
if (q == NULL || q->tqe_th->th_seq != tp->rcv_nxt)
return (0);
tp->rcv_nxt += q->tqe_len;
/* no enclosing block to report since ACK advanced */
tp->sack_flags &= ~TSACK_F_ENCLOSESEG;
flags = q->tqe_th->th_flags & TH_FIN;
- LIST_REMOVE(q, tqe_q);
- KASSERT(LIST_EMPTY(&tp->t_segq) ||
- LIST_FIRST(&tp->t_segq)->tqe_th->th_seq != tp->rcv_nxt,
+ TAILQ_REMOVE(&tp->t_segq, q, tqe_q);
+ KASSERT(TAILQ_EMPTY(&tp->t_segq) ||
+ TAILQ_FIRST(&tp->t_segq)->tqe_th->th_seq != tp->rcv_nxt,
("segment not coalesced"));
if (so->so_state & SS_CANTRCVMORE) {
m_freem(q->tqe_m);
}
} else if (tiwin == tp->snd_wnd &&
th->th_ack == tp->snd_una &&
- LIST_EMPTY(&tp->t_segq) &&
+ TAILQ_EMPTY(&tp->t_segq) &&
tlen <= ssb_space(&so->so_rcv)) {
u_long newsize = 0; /* automatic sockbuf scaling */
/*
* fast retransmit can work).
*/
if (th->th_seq == tp->rcv_nxt &&
- LIST_EMPTY(&tp->t_segq) &&
+ TAILQ_EMPTY(&tp->t_segq) &&
TCPS_HAVEESTABLISHED(tp->t_state)) {
if (DELAY_ACK(tp)) {
tcp_callout_reset(tp, tp->tt_delack,
it = (struct inp_tp *)inp;
tp = &it->tcb;
bzero(tp, sizeof(struct tcpcb));
- LIST_INIT(&tp->t_segq);
+ TAILQ_INIT(&tp->t_segq);
tp->t_maxseg = tp->t_maxopd = isipv6 ? tcp_v6mssdflt : tcp_mssdflt;
tp->t_rxtthresh = tcprexmtthresh;
no_valid_rt:
/* free the reassembly queue, if any */
- while((q = LIST_FIRST(&tp->t_segq)) != NULL) {
- LIST_REMOVE(q, tqe_q);
+ while((q = TAILQ_FIRST(&tp->t_segq)) != NULL) {
+ TAILQ_REMOVE(&tp->t_segq, q, tqe_q);
m_freem(q->tqe_m);
kfree(q, M_TSEGQ);
atomic_add_int(&tcp_reass_qsize, -1);
while ((inpb = LIST_NEXT(marker, inp_list)) != NULL) {
if ((inpb->inp_flags & INP_PLACEMARKER) == 0 &&
(tcpb = intotcpcb(inpb)) != NULL &&
- (te = LIST_FIRST(&tcpb->t_segq)) != NULL) {
- LIST_REMOVE(te, tqe_q);
+ (te = TAILQ_FIRST(&tcpb->t_segq)) != NULL) {
+ TAILQ_REMOVE(&tcpb->t_segq, te, tqe_q);
m_freem(te->tqe_m);
kfree(te, M_TSEGQ);
atomic_add_int(&tcp_reass_qsize, -1);