rps: shortcut net_rps_action()
authorEric Dumazet <eric.dumazet@gmail.com>
Mon, 19 Apr 2010 05:07:33 +0000 (05:07 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 19 Apr 2010 20:20:34 +0000 (13:20 -0700)
commit88751275b8e867d756e4f86ae92afe0232de129f
tree011913d98eb65f5e90981da0275c2f5a07c2bee1
parenta03b1a5c95e8bcb07512122995bbf5bd3c39f2b9
rps: shortcut net_rps_action()

net_rps_action() is a bit expensive on NR_CPUS=64..4096 kernels, even if
RPS is not active.

Tom Herbert used two bitmasks to hold information needed to send IPI,
but a single LIFO list seems more appropriate.

Move all RPS logic into net_rps_action() to cleanup net_rx_action() code
(remove two ifdefs)

Move rps_remote_softirq_cpus into softnet_data to share its first cache
line, filling an existing hole.

In a future patch, we could call net_rps_action() from process_backlog()
to make sure we send IPI before handling this cpu backlog.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
net/core/dev.c