android_kernel_samsung_msm8976/net/ipv4
Jesper Dangaard Brouer 6d7b857d54 net: use lib/percpu_counter API for fragmentation mem accounting
Replace the per network namespace shared atomic "mem" accounting
variable, in the fragmentation code, with a lib/percpu_counter.

Getting percpu_counter to scale to the fragmentation code usage
requires some tweaks.

At first view, percpu_counter looks superfast, but it does not
scale on multi-CPU/NUMA machines, because the default batch size
is too small, for frag code usage.  Thus, I have adjusted the
batch size by using __percpu_counter_add() directly, instead of
percpu_counter_sub() and percpu_counter_add().

The batch size is increased to 130.000, based on the largest 64K
fragment memory usage.  This does introduce some imprecise
memory accounting, but its does not need to be strict for this
use-case.

It is also essential, that the percpu_counter, does not
share cacheline with other writers, to make this scale.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-01-29 13:36:24 -05:00
..
netfilter Merge branch 'master' of git://1984.lsi.us.es/nf-next 2013-01-27 00:56:10 -05:00
af_inet.c net: fix possible wrong checksum generation 2013-01-28 00:27:15 -05:00
ah4.c
arp.c arp: fix a regression in arp_solicit() 2012-12-24 18:42:58 -08:00
cipso_ipv4.c
datagram.c
devinet.c ipv4: fix NULL checking in devinet_ioctl() 2013-01-06 21:11:18 -08:00
esp4.c
fib_frontend.c ipv4: fib: fix a comment. 2013-01-11 15:58:08 -08:00
fib_lookup.h
fib_rules.c
fib_semantics.c
fib_trie.c
gre.c
icmp.c
igmp.c
inet_connection_sock.c soreuseport: fix use of uid in tb->fastuid 2013-01-27 01:01:42 -05:00
inet_diag.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2012-12-12 18:07:07 -08:00
inet_fragment.c net: use lib/percpu_counter API for fragmentation mem accounting 2013-01-29 13:36:24 -05:00
inet_hashtables.c soreuseport: TCP/IPv4 implementation 2013-01-23 13:44:01 -05:00
inet_lro.c
inet_timewait_sock.c
inetpeer.c
ip_forward.c
ip_fragment.c net: frag helper functions for mem limit tracking 2013-01-29 13:36:24 -05:00
ip_gre.c net: fix possible wrong checksum generation 2013-01-28 00:27:15 -05:00
ip_input.c
ip_options.c
ip_output.c net: Handle encapsulated offloads before fragmentation or handing to lower dev 2012-12-09 00:20:28 -05:00
ip_sockglue.c net: prevent setting ttl=0 via IP_TTL 2013-01-08 17:57:10 -08:00
ip_vti.c
ipcomp.c
ipconfig.c net/ipv4/ipconfig: really display the BOOTP/DHCP server's address. 2013-01-04 15:14:14 -08:00
ipip.c net: fix possible wrong checksum generation 2013-01-28 00:27:15 -05:00
ipmr.c ipmr: fix sparse warning when testing origin or group 2013-01-22 14:24:29 -05:00
Kconfig
Makefile
netfilter.c
ping.c
proc.c
protocol.c
raw.c
route.c ipv4/route/rtnl: get mcast attributes when dst is multicast 2012-12-07 12:24:33 -05:00
syncookies.c tcp: make sysctl_tcp_ecn namespace aware 2013-01-06 21:09:56 -08:00
sysctl_net_ipv4.c net: avoid to hang up on sending due to sysctl configuration overflow. 2013-01-28 23:15:27 -05:00
tcp.c net: fix possible wrong checksum generation 2013-01-28 00:27:15 -05:00
tcp_bic.c
tcp_cong.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
tcp_cubic.c
tcp_diag.c
tcp_fastopen.c
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c
tcp_input.c net: fix possible wrong checksum generation 2013-01-28 00:27:15 -05:00
tcp_ipv4.c soreuseport: TCP/IPv4 implementation 2013-01-23 13:44:01 -05:00
tcp_lp.c
tcp_memcontrol.c
tcp_metrics.c
tcp_minisocks.c
tcp_output.c net: fix possible wrong checksum generation 2013-01-28 00:27:15 -05:00
tcp_probe.c
tcp_scalable.c
tcp_timer.c
tcp_vegas.c
tcp_vegas.h
tcp_veno.c
tcp_westwood.c
tcp_yeah.c
tunnel4.c
udp.c soreuseport: UDP/IPv4 implementation 2013-01-23 13:44:01 -05:00
udp_diag.c
udp_impl.h
udplite.c
xfrm4_input.c
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
xfrm4_output.c
xfrm4_policy.c
xfrm4_state.c
xfrm4_tunnel.c