svn commit: r266421 - head/sys/netinet

Adrian Chadd adrian at FreeBSD.org
Sun May 18 22:37:31 UTC 2014


Author: adrian
Date: Sun May 18 22:37:31 2014
New Revision: 266421
URL: http://svnweb.freebsd.org/changeset/base/266421

Log:
  * When copying the flowid from inp -> outbound mbuf, also assign the
    hashtype to to the outbound mbuf as well as the flowid.
  
  * Add in socket options to fetch the hashid, the hashtype and RSS CPU
    ID for a given socket.

Modified:
  head/sys/netinet/ip_output.c

Modified: head/sys/netinet/ip_output.c
==============================================================================
--- head/sys/netinet/ip_output.c	Sun May 18 22:34:06 2014	(r266420)
+++ head/sys/netinet/ip_output.c	Sun May 18 22:37:31 2014	(r266421)
@@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$");
 #include "opt_mpath.h"
 #include "opt_route.h"
 #include "opt_sctp.h"
+#include "opt_rss.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -71,6 +72,7 @@ __FBSDID("$FreeBSD$");
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
 #include <netinet/in_pcb.h>
+#include <netinet/in_rss.h>
 #include <netinet/in_var.h>
 #include <netinet/ip_var.h>
 #include <netinet/ip_options.h>
@@ -144,6 +146,7 @@ ip_output(struct mbuf *m, struct mbuf *o
 		M_SETFIB(m, inp->inp_inc.inc_fibnum);
 		if (inp->inp_flags & (INP_HW_FLOWID|INP_SW_FLOWID)) {
 			m->m_pkthdr.flowid = inp->inp_flowid;
+			M_HASHTYPE_SET(m, inp->inp_flowtype);
 			m->m_flags |= M_FLOWID;
 		}
 	}
@@ -1171,6 +1174,11 @@ ip_ctloutput(struct socket *so, struct s
 		case IP_DONTFRAG:
 		case IP_BINDANY:
 		case IP_RECVTOS:
+		case IP_FLOWID:
+		case IP_FLOWTYPE:
+#ifdef	RSS
+		case IP_RSSCPUID:
+#endif
 			switch (sopt->sopt_name) {
 
 			case IP_TOS:
@@ -1232,6 +1240,18 @@ ip_ctloutput(struct socket *so, struct s
 			case IP_RECVTOS:
 				optval = OPTBIT(INP_RECVTOS);
 				break;
+			case IP_FLOWID:
+				optval = inp->inp_flowid;
+				break;
+			case IP_FLOWTYPE:
+				optval = inp->inp_flowtype;
+				break;
+#ifdef	RSS
+			case IP_RSSCPUID:
+				optval = rss_hash2cpuid(inp->inp_flowid,
+				    inp->inp_flowtype);
+				break;
+#endif
 			}
 			error = sooptcopyout(sopt, &optval, sizeof optval);
 			break;


More information about the svn-src-all mailing list