alistair23-linux/net/ipv4
Eric Dumazet e994b2f0fb tcp: do not lock listener to process SYN packets
Everything should now be ready to finally allow SYN
packets processing without holding listener lock.

Tested:

3.5 Mpps SYNFLOOD. Plenty of cpu cycles available.

Next bottleneck is the refcount taken on listener,
that could be avoided if we remove SLAB_DESTROY_BY_RCU
strict semantic for listeners, and use regular RCU.

    13.18%  [kernel]  [k] __inet_lookup_listener
     9.61%  [kernel]  [k] tcp_conn_request
     8.16%  [kernel]  [k] sha_transform
     5.30%  [kernel]  [k] inet_reqsk_alloc
     4.22%  [kernel]  [k] sock_put
     3.74%  [kernel]  [k] tcp_make_synack
     2.88%  [kernel]  [k] ipt_do_table
     2.56%  [kernel]  [k] memcpy_erms
     2.53%  [kernel]  [k] sock_wfree
     2.40%  [kernel]  [k] tcp_v4_rcv
     2.08%  [kernel]  [k] fib_table_lookup
     1.84%  [kernel]  [k] tcp_openreq_init_rwin

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-10-03 04:32:46 -07:00
..
netfilter ipv4: Pass struct net into ip_route_me_harder 2015-09-29 20:21:32 +02:00
af_inet.c net: Replace vrf_dev_table and friends 2015-09-29 20:40:33 -07:00
ah4.c ah4: Fix error return in ah_input(). 2015-08-25 13:38:50 -07:00
arp.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-09-26 16:08:27 -07:00
cipso_ipv4.c
datagram.c
devinet.c rtnetlink: RTEXT_FILTER_SKIP_STATS support to avoid dumping inet/inet6 stats 2015-09-15 15:25:02 -07:00
esp4.c
fib_frontend.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-10-02 07:21:25 -07:00
fib_lookup.h
fib_rules.c net: ipv6: use common fib_default_rule_pref 2015-09-09 14:19:50 -07:00
fib_semantics.c net: Make table id type u32 2015-09-01 14:32:44 -07:00
fib_trie.c net: Fix vti use case with oif in dst lookups 2015-09-17 16:36:34 -07:00
fou.c fou: reject IPv6 config 2015-08-29 13:07:54 -07:00
gre_demux.c gre: Remove support for sharing GRE protocol hook. 2015-08-10 14:03:54 -07:00
gre_offload.c
icmp.c net: Replace vrf_master_ifindex{, _rcu} with l3mdev equivalents 2015-09-29 20:40:33 -07:00
igmp.c net/ipv4: Pass proto as u8 instead of u16 in ip_check_mc_rcu 2015-09-29 16:27:47 -07:00
inet_connection_sock.c tcp/dccp: add a reschedule point in inet_csk_listen_stop() 2015-10-03 04:32:45 -07:00
inet_diag.c tcp/dccp: install syn_recv requests into ehash table 2015-10-03 04:32:41 -07:00
inet_fragment.c
inet_hashtables.c tcp/dccp: install syn_recv requests into ehash table 2015-10-03 04:32:41 -07:00
inet_lro.c
inet_timewait_sock.c tcp/dccp: fix timewait races in timer handling 2015-09-21 16:32:29 -07:00
inetpeer.c net: Add helper function to compare inetpeer addresses 2015-08-28 13:32:36 -07:00
ip_forward.c netfilter: Pass net into okfn 2015-09-17 17:18:37 -07:00
ip_fragment.c net: Replace vrf_master_ifindex{, _rcu} with l3mdev equivalents 2015-09-29 20:40:33 -07:00
ip_gre.c ip_tunnels: record IP version in tunnel info 2015-08-29 13:07:54 -07:00
ip_input.c netfilter: Pass net into okfn 2015-09-17 17:18:37 -07:00
ip_options.c
ip_output.c net: Rename IFF_VRF_MASTER to IFF_L3MDEV_MASTER 2015-09-29 20:40:32 -07:00
ip_sockglue.c
ip_tunnel.c ip_gre: Add support to collect tunnel metadata. 2015-08-10 14:03:54 -07:00
ip_tunnel_core.c lwtunnel: remove source and destination UDP port config option 2015-09-24 14:31:37 -07:00
ip_vti.c net: Merge dst_output and dst_output_sk 2015-09-17 17:18:32 -07:00
ipcomp.c
ipconfig.c net: ipv4: increase dhcp inter device timeout 2015-08-12 16:40:22 -07:00
ipip.c ip_gre: Add support to collect tunnel metadata. 2015-08-10 14:03:54 -07:00
ipmr.c netfilter: Pass net into okfn 2015-09-17 17:18:37 -07:00
Kconfig geneve: Consolidate Geneve functionality in single module. 2015-08-27 15:42:48 -07:00
Makefile geneve: Consolidate Geneve functionality in single module. 2015-08-27 15:42:48 -07:00
netfilter.c ipv4: Pass struct net into ip_route_me_harder 2015-09-29 20:21:32 +02:00
ping.c
proc.c
protocol.c
raw.c netfilter: Pass net into okfn 2015-09-17 17:18:37 -07:00
route.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-10-02 07:21:25 -07:00
syncookies.c tcp/dccp: install syn_recv requests into ehash table 2015-10-03 04:32:41 -07:00
sysctl_net_ipv4.c IGMP: Inhibit reports for local multicast groups 2015-08-28 13:28:47 -07:00
tcp.c tcp: prepare fastopen code for upcoming listener changes 2015-09-29 16:53:10 -07:00
tcp_bic.c
tcp_cdg.c
tcp_cong.c tcp: remove tcp_ecn_make_synack() socket argument 2015-09-25 13:00:38 -07:00
tcp_cubic.c tcp_cubic: do not set epoch_start in the future 2015-09-17 22:35:07 -07:00
tcp_dctcp.c
tcp_diag.c
tcp_fastopen.c tcp: attach SYNACK messages to request sockets instead of listener 2015-10-03 04:32:43 -07:00
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c
tcp_input.c tcp: attach SYNACK messages to request sockets instead of listener 2015-10-03 04:32:43 -07:00
tcp_ipv4.c tcp: do not lock listener to process SYN packets 2015-10-03 04:32:46 -07:00
tcp_lp.c
tcp_memcontrol.c
tcp_metrics.c net: Add helper function to compare inetpeer addresses 2015-08-28 13:32:36 -07:00
tcp_minisocks.c tcp: remove BUG_ON() in tcp_check_req() 2015-10-03 04:32:39 -07:00
tcp_offload.c
tcp_output.c tcp: attach SYNACK messages to request sockets instead of listener 2015-10-03 04:32:43 -07: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 net: Rename IFF_VRF_MASTER to IFF_L3MDEV_MASTER 2015-09-29 20:40:32 -07:00
udp_diag.c
udp_impl.h
udp_offload.c
udp_tunnel.c tunnel: introduce udp_tun_rx_dst() 2015-08-27 15:42:47 -07:00
udplite.c
xfrm4_input.c netfilter: Pass net into okfn 2015-09-17 17:18:37 -07:00
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
xfrm4_output.c netfilter: Add blank lines in callers of netfilter hooks 2015-09-17 17:18:37 -07:00
xfrm4_policy.c net: Replace vrf_master_ifindex{, _rcu} with l3mdev equivalents 2015-09-29 20:40:33 -07:00
xfrm4_protocol.c
xfrm4_state.c
xfrm4_tunnel.c