tun: Add support for RFS on tun flows
authorTom Herbert <therbert@google.com>
Sun, 22 Dec 2013 10:54:32 +0000 (18:54 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 31 Dec 2013 18:31:34 +0000 (13:31 -0500)
commit9bc8893937c8369c9c3a045c05f5820f2242bc96
treece2635a6fe72be741d7dee0138d10c827ee842e9
parentfe47755852d1f299b55a6e6594bb6e082ac103d4
tun: Add support for RFS on tun flows

This patch adds support so that the rps_flow_tables (RFS) can be
programmed using the tun flows which are already set up to track flows
for the purposes of queue selection.

On the receive path (corresponding to select_queue and tun_net_xmit) the
rxhash is saved in the flow_entry.  The original code only does flow
lookup in select_queue, so this patch adds a flow lookup in tun_net_xmit
if num_queues == 1 (select_queue is not called from
dev_queue_xmit->netdev_pick_tx in that case).

The flow is recorded (processing CPU) in tun_flow_update (TX path), and
reset when flow is deleted.

Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c