xref: /freebsd/sys/netinet6/in6_rss.h (revision 20dbdf88a5cff9ea3e52e81462598de65d12cec5)
1b2bdc62aSAdrian Chadd /*-
2b2bdc62aSAdrian Chadd  * Copyright (c) 2010-2011 Juniper Networks, Inc.
3b2bdc62aSAdrian Chadd  * All rights reserved.
4b2bdc62aSAdrian Chadd  *
5b2bdc62aSAdrian Chadd  * This software was developed by Robert N. M. Watson under contract
6b2bdc62aSAdrian Chadd  * to Juniper Networks, Inc.
7b2bdc62aSAdrian Chadd  *
8b2bdc62aSAdrian Chadd  * Redistribution and use in source and binary forms, with or without
9b2bdc62aSAdrian Chadd  * modification, are permitted provided that the following conditions
10b2bdc62aSAdrian Chadd  * are met:
11b2bdc62aSAdrian Chadd  * 1. Redistributions of source code must retain the above copyright
12b2bdc62aSAdrian Chadd  *    notice, this list of conditions and the following disclaimer.
13b2bdc62aSAdrian Chadd  * 2. Redistributions in binary form must reproduce the above copyright
14b2bdc62aSAdrian Chadd  *    notice, this list of conditions and the following disclaimer in the
15b2bdc62aSAdrian Chadd  *    documentation and/or other materials provided with the distribution.
16b2bdc62aSAdrian Chadd  *
17b2bdc62aSAdrian Chadd  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18b2bdc62aSAdrian Chadd  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19b2bdc62aSAdrian Chadd  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20b2bdc62aSAdrian Chadd  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21b2bdc62aSAdrian Chadd  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22b2bdc62aSAdrian Chadd  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23b2bdc62aSAdrian Chadd  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24b2bdc62aSAdrian Chadd  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25b2bdc62aSAdrian Chadd  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26b2bdc62aSAdrian Chadd  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27b2bdc62aSAdrian Chadd  * SUCH DAMAGE.
28b2bdc62aSAdrian Chadd  *
29b2bdc62aSAdrian Chadd  * $FreeBSD$
30b2bdc62aSAdrian Chadd  */
31b2bdc62aSAdrian Chadd 
32b2bdc62aSAdrian Chadd #ifndef _NETINET6_IN6_RSS_H_
33b2bdc62aSAdrian Chadd #define	_NETINET6_IN6_RSS_H_
34b2bdc62aSAdrian Chadd 
35b2bdc62aSAdrian Chadd #include <netinet/in.h>		/* in_addr_t */
36b2bdc62aSAdrian Chadd 
37b2bdc62aSAdrian Chadd /*
38b2bdc62aSAdrian Chadd  * Network stack interface to generate a hash for a protocol tuple.
39b2bdc62aSAdrian Chadd  */
40b2bdc62aSAdrian Chadd uint32_t	rss_hash_ip6_4tuple(const struct in6_addr *src, u_short srcport,
41b2bdc62aSAdrian Chadd 		    const struct in6_addr *dst, u_short dstport);
42b2bdc62aSAdrian Chadd uint32_t	rss_hash_ip6_2tuple(const struct in6_addr *src,
43b2bdc62aSAdrian Chadd 		    const struct in6_addr *dst);
44b2bdc62aSAdrian Chadd 
45*20dbdf88SAdrian Chadd /*
46*20dbdf88SAdrian Chadd  * Functions to calculate a software RSS hash for a given mbuf or
47*20dbdf88SAdrian Chadd  * packet detail.
48*20dbdf88SAdrian Chadd  */
49*20dbdf88SAdrian Chadd int		rss_proto_software_hash_v6(const struct in6_addr *src,
50*20dbdf88SAdrian Chadd 		    const struct in6_addr *dst, u_short src_port,
51*20dbdf88SAdrian Chadd 		    u_short dst_port, int proto, uint32_t *hashval,
52*20dbdf88SAdrian Chadd 		    uint32_t *hashtype);
53b2bdc62aSAdrian Chadd #endif /* !_NETINET6_IN6_RSS_H_ */
54