svn commit: r248323 - head/sys/netinet

Gleb Smirnoff glebius at FreeBSD.org
Fri Mar 15 12:53:54 UTC 2013


Author: glebius
Date: Fri Mar 15 12:53:53 2013
New Revision: 248323
URL: http://svnweb.freebsd.org/changeset/base/248323

Log:
  - Use m_getcl() instead of hand allocating.
  
  Sponsored by:	Nginx, Inc.

Modified:
  head/sys/netinet/tcp_output.c

Modified: head/sys/netinet/tcp_output.c
==============================================================================
--- head/sys/netinet/tcp_output.c	Fri Mar 15 12:52:59 2013	(r248322)
+++ head/sys/netinet/tcp_output.c	Fri Mar 15 12:53:53 2013	(r248323)
@@ -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;
 


More information about the svn-src-all mailing list