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;
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to