diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2017-11-19 17:59:13 +0100 |
---|---|---|
committer | Simon Wunderlich <sw@simonwunderlich.de> | 2017-12-04 13:16:00 +0100 |
commit | 3326afe6bac383a354c947d878e3916a74bbd59a (patch) | |
tree | 8e868e6e040f5dc39b9f6d4e129843fa4b79cfa3 /net/batman-adv/originator.h | |
parent | 02dd9a8afab42d63ca89a0e7dc8c45c5bebeb710 (diff) | |
download | lwn-3326afe6bac383a354c947d878e3916a74bbd59a.tar.gz lwn-3326afe6bac383a354c947d878e3916a74bbd59a.zip |
batman-adv: Deinline batadv_orig_hash_find, save 7339 bytes
This function compiles to 288 bytes of machine code for Linux 4.14 on
Debian Stretch amd64 and (6.3.0-18) with the default configuration. 27
callsites (25 used in default config).
text data bss dec hex filename
179291 10317 4416 194024 2f5e8 batman-adv.ko.pre
171952 10317 4416 186685 2d93d batman-adv.ko.post
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
[sven@narfation.org: Fix includes, correct sizes+counts in commit message]
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Diffstat (limited to 'net/batman-adv/originator.h')
-rw-r--r-- | net/batman-adv/originator.h | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/net/batman-adv/originator.h b/net/batman-adv/originator.h index d94220a6d21a..40c7f039d5d7 100644 --- a/net/batman-adv/originator.h +++ b/net/batman-adv/originator.h @@ -23,14 +23,8 @@ #include <linux/compiler.h> #include <linux/if_ether.h> #include <linux/jhash.h> -#include <linux/kref.h> -#include <linux/rculist.h> -#include <linux/rcupdate.h> -#include <linux/stddef.h> #include <linux/types.h> -#include "hash.h" - struct netlink_callback; struct seq_file; struct sk_buff; @@ -100,34 +94,7 @@ static inline u32 batadv_choose_orig(const void *data, u32 size) return hash % size; } -static inline struct batadv_orig_node * -batadv_orig_hash_find(struct batadv_priv *bat_priv, const void *data) -{ - struct batadv_hashtable *hash = bat_priv->orig_hash; - struct hlist_head *head; - struct batadv_orig_node *orig_node, *orig_node_tmp = NULL; - int index; - - if (!hash) - return NULL; - - index = batadv_choose_orig(data, hash->size); - head = &hash->table[index]; - - rcu_read_lock(); - hlist_for_each_entry_rcu(orig_node, head, hash_entry) { - if (!batadv_compare_eth(orig_node, data)) - continue; - - if (!kref_get_unless_zero(&orig_node->refcount)) - continue; - - orig_node_tmp = orig_node; - break; - } - rcu_read_unlock(); - - return orig_node_tmp; -} +struct batadv_orig_node * +batadv_orig_hash_find(struct batadv_priv *bat_priv, const void *data); #endif /* _NET_BATMAN_ADV_ORIGINATOR_H_ */ |