svn commit: r267895 - head/sys/netinet
Adrian Chadd
adrian at FreeBSD.org
Thu Jun 26 04:12:42 UTC 2014
Author: adrian
Date: Thu Jun 26 04:12:41 2014
New Revision: 267895
URL: http://svnweb.freebsd.org/changeset/base/267895
Log:
Retire IP_RSSCPUID ; the right thing to do is query the RSS bucket;
map the bucket to an RSS queue, then map the queue to a CPU ID.
This way the bucket->queue and queue->CPU mapping can change
over time.
Introduce IP_RSSBUCKETID - which instead looks up the RSS bucket.
User applications can then map the RSS bucket to a CPU.
Modified:
head/sys/netinet/in.h
head/sys/netinet/ip_output.c
Modified: head/sys/netinet/in.h
==============================================================================
--- head/sys/netinet/in.h Thu Jun 26 04:04:53 2014 (r267894)
+++ head/sys/netinet/in.h Thu Jun 26 04:12:41 2014 (r267895)
@@ -468,9 +468,10 @@ __END_DECLS
#define IP_MINTTL 66 /* minimum TTL for packet or drop */
#define IP_DONTFRAG 67 /* don't fragment packet */
#define IP_RECVTOS 68 /* bool; receive IP TOS w/dgram */
-#define IP_FLOWID 69 /* flow id for the given socket/inp */
-#define IP_FLOWTYPE 70 /* flow type (M_HASHTYPE) */
-#define IP_RSSCPUID 71 /* RSS flowid -> CPU id mapping */
+#define IP_FLOWID 69 /* get flow id for the given socket/inp */
+#define IP_FLOWTYPE 70 /* get flow type (M_HASHTYPE) */
+/* 71 - XXX was IP_RSSCPUID - can recycle whenever */
+#define IP_RSSBUCKETID 72 /* get RSS flowid -> bucket mapping */
/* IPv4 Source Filter Multicast API [RFC3678] */
#define IP_ADD_SOURCE_MEMBERSHIP 70 /* join a source-specific group */
Modified: head/sys/netinet/ip_output.c
==============================================================================
--- head/sys/netinet/ip_output.c Thu Jun 26 04:04:53 2014 (r267894)
+++ head/sys/netinet/ip_output.c Thu Jun 26 04:12:41 2014 (r267895)
@@ -1244,9 +1244,14 @@ ip_ctloutput(struct socket *so, struct s
optval = inp->inp_flowtype;
break;
#ifdef RSS
- case IP_RSSCPUID:
- optval = rss_hash2cpuid(inp->inp_flowid,
- inp->inp_flowtype);
+ case IP_RSSBUCKETID:
+ retval = rss_hash2bucket(inp->inp_flowid,
+ inp->inp_flowtype,
+ &rss_bucket);
+ if (retval == 0)
+ optval = rss_bucket;
+ else
+ error = EINVAL;
break;
#endif
}
More information about the svn-src-head
mailing list