diff mbox

[09/21] batman-adv: slight optimization of addr compare

Message ID 52B7C5C5.2050304@huawei.com
State Superseded, archived
Delegated to: David Miller
Headers show

Commit Message

Ding Tianhong Dec. 23, 2013, 5:10 a.m. UTC
Use the recently added and possibly more efficient
ether_addr_equal_unaligned to instead of memcmp.

Cc: Marek Lindner <mareklindner@neomailbox.ch>
Cc: Simon Wunderlich <sw@simonwunderlich.de>
Cc: Antonio Quartulli <antonio@meshcoding.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: b.a.t.m.a.n@lists.open-mesh.org
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Tan Xiaojun <tanxiaojun@huawei.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
---
 net/batman-adv/originator.c        | 2 +-
 net/batman-adv/translation-table.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Antonio Quartulli Dec. 23, 2013, 8:46 a.m. UTC | #1
On 23/12/13 06:10, Ding Tianhong wrote:

[...]

> --- a/net/batman-adv/originator.c
> +++ b/net/batman-adv/originator.c
> @@ -41,7 +41,7 @@ int batadv_compare_orig(const struct hlist_node *node, const void *data2)
>  	const void *data1 = container_of(node, struct batadv_orig_node,
>  					 hash_entry);
>  
> -	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
> +	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;

ether_addr_equal_unaligned() returns a bool value which is implicitly
converted to 1 or 0: there is no need for the ternary if anymore.


