All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ding Tianhong <dingtianhong@huawei.com>
To: Joe Perches <joe@perches.com>, Ding Tianhong <dthxman@gmail.com>
Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>,
	"David S. Miller" <davem@davemloft.net>,
	Netdev <netdev@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
Date: Mon, 30 Dec 2013 10:39:51 +0800	[thread overview]
Message-ID: <52C0DCF7.6040402@huawei.com> (raw)
In-Reply-To: <1388251380.24123.15.camel@joe-AO722>

On 2013/12/29 1:23, Joe Perches wrote:
> On Sat, 2013-12-28 at 23:18 +0800, Ding Tianhong wrote:
>> 于 2013/12/28 21:58, Sergei Shtylyov 写道:
>>> Hello.
>>>
>>> On 28-12-2013 10:17, Ding Tianhong wrote:
>>>
>>>> Use possibly more efficient ether_addr_equal
>>>> to instead of memcmp.
>>>
>>>> Cc: "David S. Miller" <davem@davemloft.net>
>>>> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
>>>> ---
>>>>   drivers/net/ethernet/packetengines/yellowfin.c |   12 ++++++------
>>>>   1 files changed, 6 insertions(+), 6 deletions(-)
>>>
>>>> diff --git a/drivers/net/ethernet/packetengines/yellowfin.c b/drivers/net/ethernet/packetengines/yellowfin.c
>>>> index d28593b..b83ac0e 100644
>>>> --- a/drivers/net/ethernet/packetengines/yellowfin.c
>>>> +++ b/drivers/net/ethernet/packetengines/yellowfin.c
>>>> @@ -1097,12 +1097,12 @@ static int yellowfin_rx(struct net_device *dev)
>>>>               if (status2 & 0x80) dev->stats.rx_dropped++;
>>>>   #ifdef YF_PROTOTYPE        /* Support for prototype hardware errata. */
>>>>           } else if ((yp->flags & HasMACAddrBug)  &&
>>>> -            memcmp(le32_to_cpu(yp->rx_ring_dma +
>>>> -                entry*sizeof(struct yellowfin_desc)),
>>>> -                dev->dev_addr, 6) != 0 &&
>>>> -            memcmp(le32_to_cpu(yp->rx_ring_dma +
>>>> -                entry*sizeof(struct yellowfin_desc)),
>>>> -                "\377\377\377\377\377\377", 6) != 0) {
>>>> +            !ether_addr_equal(le32_to_cpu(yp->rx_ring_dma +
>>>> +                              entry * sizeof(struct yellowfin_desc)),
>>>> +                              dev->dev_addr) &&
>>>
>>>    Previous line was aligned correctly, the above line should start under le32_to_cpu.
>>>
>>>> +            !ether_addr_equal(le32_to_cpu(yp->rx_ring_dma +
>>>> +                              entry * sizeof(struct yellowfin_desc)),
>>>
>>>    Start the continuation lines under 'yp', please.
>>>
>>>> +                              "\377\377\377\377\377\377")) {
>>>
>>>    This line should start under le32_to_cpu.
>>>
>>> WBR, Sergei
>>>
>>
>> Hi sergei:
>> you mean this way?
>> 	!ether_addr_equal(le32_to_cpu(yp->rx_ring_dma +
>> 				      entry * sizeof(struct yellowfin_desc)),
>> 			  dev->dev_addr) &&
>>
>> 	!ether_addr_equal(le32_to_cpu(yp->rx_ring_dma +
>> 				      entry * sizeof(struct yellowfin_desc)),
>> 			  "\377\377\377\377\377\377")) {
> 
> Does this really matter?
> Does anyone have a packetengine NIC anymore?
> 
> \377 octal is 0xff, so this is matching a broadcast address.
> is_broadcast_ether_addr(addr) would be appropriate.
> 
> So would using a temporary address.
> 
> u8 *addr = (u8 *)(unsigned long)le32_to_cpu(etc)
> 
> but the whole thing looks very suspect as an le32
> value could not be added to correctly on a
> big-endian arch anyway.
> 
> My guess is this was tested only on an x86 and
> it should be:
> 
> 	u8 *addr = (u8 *)(unsigned long)(le32_to_cpu(yp->rx_ring_dma) +
> 					 entry * sizeof(struct yellowfin_desc));
> 
> It maybe better just to leave these two alone.
> 

Hi Joe:

I don't understand packetengine NIC anymore, But I think the change is clearly,
as your said, the broadcast check is enough here, did you mean that?

	!is_broadcast_ether_addr((u8 *)(le32_to_cpu(yp->rx_ring_dma) +
						    entry * sizeof(struct yellowfin_desc)))

Thanks

Regards
Ding

> 
> .
> 



  reply	other threads:[~2013-12-30  2:40 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-28  6:17 [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr Ding Tianhong
2013-12-28 13:58 ` Sergei Shtylyov
2013-12-28 15:18   ` Ding Tianhong
2013-12-28 17:23     ` Joe Perches
2013-12-30  2:39       ` Ding Tianhong [this message]
2013-12-30  6:05         ` Joe Perches
2013-12-30  6:19           ` Ding Tianhong
2013-12-28 23:25     ` Sergei Shtylyov

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=52C0DCF7.6040402@huawei.com \
    --to=dingtianhong@huawei.com \
    --cc=davem@davemloft.net \
    --cc=dthxman@gmail.com \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=sergei.shtylyov@cogentembedded.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.