Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Jan 2014 12:28:38 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        FreeBSD Net <freebsd-net@freebsd.org>,  "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org>
Subject:   [rfc] set inp_flowid on initial TCP connection
Message-ID:  <CAJ-VmonO3i7bdY7t8gWyFOcDRA8g_5GYX_0ijhkCxnQkkBwaww@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

This patch sets the inp_flowid on incoming connections. Without this,
the initial connection has no flowid, so things like the per-CPU TCP
callwheel stuff would map to a different CPU on the initial incoming
setup.



-a

Index: sys/netinet/tcp_syncache.c
===================================================================
--- sys/netinet/tcp_syncache.c  (revision 260499)
+++ sys/netinet/tcp_syncache.c  (working copy)
@@ -722,6 +722,16 @@
 #endif

        /*
+        * If there's an mbuf and it has a flowid, then let's initialise the
+        * inp with that particular flowid.
+        */
+       if (m != NULL && m->m_flags & M_FLOWID) {
+               inp->inp_flags |= INP_HW_FLOWID;
+               inp->inp_flags &= ~INP_SW_FLOWID;
+               inp->inp_flowid = m->m_pkthdr.flowid;
+       }
+
+       /*
         * Install in the reservation hash table for now, but don't yet
         * install a connection group since the full 4-tuple isn't yet
         * configured.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonO3i7bdY7t8gWyFOcDRA8g_5GYX_0ijhkCxnQkkBwaww>