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
                        }
_______________________________________________
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