netfilter: get rid of atomic ops in fast path
We currently use a percpu spinlock to 'protect' rule bytes/packets counters, after various attempts to use RCU instead. Lately we added a seqlock so that get_counters() can run without blocking BH or 'writers'. But we really only need the seqcount in it. Spinlock itself is only locked by the current/owner cpu, so we can remove it completely. This cleanups api, using correct 'writer' vs 'reader' semantic. At replace time, the get_counters() call makes sure all cpus are done using the old table. Signed-off-by:Eric Dumazet <eric.dumazet@gmail.com> Cc: Jan Engelhardt <jengelh@medozas.de> Signed-off-by:
Patrick McHardy <kaber@trash.net>
Showing
- include/linux/netfilter/x_tables.h 42 additions, 54 deletionsinclude/linux/netfilter/x_tables.h
- net/ipv4/netfilter/arp_tables.c 11 additions, 7 deletionsnet/ipv4/netfilter/arp_tables.c
- net/ipv4/netfilter/ip_tables.c 12 additions, 16 deletionsnet/ipv4/netfilter/ip_tables.c
- net/ipv6/netfilter/ip6_tables.c 12 additions, 7 deletionsnet/ipv6/netfilter/ip6_tables.c
- net/netfilter/x_tables.c 3 additions, 6 deletionsnet/netfilter/x_tables.c
Loading
Please register or sign in to comment