Patchwork [net-next?,V2] pktgen: Use simpler test for non-zero ipv6 address

login
register
mail settings
Submitter Joe Perches
Date Oct. 10, 2012, 7:23 p.m.
Message ID <1349897005.2035.24.camel@joe-AO722>
Download mbox | patch
Permalink /patch/190750/
State Deferred
Delegated to: David Miller
Headers show

Comments

Joe Perches - Oct. 10, 2012, 7:23 p.m.
Reduces object size and should be slightly faster.

allyesconfig: 
$ size net/core/pktgen.o*
   text	   data	    bss	    dec	    hex	filename
  52284	   4321	  11840	  68445	  10b5d	net/core/pktgen.o.new
  52310	   4293	  11848	  68451	  10b63	net/core/pktgen.o.old
 
Signed-off-by: Joe Perches <joe@perches.com>
---
> What about ipv6_addr_any() ?

That's better I guess.
I forgot about it and didn't see it.
I saw the IPV6_ADDR_ANY type tests and
didn't look further.

Anyway, it's odd that it generates slightly larger code
than the original patch's direct tests in 32bit with
gcc 4.7.2.  Perhaps an interesting lack of optimization?

cheers, Joe

 net/core/pktgen.c |    6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)



--
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
Joe Perches - Oct. 10, 2012, 7:38 p.m.
ipv4 and ipv6 use different styles for these tests.

ipv4_is_<foo>(__be32)
ipv6_addr_<foo>(struct in6_addr *)

Perhaps it'd be good to convert the ipv4 tests to the ipv6 style.

There are ~100 instances of ipv4_is_<foo> tests treewide.


--
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
Joe Perches - Oct. 11, 2012, 12:56 a.m.
Maybe all the is_<foo>_ether_addr  functions should be renamed
to eth_addr_<foo> for more api/style symmetry.

$ git grep --name-only -E "\bis_\w+_ether_addr" | \
  xargs sed -r -i -e 's/\bis_(\w+)_ether_addr\b/eth_addr_\1/g'
$ git diff --shortstat
 304 files changed, 690 insertions(+), 690 deletions(-)

Maybe add #defines of the old names for a few releases.

--
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
WANG Cong - Oct. 11, 2012, 2:15 a.m.
On Thu, Oct 11, 2012 at 3:23 AM, Joe Perches <joe@perches.com> wrote:
> Reduces object size and should be slightly faster.
>
> allyesconfig:
> $ size net/core/pktgen.o*
>    text    data     bss     dec     hex filename
>   52284    4321   11840   68445   10b5d net/core/pktgen.o.new
>   52310    4293   11848   68451   10b63 net/core/pktgen.o.old
>
> Signed-off-by: Joe Perches <joe@perches.com>

Looks good.

This should go to -net, net-next is not open currently.

Thanks.
--
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
David Laight - Oct. 11, 2012, 8:11 a.m.
> ipv4 and ipv6 use different styles for these tests.
> 
> ipv4_is_<foo>(__be32)
> ipv6_addr_<foo>(struct in6_addr *)

I presume there is a 'const' in there ...

> Perhaps it'd be good to convert the ipv4 tests to the ipv6 style.

You don't want to force an IPv4 address (which might be in a register)
be written out to stack.
Taking the address also has implications for the optimiser.

	David



--
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
Joe Perches - Oct. 11, 2012, 8:28 a.m.
On Thu, 2012-10-11 at 09:11 +0100, David Laight wrote:
> > ipv4 and ipv6 use different styles for these tests.
> > 
> > ipv4_is_<foo>(__be32)
> > ipv6_addr_<foo>(struct in6_addr *)
> 
> I presume there is a 'const' in there ...
> 
> > Perhaps it'd be good to convert the ipv4 tests to the ipv6 style.
> 
> You don't want to force an IPv4 address (which might be in a register)
> be written out to stack.
> Taking the address also has implications for the optimiser.

Of course not, I'm just talking about renaming.


--
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
David Miller - Oct. 11, 2012, 7:20 p.m.
From: Joe Perches <joe@perches.com>
Date: Wed, 10 Oct 2012 12:23:25 -0700

> Reduces object size and should be slightly faster.
> 
> allyesconfig: 
> $ size net/core/pktgen.o*
>    text	   data	    bss	    dec	    hex	filename
>   52284	   4321	  11840	  68445	  10b5d	net/core/pktgen.o.new
>   52310	   4293	  11848	  68451	  10b63	net/core/pktgen.o.old
>  
> Signed-off-by: Joe Perches <joe@perches.com>

Please resubmit when net-next opens.
--
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

Patch

diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 148e73d..a811a7d 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -2422,11 +2422,7 @@  static void mod_cur_headers(struct pktgen_dev *pkt_dev)
 		}
 	} else {		/* IPV6 * */
 
-		if (pkt_dev->min_in6_daddr.s6_addr32[0] == 0 &&
-		    pkt_dev->min_in6_daddr.s6_addr32[1] == 0 &&
-		    pkt_dev->min_in6_daddr.s6_addr32[2] == 0 &&
-		    pkt_dev->min_in6_daddr.s6_addr32[3] == 0) ;
-		else {
+		if (!ipv6_addr_any(&pkt_dev->min_in6_daddr)) {
 			int i;
 
 			/* Only random destinations yet */