diff options
-rw-r--r-- | sys/netinet/in.h | 7 | ||||
-rw-r--r-- | sys/netinet/ip_output.c | 11 |
2 files changed, 12 insertions, 6 deletions
diff --git a/sys/netinet/in.h b/sys/netinet/in.h index 08809d5..5f6708d 100644 --- a/sys/netinet/in.h +++ b/sys/netinet/in.h @@ -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 */ diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c index 168fc98..44b40cb 100644 --- a/sys/netinet/ip_output.c +++ b/sys/netinet/ip_output.c @@ -1244,9 +1244,14 @@ ip_ctloutput(struct socket *so, struct sockopt *sopt) 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 } |