batman-adv: use kmem_cache for translation table
authorSven Eckelmann <sven@narfation.org>
Sat, 25 Jun 2016 14:44:06 +0000 (16:44 +0200)
committerSimon Wunderlich <sw@simonwunderlich.de>
Tue, 9 Aug 2016 05:54:32 +0000 (07:54 +0200)
commit86452f81d200d4d6ad489ef84311030eff84dd84
tree6d83f692b7ae449a46400cc25a733abb5e7b4052
parenta65e5481315e0754a20f58aa374423610a311f33
batman-adv: use kmem_cache for translation table

The translation table (global, local) is usually the part of batman-adv
which has the most dynamical allocated objects. Most of them
(tt_local_entry, tt_global_entry, tt_orig_list_entry, tt_change_node,
tt_req_node, tt_roam_node) are equally sized. So it makes sense to have
them allocated from a kmem_cache for each type.

This approach allowed a small wireless router (TP-Link TL-841NDv8; SLUB
allocator) to store 34% more translation table entries compared to the
current implementation.

[1] https://open-mesh.org/projects/batman-adv/wiki/Kmalloc-kmem-cache-tests

Reported-by: Linus Lüssing <linus.luessing@c0d3.blue>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
net/batman-adv/main.c
net/batman-adv/translation-table.c
net/batman-adv/translation-table.h