From: Ding Tianhong <dingtianhong@huawei.com>
To: Toshiaki Makita <toshiaki.makita1@gmail.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Netdev <netdev@vger.kernel.org>,
bridge@lists.linux-foundation.org,
"David S. Miller" <davem@davemloft.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [Bridge] [PATCH 12/21] bridge: slight optimization of addr compare
Date: Mon, 23 Dec 2013 16:38:01 +0800 [thread overview]
Message-ID: <52B7F669.8080207@huawei.com> (raw)
In-Reply-To: <1387787627.1797.10.camel@localhost.localdomain>
On 2013/12/23 16:33, Toshiaki Makita wrote:
> On Mon, 2013-12-23 at 13:10 +0800, Ding Tianhong wrote:
>> Use the recently added and possibly more efficient
>> ether_addr_equal_unaligned to instead of memcmp.
>>
>> Cc: Stephen Hemminger <stephen@networkplumber.org>
>> Cc: David Miller <davem@davemloft.net>
>> Cc: bridge@lists.linux-foundation.org
>> Cc: netdev@vger.kernel.org
>> Signed-off-by: Wang Weidong <wangweidong1@huawei.com>
>> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
>> ---
>> net/bridge/br_stp_if.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
>> index 656a6f3..04217d1 100644
>> --- a/net/bridge/br_stp_if.c
>> +++ b/net/bridge/br_stp_if.c
>> @@ -229,7 +229,7 @@ bool br_stp_recalculate_bridge_id(struct net_bridge *br)
>>
>> list_for_each_entry(p, &br->port_list, list) {
>> if (addr == br_mac_zero ||
>> - memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)
>> + !ether_addr_equal_unaligned(p->dev->dev_addr, addr) < 0)
>> addr = p->dev->dev_addr;
>>
>> }
>
> We cannot do this change.
> !ether_addr_equal() isn't identical to memcmp().
> memcmp() can return negative value but ether_addr_equal() cannot.
> br_stp_recalculate_bridge_id() is searching the smallest address among
> its ports. This change breaks it.
>
> Thanks,
> Toshiaki Makita
Yes, I miss it, the negative value is useful here, thanks for point out.
Regards
Ding
>
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Ding Tianhong <dingtianhong@huawei.com>
To: Toshiaki Makita <toshiaki.makita1@gmail.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
"David S. Miller" <davem@davemloft.net>,
<bridge@lists.linux-foundation.org>,
Netdev <netdev@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 12/21] bridge: slight optimization of addr compare
Date: Mon, 23 Dec 2013 16:38:01 +0800 [thread overview]
Message-ID: <52B7F669.8080207@huawei.com> (raw)
In-Reply-To: <1387787627.1797.10.camel@localhost.localdomain>
On 2013/12/23 16:33, Toshiaki Makita wrote:
> On Mon, 2013-12-23 at 13:10 +0800, Ding Tianhong wrote:
>> Use the recently added and possibly more efficient
>> ether_addr_equal_unaligned to instead of memcmp.
>>
>> Cc: Stephen Hemminger <stephen@networkplumber.org>
>> Cc: David Miller <davem@davemloft.net>
>> Cc: bridge@lists.linux-foundation.org
>> Cc: netdev@vger.kernel.org
>> Signed-off-by: Wang Weidong <wangweidong1@huawei.com>
>> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
>> ---
>> net/bridge/br_stp_if.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
>> index 656a6f3..04217d1 100644
>> --- a/net/bridge/br_stp_if.c
>> +++ b/net/bridge/br_stp_if.c
>> @@ -229,7 +229,7 @@ bool br_stp_recalculate_bridge_id(struct net_bridge *br)
>>
>> list_for_each_entry(p, &br->port_list, list) {
>> if (addr == br_mac_zero ||
>> - memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)
>> + !ether_addr_equal_unaligned(p->dev->dev_addr, addr) < 0)
>> addr = p->dev->dev_addr;
>>
>> }
>
> We cannot do this change.
> !ether_addr_equal() isn't identical to memcmp().
> memcmp() can return negative value but ether_addr_equal() cannot.
> br_stp_recalculate_bridge_id() is searching the smallest address among
> its ports. This change breaks it.
>
> Thanks,
> Toshiaki Makita
Yes, I miss it, the negative value is useful here, thanks for point out.
Regards
Ding
>
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Ding Tianhong <dingtianhong@huawei.com>
To: Toshiaki Makita <toshiaki.makita1@gmail.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Netdev <netdev@vger.kernel.org>,
bridge@lists.linux-foundation.org,
"David S. Miller" <davem@davemloft.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 12/21] bridge: slight optimization of addr compare
Date: Mon, 23 Dec 2013 16:38:01 +0800 [thread overview]
Message-ID: <52B7F669.8080207@huawei.com> (raw)
In-Reply-To: <1387787627.1797.10.camel@localhost.localdomain>
On 2013/12/23 16:33, Toshiaki Makita wrote:
> On Mon, 2013-12-23 at 13:10 +0800, Ding Tianhong wrote:
>> Use the recently added and possibly more efficient
>> ether_addr_equal_unaligned to instead of memcmp.
>>
>> Cc: Stephen Hemminger <stephen@networkplumber.org>
>> Cc: David Miller <davem@davemloft.net>
>> Cc: bridge@lists.linux-foundation.org
>> Cc: netdev@vger.kernel.org
>> Signed-off-by: Wang Weidong <wangweidong1@huawei.com>
>> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
>> ---
>> net/bridge/br_stp_if.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
>> index 656a6f3..04217d1 100644
>> --- a/net/bridge/br_stp_if.c
>> +++ b/net/bridge/br_stp_if.c
>> @@ -229,7 +229,7 @@ bool br_stp_recalculate_bridge_id(struct net_bridge *br)
>>
>> list_for_each_entry(p, &br->port_list, list) {
>> if (addr == br_mac_zero ||
>> - memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)
>> + !ether_addr_equal_unaligned(p->dev->dev_addr, addr) < 0)
>> addr = p->dev->dev_addr;
>>
>> }
>
> We cannot do this change.
> !ether_addr_equal() isn't identical to memcmp().
> memcmp() can return negative value but ether_addr_equal() cannot.
> br_stp_recalculate_bridge_id() is searching the smallest address among
> its ports. This change breaks it.
>
> Thanks,
> Toshiaki Makita
Yes, I miss it, the negative value is useful here, thanks for point out.
Regards
Ding
>
>
>
next prev parent reply other threads:[~2013-12-23 8:38 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-23 5:10 [Bridge] [PATCH 12/21] bridge: slight optimization of addr compare Ding Tianhong
2013-12-23 5:10 ` Ding Tianhong
2013-12-23 8:33 ` [Bridge] " Toshiaki Makita
2013-12-23 8:33 ` Toshiaki Makita
2013-12-23 8:38 ` Ding Tianhong [this message]
2013-12-23 8:38 ` Ding Tianhong
2013-12-23 8:38 ` Ding Tianhong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52B7F669.8080207@huawei.com \
--to=dingtianhong@huawei.com \
--cc=bridge@lists.linux-foundation.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
--cc=toshiaki.makita1@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.