• Eric Dumazet's avatar
    [IPV6]: Some cleanups in include/net/ipv6.h · db3459d1
    Eric Dumazet authored
    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.
    Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    db3459d1
ipv6.h 16.5 KB