Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
On 2013/12/30 14:05, Joe Perches wrote: > On Mon, 2013-12-30 at 10:39 +0800, Ding Tianhong wrote: >> 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))) > > Not quite. I meant this could be: > > u8 *addr = (u8 *)(unsigned long)le32_to_cpu(yp->rx_ring_dma) + > entry * > sizeof(struct yellowfin_desc); > > if (!ether_addr_equal(addr, dev->dev_addr) && > !is_broadcast_ether_addr(addr)) { > etc... > > but again, I think thus hardly matters and could just as well > be left alone. > > Ok, I will focus on ether_addr_equal in this patch, anymore will left alone. Thanks Regards Ding > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
On Mon, 2013-12-30 at 10:39 +0800, Ding Tianhong wrote: > 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))) Not quite. I meant this could be: u8 *addr = (u8 *)(unsigned long)le32_to_cpu(yp->rx_ring_dma) + entry * sizeof(struct yellowfin_desc); if (!ether_addr_equal(addr, dev->dev_addr) && !is_broadcast_ether_addr(addr)) { etc... but again, I think thus hardly matters and could just as well be left alone. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
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" Signed-off-by: Ding Tianhong --- 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 > > . > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
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 da...@davemloft.net Signed-off-by: Ding Tianhong dingtianh...@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 . -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
On Mon, 2013-12-30 at 10:39 +0800, Ding Tianhong wrote: 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))) Not quite. I meant this could be: u8 *addr = (u8 *)(unsigned long)le32_to_cpu(yp-rx_ring_dma) + entry * sizeof(struct yellowfin_desc); if (!ether_addr_equal(addr, dev-dev_addr) !is_broadcast_ether_addr(addr)) { etc... but again, I think thus hardly matters and could just as well be left alone. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
On 2013/12/30 14:05, Joe Perches wrote: On Mon, 2013-12-30 at 10:39 +0800, Ding Tianhong wrote: 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))) Not quite. I meant this could be: u8 *addr = (u8 *)(unsigned long)le32_to_cpu(yp-rx_ring_dma) + entry * sizeof(struct yellowfin_desc); if (!ether_addr_equal(addr, dev-dev_addr) !is_broadcast_ether_addr(addr)) { etc... but again, I think thus hardly matters and could just as well be left alone. Ok, I will focus on ether_addr_equal in this patch, anymore will left alone. Thanks Regards Ding -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
Hello. On 12/28/2013 06:18 PM, Ding Tianhong wrote: Use possibly more efficient ether_addr_equal to instead of memcmp. Cc: "David S. Miller" Signed-off-by: Ding Tianhong --- 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")) { Yes, exactly. Regards Ding WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
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" > >> Signed-off-by: Ding Tianhong > >> --- > >> 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. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
于 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" >> Signed-off-by: Ding Tianhong >> --- >> 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")) { Regards Ding > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
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" Signed-off-by: Ding Tianhong --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
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 da...@davemloft.net Signed-off-by: Ding Tianhong dingtianh...@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 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
于 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 da...@davemloft.net Signed-off-by: Ding Tianhong dingtianh...@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)) { Regards Ding -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
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 da...@davemloft.net Signed-off-by: Ding Tianhong dingtianh...@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. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
Hello. On 12/28/2013 06:18 PM, Ding Tianhong wrote: Use possibly more efficient ether_addr_equal to instead of memcmp. Cc: David S. Miller da...@davemloft.net Signed-off-by: Ding Tianhong dingtianh...@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)) { Yes, exactly. Regards Ding WBR, Sergei -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
Use possibly more efficient ether_addr_equal to instead of memcmp. Cc: "David S. Miller" Signed-off-by: Ding Tianhong --- 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) && + !ether_addr_equal(le32_to_cpu(yp->rx_ring_dma + + entry * sizeof(struct yellowfin_desc)), + "\377\377\377\377\377\377")) { if (bogus_rx++ == 0) netdev_warn(dev, "Bad frame to %pM\n", buf_addr); -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH net-next v2 11/20] net: packetengines: slight optimization of addr
Use possibly more efficient ether_addr_equal to instead of memcmp. Cc: David S. Miller da...@davemloft.net Signed-off-by: Ding Tianhong dingtianh...@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) + !ether_addr_equal(le32_to_cpu(yp-rx_ring_dma + + entry * sizeof(struct yellowfin_desc)), + \377\377\377\377\377\377)) { if (bogus_rx++ == 0) netdev_warn(dev, Bad frame to %pM\n, buf_addr); -- 1.7.1 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/