svn commit: r287124 - head/sys/netinet6
Adrian Chadd
adrian at FreeBSD.org
Tue Aug 25 06:13:01 UTC 2015
Author: adrian
Date: Tue Aug 25 06:12:59 2015
New Revision: 287124
URL: https://svnweb.freebsd.org/changeset/base/287124
Log:
Call the new RSS hash calculation function to correctly calculate a hash
based on the configured requirements for the protocol.
Tested:
* UDP IPv6 TX/RX testing, w/ RSS enabled, 82599 ixgbe(4) hardware
Modified:
head/sys/netinet6/udp6_usrreq.c
Modified: head/sys/netinet6/udp6_usrreq.c
==============================================================================
--- head/sys/netinet6/udp6_usrreq.c Tue Aug 25 05:31:00 2015 (r287123)
+++ head/sys/netinet6/udp6_usrreq.c Tue Aug 25 06:12:59 2015 (r287124)
@@ -840,19 +840,36 @@ udp6_output(struct inpcb *inp, struct mb
m->m_pkthdr.csum_data = offsetof(struct udphdr, uh_sum);
}
- /*
- * XXX for now assume UDP is 2-tuple.
- * Later on this may become configurable as 4-tuple;
- * we should support that.
- *
- * XXX .. and we should likely cache this in the inpcb.
- */
#ifdef RSS
- m->m_pkthdr.flowid = rss_hash_ip6_2tuple(faddr, laddr);
- M_HASHTYPE_SET(m, M_HASHTYPE_RSS_IPV6);
+ {
+ uint32_t hash_val, hash_type;
+ uint8_t pr;
+
+ pr = inp->inp_socket->so_proto->pr_protocol;
+ /*
+ * Calculate an appropriate RSS hash for UDP and
+ * UDP Lite.
+ *
+ * The called function will take care of figuring out
+ * whether a 2-tuple or 4-tuple hash is required based
+ * on the currently configured scheme.
+ *
+ * Later later on connected socket values should be
+ * cached in the inpcb and reused, rather than constantly
+ * re-calculating it.
+ *
+ * UDP Lite is a different protocol number and will
+ * likely end up being hashed as a 2-tuple until
+ * RSS / NICs grow UDP Lite protocol awareness.
+ */
+ if (rss_proto_software_hash_v6(faddr, laddr, fport,
+ inp->inp_lport, pr, &hash_val, &hash_type) == 0) {
+ m->m_pkthdr.flowid = hash_val;
+ M_HASHTYPE_SET(m, hash_type);
+ }
+ }
#endif
flags = 0;
-
#ifdef RSS
/*
* Don't override with the inp cached flowid.
More information about the svn-src-head
mailing list