freebsd-dev/sys/netinet6
Adrian Chadd 0be189151f Implement RSS hashing/re-hashing for IPv6 ingress packets.
This mirrors the basic IPv4 implementation - IPv6 packets under RSS
now are checked for a correct RSS hash and if one isn't provided,
it's done in software.

This only handles the initial receive - it doesn't yet handle
reinjecting / rehashing packets after being decapsulated from
various tunneling setups.  That'll come in some follow-up work.

For non-RSS users, this is almost a giant no-op.

It does change a couple of ipv6 methods to use const mbuf * instead of
mbuf * but it doesn't have any functional changes.

So, the following now occurs:

* If the NIC doesn't do any RSS hashing, it's all done in software.
  Single-queue, non-RSS NICs will now have the RX path distributed
  into multiple receive netisr queues.

* If the NIC provides the wrong hash (eg only IPv6 hash when we needed
  an IPv6 TCP hash, or IPv6 UDP hash when we expected IPv6 hash)
  then the hash is recalculated.

* .. if the hash is recalculated, it'll end up being injected into
  the correct netisr queue for v6 processing.

Submitted by:	Tiwei Bie <btw@mail.ustc.edu.cn>
Differential Revision:	https://reviews.freebsd.org/D3504
2015-08-29 07:14:29 +00:00
..
dest6.c
frag6.c
icmp6.c Move comment to the right position. 2015-07-03 09:53:56 +00:00
icmp6.h
in6_cksum.c
in6_gif.c Eliminate the use of m_copydata() in gif_encapcheck(). 2015-07-29 14:07:43 +00:00
in6_ifattach.c - Deprecate IN6_IFF_NODAD. It was used to prevent DAD on a loopback 2015-08-24 05:21:49 +00:00
in6_ifattach.h
in6_mcast.c
in6_pcb.c Decompose TCP INP_INFO lock to increase short-lived TCP connections scalability: 2015-08-03 12:13:54 +00:00
in6_pcb.h
in6_pcbgroup.c
in6_proto.c
in6_rmx.c Rename rt_foreach_fib() to rt_foreach_fib_walk(). 2015-08-10 20:50:31 +00:00
in6_rss.c Implement RSS hashing/re-hashing for IPv6 ingress packets. 2015-08-29 07:14:29 +00:00
in6_rss.h Implement RSS hashing/re-hashing for IPv6 ingress packets. 2015-08-29 07:14:29 +00:00
in6_src.c Properly handle IPV6_NEXTHOP socket option in selectroute(). 2015-08-02 12:40:56 +00:00
in6_var.h - Deprecate IN6_IFF_NODAD. It was used to prevent DAD on a loopback 2015-08-24 05:21:49 +00:00
in6.c - Deprecate IN6_IFF_NODAD. It was used to prevent DAD on a loopback 2015-08-24 05:21:49 +00:00
in6.h
ip6_ecn.h
ip6_forward.c
ip6_gre.c
ip6_id.c
ip6_input.c Implement RSS hashing/re-hashing for IPv6 ingress packets. 2015-08-29 07:14:29 +00:00
ip6_ipsec.c
ip6_ipsec.h
ip6_mroute.c Simplify ip[6] simploop: 2015-08-08 15:58:35 +00:00
ip6_mroute.h
ip6_output.c Simplify ip[6] simploop: 2015-08-08 15:58:35 +00:00
ip6_var.h Implement RSS hashing/re-hashing for IPv6 ingress packets. 2015-08-29 07:14:29 +00:00
ip6.h
ip6protosw.h
mld6_var.h
mld6.c
mld6.h
nd6_nbr.c - Deprecate IN6_IFF_NODAD. It was used to prevent DAD on a loopback 2015-08-24 05:21:49 +00:00
nd6_rtr.c Rename rt_foreach_fib() to rt_foreach_fib_walk(). 2015-08-10 20:50:31 +00:00
nd6.c * Split allocation and table linking for lle's. 2015-08-20 12:05:17 +00:00
nd6.h * Split allocation and table linking for lle's. 2015-08-20 12:05:17 +00:00
pim6_var.h
pim6.h
raw_ip6.c
raw_ip6.h
route6.c
scope6_var.h
scope6.c
sctp6_usrreq.c Move including netinet/icmp6.h around to avoid a problem when including 2015-07-25 18:26:09 +00:00
sctp6_var.h
send.c
send.h
tcp6_var.h
udp6_usrreq.c remove a left-over after r220463 empty #ifdef INET check. 2015-08-28 09:38:18 +00:00
udp6_var.h