linux/drivers/net
Eric Dumazet 73f156a6e8 inetpeer: get rid of ip_id_count
Ideally, we would need to generate IP ID using a per destination IP
generator.

linux kernels used inet_peer cache for this purpose, but this had a huge
cost on servers disabling MTU discovery.

1) each inet_peer struct consumes 192 bytes

2) inetpeer cache uses a binary tree of inet_peer structs,
   with a nominal size of ~66000 elements under load.

3) lookups in this tree are hitting a lot of cache lines, as tree depth
   is about 20.

4) If server deals with many tcp flows, we have a high probability of
   not finding the inet_peer, allocating a fresh one, inserting it in
   the tree with same initial ip_id_count, (cf secure_ip_id())

5) We garbage collect inet_peer aggressively.

IP ID generation do not have to be 'perfect'

Goal is trying to avoid duplicates in a short period of time,
so that reassembly units have a chance to complete reassembly of
fragments belonging to one message before receiving other fragments
with a recycled ID.

We simply use an array of generators, and a Jenkin hash using the dst IP
as a key.

ipv6_select_ident() is put back into net/ipv6/ip6_output.c where it
belongs (it is only used from this file)

secure_ip_id() and secure_ipv6_id() no longer are needed.

Rename ip_select_ident_more() to ip_select_ident_segs() to avoid
unnecessary decrement/increment of the number of segments.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-06-02 11:00:41 -07:00
..
appletalk
arcnet
bonding Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-05-24 00:32:30 -04:00
caif
can can: xilinx CAN controller support 2014-05-26 09:36:31 +02:00
cris
dsa net: dsa: update DSA drivers to use ds_to_priv 2014-04-30 13:31:25 -04:00
ethernet enic: Update driver to use __dev_uc/mc_sync/unsync calls 2014-06-02 10:40:54 -07:00
fddi
hamradio yam: replace del_timer by del_timer_sync 2014-03-27 15:28:06 -04:00
hippi
hyperv hyperv: Add hash value into RNDIS Per-packet info 2014-05-23 14:49:00 -04:00
ieee802154 ieee802154: Introduce the use of the managed version of kzalloc 2014-05-21 16:29:52 -04:00
irda irda: sh_irda: Enable driver compilation with COMPILE_TEST 2014-05-14 15:23:55 -04:00
phy net: of_mdio: add of_mdiobus_link_phydev() 2014-05-29 15:23:29 -07:00
plip
ppp inetpeer: get rid of ip_id_count 2014-06-02 11:00:41 -07:00
slip slip: fix spinlock variant 2014-04-27 23:35:12 -04:00
team team: lb: use sizeof(*fprog) in __fprog_create 2014-05-24 17:06:38 -04:00
usb r8152: Use kmemdup instead of kmalloc + memcpy 2014-05-30 16:25:15 -07:00
vmxnet3 net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
wan drivers/net/wan: delete unneeded call to netdev_priv 2014-05-15 16:57:47 -04:00
wimax wimax/i2400m: make return of 0 explicit 2014-05-21 17:16:24 -04:00
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-05-27 13:51:31 -04:00
xen-netback Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-05-24 00:32:30 -04:00
dummy.c
eql.c
ifb.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-29 18:48:54 -04:00
Kconfig
LICENSE.SRC
loopback.c
macvlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-05-24 00:32:30 -04:00
macvtap.c mactap: Fix checksum errors for non-gso packets in bridge mode 2014-04-30 16:12:22 -04:00
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c net: nlmon: flag nlmon devs with LLTX/SG 2014-03-28 16:49:47 -04:00
ntb_netdev.c net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
rionet.c net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
sb1000.c
Space.c
sungem_phy.c
tun.c net-tun: restructure tun_do_read for better sleep/wakeup efficiency 2014-05-21 15:50:28 -04:00
veth.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-29 18:48:54 -04:00
virtio_net.c net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
vxlan.c net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
xen-netfront.c net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00