linux/net
Eric Dumazet 960fb622f8 net: provide a per host RSS key generic infrastructure
RSS (Receive Side Scaling) typically uses Toeplitz hash and a 40 or 52 bytes
RSS key.

Some drivers use a constant (and well known key), some drivers use a random
key per port, making bonding setups hard to tune. Well known keys increase
attack surface, considering that number of queues is usually a power of two.

This patch provides infrastructure to help drivers doing the right thing.

netdev_rss_key_fill() should be used by drivers to initialize their RSS key,
even if they provide ethtool -X support to let user redefine the key later.

A new /proc/sys/net/core/netdev_rss_key file can be used to get the host
RSS key even for drivers not providing ethtool -x support, in case some
applications want to precisely setup flows to match some RX queues.

Tested:

myhost:~# cat /proc/sys/net/core/netdev_rss_key
11:63:99:bb:79:fb:a5:a7:07:45:b2:20:bf:02:42:2d:08:1a:dd:19:2b:6b:23:ac:56:28:9d:70:c3:ac:e8:16:4b:b7:c1:10:53:a4:78:41:36:40:74:b6:15:ca:27:44:aa:b3:4d:72

myhost:~# ethtool -x eth0
RX flow hash indirection table for eth0 with 8 RX ring(s):
    0:      0     1     2     3     4     5     6     7
RSS hash key:
11:63:99:bb:79:fb:a5:a7:07:45:b2:20:bf:02:42:2d:08:1a:dd:19:2b:6b:23:ac:56:28:9d:70:c3:ac:e8:16:4b:b7:c1:10:53:a4:78:41

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-11-16 15:59:11 -05:00
..
6lowpan ieee802154: 6lowpan: rename process_data and lowpan_process_data 2014-10-27 15:51:16 +01:00
9p 9p/trans_virtio: enable VQs early 2014-10-15 10:25:04 +10:30
802 net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
8021q net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
appletalk net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
atm net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
ax25 net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
batman-adv batman-adv: replace strnicmp with strncasecmp 2014-10-14 02:18:24 +02:00
bluetooth Merge tag 'master-2014-11-04' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-11-10 14:34:59 -05:00
bridge Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-11-06 22:01:18 -05:00
caif net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
can
ceph libceph: change from BUG to WARN for __remove_osd() asserts 2014-11-13 22:26:34 +03:00
core net: provide a per host RSS key generic infrastructure 2014-11-16 15:59:11 -05:00
dcb dcbnl : Fix misleading dcb_app->priority explanation 2014-07-30 17:21:05 -07:00
dccp dccp: Convert DCCP_WARN to net_warn_ratelimited 2014-11-08 21:22:54 -05:00
decnet neigh: remove dynamic neigh table registration support 2014-11-11 15:23:54 -05:00
dns_resolver Merge commit 'v3.16' into next 2014-10-01 00:44:04 +10:00
dsa net: dsa: replace count*size kzalloc by kcalloc 2014-11-16 14:41:39 -05:00
ethernet net: Add function for parsing the header length out of linear ethernet frames 2014-09-05 17:47:02 -07:00
hsr net/hsr: Remove left-over never-true conditional code. 2014-07-11 15:04:40 -07:00
ieee802154 Merge tag 'master-2014-11-04' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-11-10 14:34:59 -05:00
ipv4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-11-14 01:01:12 -05:00
ipv6 neigh: remove dynamic neigh table registration support 2014-11-11 15:23:54 -05:00
ipx net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
irda Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-11-14 01:01:12 -05:00
iucv net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
key net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
l2tp net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
lapb lapb: move EXPORT_SYMBOL after functions. 2014-10-24 15:51:42 -04:00
llc net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
mac80211 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-11-14 01:01:12 -05:00
mac802154 mac802154: add basic support for monitor 2014-10-29 23:07:46 +01:00
mpls net: Remove MPLS GSO feature. 2014-11-05 23:52:33 -08:00
netfilter rhashtable: Drop gfp_flags arg in insert/remove functions 2014-11-13 15:18:40 -05:00
netlabel netlabel: kernel-doc warning fix 2014-10-09 01:40:05 -04:00
netlink Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-11-14 01:01:12 -05:00
netrom net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
nfc net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
openvswitch openvswitch: use PTR_ERR_OR_ZERO 2014-11-16 14:41:39 -05:00
packet net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
phonet net: Convert LIMIT_NETDEBUG to net_dbg_ratelimited 2014-11-11 14:10:31 -05:00
rds Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-10-18 09:31:37 -07:00
rfkill net: rfkill: kernel-doc warning fixes 2014-10-09 11:16:15 +02:00
rose net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
rxrpc net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
sched sched: fix act file names in header comment 2014-11-06 15:04:41 -05:00
sctp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-11-14 01:01:12 -05:00
sunrpc Merge branch 'for-3.18' of git://linux-nfs.org/~bfields/linux 2014-10-08 12:51:44 -04:00
tipc tipc: allow one link per bearer to neighboring nodes 2014-11-16 14:27:17 -05:00
unix net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
vmw_vsock net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
wimax wimax: convert printk to pr_foo() 2014-10-07 20:28:44 -04:00
wireless This relatively large batch of changes is comprised of the 2014-11-04 16:18:12 -05:00
x25 net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
xfrm net: skb_fclone_busy() needs to detect orphaned skb 2014-10-30 19:58:30 -04:00
compat.c net: sendmsg: fix NULL pointer dereference 2014-07-29 12:20:22 -07:00
Kconfig bpf: split eBPF out of NET 2014-10-27 19:09:59 -04:00
Makefile 6lowpan: introduce new net/6lowpan directory 2014-07-12 01:53:30 +02:00
nonet.c
socket.c File locking related changes for v3.18 (pile #1) 2014-10-11 13:21:34 -04:00
sysctl_net.c