On 15.03.2013 13:53, Gleb Smirnoff wrote:
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);
+

m = m_getm2(hdrlen + max_linkhdr, M_NOWAIT, MT_DATA, M_PKTHDR);

would be even more compact.  Since max_linkhdr could be large as well,
the possibility of a cluster applies to IPv4 too.

--
Andre

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

Reply via email to