IPV6 : get rid of __HAVE_ARCH_ADDR_SET
Subsystems (3)
PATCH 1/1 IPV6 : get rid of __HAVE_ARCH_ADDR_SET
__HAVE_ARCH_ADDR_SET seems unused these days, just get rid of it.
include/net/ipv6.h +0 -2
@@ -328,7 +328,6 @@ static inline void ipv6_addr_prefix(strumemset (pfx->s6_addr + o,0 ,16 - o); } -#ifndef __HAVE_ARCH_ADDR_SETstatic inline void ipv6_addr_set (struct in6_addr *addr,__be32 w1,__be32 w2,__be32 w3,__be32 w4)
@@ -338,7 +337,6 @@ static inline void ipv6_addr_set(struct addr->s6_addr32[2 ] = w3; addr->s6_addr32[3 ] = w4; } -#endif static inline int ipv6_addr_equal (const struct in6_addr *a1,const struct in6_addr *a2)
From: Eric Dumazet <[email protected]>
Date: Tue, 01 May 2007 06:00:09 +0200
Quoted 3 lines
__HAVE_ARCH_ADDR_SETseems unused these days, just get rid of it.Signed-off-by Eric Dumazet <[email protected]>
Applied, thanks Eric.
PATCH 1/1 IPV6 : Some cleanups in include/net/ipv6.h
1) struct ip6_flowlabel : moves 'users' field to avoid two 32bits holes for 64bit arches. Shrinks by 8 bytes sizeof(struct ip6_flowlabel)
2) ipv6_addr_cmp() and ipv6_addr_copy() dont need (void *) casts :
Compiler might take into account natural alignement of in6_addr structs to emit better code for memcpy()/memcmp() Casts to (void *) force byte accesses.
3) ipv6_addr_prefix() optimization :
Better to clear whole struct, as compiler can emit better code for memset(addr, 0, 16) (2 stores on x86_64), and avoid some conditional branches.
# size vmlinux.after vmlinux.before text data bss dec hex filename 5262262 647612 557432 6467306 62aeea vmlinux.after 5262550 647612 557432 6467594 62b00a vmlinux.before
thats 288 bytes saved.
include/net/ipv6.h +5 -8
@@ -204,9 +204,9 @@ struct ip6_flowlabel {struct ip6_flowlabel *next;__be32 label; +atomic_t users;struct in6_addr dst;struct ipv6_txoptions *opt; -atomic_t users;unsigned long linger;u8 share;u32 owner;
@@ -291,7 +291,7 @@ static inline int ipv6_addr_src_scope(costatic inline int ipv6_addr_cmp (const struct in6_addr *a1,const struct in6_addr *a2) { -return memcmp ((const void *) a1, (const void *) a2,sizeof (struct in6_addr )); +return memcmp (a1, a2,sizeof (struct in6_addr )); } static inline int
@@ -308,7 +308,7 @@ ipv6_masked_addr_cmp(const struct in6_adstatic inline void ipv6_addr_copy (struct in6_addr *a1,const struct in6_addr *a2) { -memcpy ((void *) a1, (const void *) a2,sizeof (struct in6_addr )); +memcpy (a1, a2,sizeof (struct in6_addr )); } static inline void ipv6_addr_prefix(struct in6_addr *pfx,
@@ -319,13 +319,10 @@ static inline void ipv6_addr_prefix(struint o = plen >>3 , b = plen &0x7 ; +memset (pfx->s6_addr,0 ,sizeof (pfx->s6_addr));memcpy (pfx->s6_addr, addr, o); -if (b !=0 ) { +if (b !=0 ) pfx->s6_addr[o] = addr->s6_addr[o] & (0xff00 >> b); - o++; - } -if (o <16 ) -memset (pfx->s6_addr + o,0 ,16 - o); } static inline void ipv6_addr_set(struct in6_addr *addr,
Re: [PATCH] IPV6 : Some cleanups in include/net/ipv6.h
From: Eric Dumazet <[email protected]>
Date: Thu, 3 May 2007 18:32:08 +0200
Quoted 9 lines
1) struct
ip6_flowlabel: moves 'users' field to avoid two 32bits holes for 64bit arches. Shrinks by 8 bytessizeof(struct ip6_flowlabel)2)
ipv6_addr_cmp()andipv6_addr_copy()dont need (void *) casts :
Compiler might take into account natural alignement ofin6_addrstructs to emit better code for memcpy()/memcmp() Casts to (void *) force byte accesses.3)
ipv6_addr_prefix()optimization :
Better to clear whole struct, as compiler can emit better code formemset(addr, 0, 16)(2 stores onx86_64), and avoid some conditional branches.
Quoted 8 lines
# size vmlinux.after vmlinux.before text data bss dec hex filename 5262262 647612 557432 6467306 62aeea vmlinux.after 5262550 647612 557432 6467594 62b00a vmlinux.beforethats 288 bytes saved.
Signed-off-by Eric Dumazet <[email protected]>
Applied, thanks Eric.