Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Jun 2014 04:12:41 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r267895 - head/sys/netinet
Message-ID:  <201406260412.s5Q4CfXU038163@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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
 			}



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