neigh: optimize neigh_parms_release()
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Wed, 29 Oct 2014 18:29:31 +0000 (19:29 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Oct 2014 20:11:50 +0000 (16:11 -0400)
commit75fbfd33234a71556bec34b099d98f970190905d
tree1a5b40b1e9d8035336c8e8ac581cb10165951cc2
parentbc9ad166e38ae1cdcb5323a8aa45dff834d68bfa
neigh: optimize neigh_parms_release()

In neigh_parms_release() we loop over all entries to find the entry given in
argument and being able to remove it from the list. By using a double linked
list, we can avoid this loop.

Here are some numbers with 30 000 dummy interfaces configured:

Before the patch:
$ time rmmod dummy
real 2m0.118s
user 0m0.000s
sys 1m50.048s

After the patch:
$ time rmmod dummy
real 1m9.970s
user 0m0.000s
sys 0m47.976s

Suggested-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/neighbour.h
net/core/neighbour.c