aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/tcp_input.c
diff options
context:
space:
mode:
authorKip Macy <kmacy@FreeBSD.org>2009-04-10 06:16:14 +0000
committerKip Macy <kmacy@FreeBSD.org>2009-04-10 06:16:14 +0000
commit80cb9f211a1bb8f64e944d238772ff7b355e3f13 (patch)
tree88a27c7c34fc89be6963d0dc707fd5565dfed1d5 /sys/netinet/tcp_input.c
parent529f22baa8bf1a96d377335e90f0d957e7ee937c (diff)
downloadsrc-80cb9f211a1bb8f64e944d238772ff7b355e3f13.tar.gz
src-80cb9f211a1bb8f64e944d238772ff7b355e3f13.zip
Import "flowid" support for serializing flows across transmit queues
Reviewed by: rwatson and jeli
Notes
Notes: svn path=/head/; revision=190880
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r--sys/netinet/tcp_input.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 1b9cf858ed11..9d85448b0f9a 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -594,7 +594,14 @@ findpcb:
goto dropwithreset;
}
INP_WLOCK(inp);
-
+ if (!(inp->inp_flags & INP_HW_FLOWID)
+ && (m->m_flags & M_FLOWID)
+ && ((inp->inp_socket == NULL)
+ || !(inp->inp_socket->so_options & SO_ACCEPTCONN))) {
+ inp->inp_flags |= INP_HW_FLOWID;
+ inp->inp_flags &= ~INP_SW_FLOWID;
+ inp->inp_flowid = m->m_pkthdr.flowid;
+ }
#ifdef IPSEC
#ifdef INET6
if (isipv6 && ipsec6_in_reject(m, inp)) {