From patchwork Wed Nov 14 09:53:48 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Wunderlich X-Patchwork-Id: 2548 Return-Path: Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.186]) by open-mesh.org (Postfix) with ESMTPS id 24D50601710 for ; Wed, 14 Nov 2012 23:55:41 +0100 (CET) Received: from [10.99.52.31] (dslb-094-222-006-045.pools.arcor-ip.net [94.222.6.45]) by mrelayeu.kundenserver.de (node=mreu2) with ESMTP (Nemesis) id 0MM2cS-1TeIiG2IvM-007vpj; Wed, 14 Nov 2012 23:55:40 +0100 MIME-Version: 1.0 From: Simon Wunderlich Date: Wed, 14 Nov 2012 10:53:48 +0100 To: b.a.t.m.a.n@lists.open-mesh.org Message-ID: <1352886828-24651-1-git-send-email-siwu@hrz.tu-chemnitz.de> X-Provags-ID: V02:K0:og9Jx4SvQ+XZZNHujQYN57ZY4LecA/saCQhyaPsHVeS Dzruhl8ULMec5F5P3vamgfWg87CDUfiRi83pU3T3tgkP6zbJS2 ZSD72i2LC7RD6p4ftDqyxX0CB/lQq7K/X8LDofB8S0E3u0uFqG D0iB+FeYsAHFr1LZdCrcxix0vsTUS+BS/XmUtVqY7jW0wK64c0 BGR+EIinT76x1E9hhAj9s5Sly4budQNOYAw73zwWvEil2E/skb WEfFPe0Ty9r1N5BFvTwjo8pd0ZKgcxeFcxezf5P/Qu24NXyDUP 3BPKVj849/10SQULTHPyFFUfSAMsFevifaaqy4YFdxkiSqMFsl bUOdPqlsAC9mHC0Qdre6feJUx12HWWl5oBtE0xxoX86Xn2rF2/ POKWPvZGVPAaw== Cc: Simon Wunderlich Subject: [B.A.T.M.A.N.] [RFC] batman-adv: pass value in batadv_hash_bytes X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Nov 2012 22:55:41 -0000 Passing the hash value by reference creates unneeded overhead. Pass by value instead. Reported-by: David Miller Signed-off-by: Simon Wunderlich --- bridge_loop_avoidance.c | 8 ++++---- hash.h | 12 ++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/bridge_loop_avoidance.c b/bridge_loop_avoidance.c index b6da6ae..fc56ea2 100644 --- a/bridge_loop_avoidance.c +++ b/bridge_loop_avoidance.c @@ -43,8 +43,8 @@ static inline uint32_t batadv_choose_claim(const void *data, uint32_t size) struct batadv_claim *claim = (struct batadv_claim *)data; uint32_t hash = 0; - batadv_hash_bytes(&hash, &claim->addr, sizeof(claim->addr)); - batadv_hash_bytes(&hash, &claim->vid, sizeof(claim->vid)); + hash = batadv_hash_bytes(hash, &claim->addr, sizeof(claim->addr)); + hash = batadv_hash_bytes(hash, &claim->vid, sizeof(claim->vid)); hash += (hash << 3); hash ^= (hash >> 11); @@ -60,8 +60,8 @@ static inline uint32_t batadv_choose_backbone_gw(const void *data, struct batadv_claim *claim = (struct batadv_claim *)data; uint32_t hash = 0; - batadv_hash_bytes(&hash, &claim->addr, sizeof(claim->addr)); - batadv_hash_bytes(&hash, &claim->vid, sizeof(claim->vid)); + hash = batadv_hash_bytes(hash, &claim->addr, sizeof(claim->addr)); + hash = batadv_hash_bytes(hash, &claim->vid, sizeof(claim->vid)); hash += (hash << 3); hash ^= (hash >> 11); diff --git a/hash.h b/hash.h index f173427..e053339 100644 --- a/hash.h +++ b/hash.h @@ -86,17 +86,21 @@ static inline void batadv_hash_delete(struct batadv_hashtable *hash, * @hash: previous hash value * @data: data to be hashed * @size: number of bytes to be hashed + * + * Returns the new hash value. */ -static inline void batadv_hash_bytes(uint32_t *hash, void *data, uint32_t size) +static inline uint32_t batadv_hash_bytes(uint32_t hash, void *data, + uint32_t size) { const unsigned char *key = data; int i; for (i = 0; i < size; i++) { - *hash += key[i]; - *hash += (*hash << 10); - *hash ^= (*hash >> 6); + hash += key[i]; + hash += (hash << 10); + hash ^= (hash >> 6); } + return hash; } /**