netfilter: nfnetlink_queue: provide rcu enabled callbacks
authorEric Dumazet <eric.dumazet@gmail.com>
Mon, 18 Jul 2011 14:08:27 +0000 (16:08 +0200)
committerPatrick McHardy <kaber@trash.net>
Mon, 18 Jul 2011 14:08:27 +0000 (16:08 +0200)
commit84a797dd0b9f7130357b70577fcbda8e638c71a7
tree6d093dba184228f689873b7171d63933f0676e0d
parent6b75e3e8d664a9a1b99d31a7f4976ae70d1d090a
netfilter: nfnetlink_queue: provide rcu enabled callbacks

nenetlink_queue operations on SMP are not efficent if several queues are
used, because of nfnl_mutex contention when applications give packet
verdict.

Use new call_rcu field in struct nfnl_callback to advertize a callback
that is called under rcu_read_lock instead of nfnl_mutex.

On my 2x4x2 machine, I was able to reach 2.000.000 pps going through
user land returning NF_ACCEPT verdicts without losses, instead of less
than 500.000 pps before patch.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Florian Westphal <fw@strlen.de>
CC: Eric Leblond <eric@regit.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
net/netfilter/nfnetlink_queue.c