diff options
author | sam <sam@FreeBSD.org> | 2003-10-28 05:47:40 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2003-10-28 05:47:40 +0000 |
commit | 39ba2e1c90c5d5fc0d01568719c540b15001528d (patch) | |
tree | ec5f03665816c252b1006ac692945285f1783b9b /sys/netinet/tcp_reass.c | |
parent | a68a195ad4d4f0bbdd17a20f3ce13c36224a00d7 (diff) | |
download | FreeBSD-src-39ba2e1c90c5d5fc0d01568719c540b15001528d.zip FreeBSD-src-39ba2e1c90c5d5fc0d01568719c540b15001528d.tar.gz |
speedup stream socket recv handling by tracking the tail of
the mbuf chain instead of walking the list for each append
Submitted by: ps/jayanth
Obtained from: netbsd (jason thorpe)
Diffstat (limited to 'sys/netinet/tcp_reass.c')
-rw-r--r-- | sys/netinet/tcp_reass.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c index 4d0beb2..21d530f 100644 --- a/sys/netinet/tcp_reass.c +++ b/sys/netinet/tcp_reass.c @@ -296,7 +296,7 @@ present: if (so->so_state & SS_CANTRCVMORE) m_freem(q->tqe_m); else - sbappend(&so->so_rcv, q->tqe_m); + sbappendstream(&so->so_rcv, q->tqe_m); FREE(q, M_TSEGQ); q = nq; } while (q && q->tqe_th->th_seq == tp->rcv_nxt); @@ -1124,7 +1124,7 @@ after_listen: m_freem(m); } else { m_adj(m, drop_hdrlen); /* delayed header drop */ - sbappend(&so->so_rcv, m); + sbappendstream(&so->so_rcv, m); } sorwakeup(so); if (DELAY_ACK(tp)) { @@ -2178,7 +2178,7 @@ dodata: /* XXX */ if (so->so_state & SS_CANTRCVMORE) m_freem(m); else - sbappend(&so->so_rcv, m); + sbappendstream(&so->so_rcv, m); sorwakeup(so); } else { thflags = tcp_reass(tp, th, &tlen, m); |