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>