>  }
>  
>  /**
> diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
> index 4add57d..5e66d4b 100644
> --- a/net/batman-adv/translation-table.c
> +++ b/net/batman-adv/translation-table.c
> @@ -51,7 +51,7 @@ static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
>  	const void *data1 = container_of(node, struct batadv_tt_common_entry,
>  					 hash_entry);
>  
> -	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
> +	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;

same here


Moreover, include linux/etherdevice.h in both files as explained in
point 1) of Documentation/SubmitChecklist

Thanks.



Cheers,
Joe Perches Dec. 23, 2013, 8:59 a.m. UTC | #2
On Mon, 2013-12-23 at 09:46 +0100, Antonio Quartulli wrote:
> On 23/12/13 06:10, Ding Tianhong wrote:
> 
> [...]
> 
> > --- a/net/batman-adv/originator.c
> > +++ b/net/batman-adv/originator.c
> > @@ -41,7 +41,7 @@ int batadv_compare_orig(const struct hlist_node *node, const void *data2)
> >  	const void *data1 = container_of(node, struct batadv_orig_node,
> >  					 hash_entry);
> >  
> > -	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
> > +	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;
> 
> ether_addr_equal_unaligned() returns a bool value which is implicitly
> converted to 1 or 0: there is no need for the ternary if anymore.

Should these use batadv_compare_eth?


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Antonio Quartulli Dec. 23, 2013, 9:06 a.m. UTC | #3
On 23/12/13 09:59, Joe Perches wrote:
> On Mon, 2013-12-23 at 09:46 +0100, Antonio Quartulli wrote:
>> On 23/12/13 06:10, Ding Tianhong wrote:
>>
>> [...]
>>
>>> --- a/net/batman-adv/originator.c
>>> +++ b/net/batman-adv/originator.c
>>> @@ -41,7 +41,7 @@ int batadv_compare_orig(const struct hlist_node *node, const void *data2)
>>>  	const void *data1 = container_of(node, struct batadv_orig_node,
>>>  					 hash_entry);
>>>  
>>> -	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
>>> +	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;
>>
>> ether_addr_equal_unaligned() returns a bool value which is implicitly
>> converted to 1 or 0: there is no need for the ternary if anymore.
> 
> Should these use batadv_compare_eth?
> 

That makes sense.

I was wondering whether we should get rid of batadv_compare_eth() at all
and always use ether_addr_equal_unaligned(). The "unaligned explanation"
is part of the name, so there is no need to use a commented helper anymore.

However, until that moment it is better to get stuck to
batadv_compare_eth().


Ding, can you also follow Joe's suggestion for this patch please?


Thanks,
Ding Tianhong Dec. 23, 2013, 9:09 a.m. UTC | #4
On 2013/12/23 16:46, Antonio Quartulli wrote:
> On 23/12/13 06:10, Ding Tianhong wrote:
> 
> [...]
> 
>> --- a/net/batman-adv/originator.c
>> +++ b/net/batman-adv/originator.c
>> @@ -41,7 +41,7 @@ int batadv_compare_orig(const struct hlist_node *node, const void *data2)
>>  	const void *data1 = container_of(node, struct batadv_orig_node,
>>  					 hash_entry);
>>  
>> -	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
>> +	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;
> 
> ether_addr_equal_unaligned() returns a bool value which is implicitly
> converted to 1 or 0: there is no need for the ternary if anymore.
> 
> 
>>  }
>>  
>>  /**
>> diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
>> index 4add57d..5e66d4b 100644
>> --- a/net/batman-adv/translation-table.c
>> +++ b/net/batman-adv/translation-table.c
>> @@ -51,7 +51,7 @@ static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
>>  	const void *data1 = container_of(node, struct batadv_tt_common_entry,
>>  					 hash_entry);
>>  
>> -	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
>> +	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;
> 
> same here
> 
> 
> Moreover, include linux/etherdevice.h in both files as explained in
> point 1) of Documentation/SubmitChecklist
> 
> Thanks.
> 
> 
> 
> Cheers,
> 

Yes, thanks a lot, fix it soon.

Regards
Ding



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ding Tianhong Dec. 23, 2013, 9:10 a.m. UTC | #5
On 2013/12/23 16:59, Joe Perches wrote:
> On Mon, 2013-12-23 at 09:46 +0100, Antonio Quartulli wrote:
>> On 23/12/13 06:10, Ding Tianhong wrote:
>>
>> [...]
>>
>>> --- a/net/batman-adv/originator.c
>>> +++ b/net/batman-adv/originator.c
>>> @@ -41,7 +41,7 @@ int batadv_compare_orig(const struct hlist_node *node, const void *data2)
>>>  	const void *data1 = container_of(node, struct batadv_orig_node,
>>>  					 hash_entry);
>>>  
>>> -	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
>>> +	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;
>>
>> ether_addr_equal_unaligned() returns a bool value which is implicitly
>> converted to 1 or 0: there is no need for the ternary if anymore.
> 
> Should these use batadv_compare_eth?
> 
> 

Yes, and need to remove the checks for return value.

Regards
Ding 

> 
> 


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ding Tianhong Dec. 23, 2013, 9:12 a.m. UTC | #6
On 2013/12/23 17:06, Antonio Quartulli wrote:
> On 23/12/13 09:59, Joe Perches wrote:
>> On Mon, 2013-12-23 at 09:46 +0100, Antonio Quartulli wrote:
>>> On 23/12/13 06:10, Ding Tianhong wrote:
>>>
>>> [...]
>>>
>>>> --- a/net/batman-adv/originator.c
>>>> +++ b/net/batman-adv/originator.c
>>>> @@ -41,7 +41,7 @@ int batadv_compare_orig(const struct hlist_node *node, const void *data2)
>>>>  	const void *data1 = container_of(node, struct batadv_orig_node,
>>>>  					 hash_entry);
>>>>  
>>>> -	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
>>>> +	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;
>>>
>>> ether_addr_equal_unaligned() returns a bool value which is implicitly
>>> converted to 1 or 0: there is no need for the ternary if anymore.
>>
>> Should these use batadv_compare_eth?
>>
> 
> That makes sense.
> 
> I was wondering whether we should get rid of batadv_compare_eth() at all
> and always use ether_addr_equal_unaligned(). The "unaligned explanation"
> is part of the name, so there is no need to use a commented helper anymore.
> 
> However, until that moment it is better to get stuck to
> batadv_compare_eth().
> 
> 
> Ding, can you also follow Joe's suggestion for this patch please?
> 
> 
> Thanks,
> 
> 
Ok



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c
index 8ab1434..0490a26 100644
--- a/net/batman-adv/originator.c
+++ b/net/batman-adv/originator.c
@@ -41,7 +41,7 @@  int batadv_compare_orig(const struct hlist_node *node, const void *data2)
 	const void *data1 = container_of(node, struct batadv_orig_node,
 					 hash_entry);
 
-	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
+	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;
 }
 
 /**
diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
index 4add57d..5e66d4b 100644
--- a/net/batman-adv/translation-table.c
+++ b/net/batman-adv/translation-table.c
@@ -51,7 +51,7 @@  static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
 	const void *data1 = container_of(node, struct batadv_tt_common_entry,
 					 hash_entry);
 
-	return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
+	return ether_addr_equal_unaligned(data1, data2) ? 1 : 0;
 }
 
 /**