diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2013-03-15 12:53:53 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2013-03-15 12:53:53 +0000 |
commit | 39f6074e2e41806ddf24108603d6d5ff2addcb81 (patch) | |
tree | 5e2c6a5ca0076dc6e27b417eedef8e5dc922bbd9 /sys/netinet/tcp_output.c | |
parent | c69f77c339d888004b44276072e1e7b1b224c3cb (diff) | |
download | src-39f6074e2e41806ddf24108603d6d5ff2addcb81.tar.gz src-39f6074e2e41806ddf24108603d6d5ff2addcb81.zip |
- Use m_getcl() instead of hand allocating.
Sponsored by: Nginx, Inc.
Notes
Notes:
svn path=/head/; revision=248323
Diffstat (limited to 'sys/netinet/tcp_output.c')
-rw-r--r-- | sys/netinet/tcp_output.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index ac7ac3185292..e291bb308313 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -842,23 +842,19 @@ send: TCPSTAT_INC(tcps_sndpack); TCPSTAT_ADD(tcps_sndbyte, len); } - MGETHDR(m, M_NOWAIT, MT_DATA); +#ifdef INET6 + if (MHLEN < hdrlen + max_linkhdr) + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); + else +#endif + m = m_gethdr(M_NOWAIT, MT_DATA); + if (m == NULL) { SOCKBUF_UNLOCK(&so->so_snd); error = ENOBUFS; goto out; } -#ifdef INET6 - if (MHLEN < hdrlen + max_linkhdr) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { - SOCKBUF_UNLOCK(&so->so_snd); - m_freem(m); - error = ENOBUFS; - goto out; - } - } -#endif + m->m_data += max_linkhdr; m->m_len = hdrlen; |