1. 24 Nov, 2008 2 commits
    • Eric Dumazet's avatar
      net: Make sure BHs are disabled in sock_prot_inuse_add() · 920de804
      Eric Dumazet authored
      The rule of calling sock_prot_inuse_add() is that BHs must
      be disabled.  Some new calls were added where this was not
      true and this tiggers warnings as reported by Ilpo.
      
      Fix this by adding explicit BH disabling around those call sites,
      or moving sock_prot_inuse_add() call inside an existing BH disabled
      section.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      920de804
    • Eric Dumazet's avatar
      eth: Declare an optimized compare_ether_addr_64bits() function · 1f87e235
      Eric Dumazet authored
      Linus mentioned we could try to perform long word operations, even
      on potentially unaligned addresses, on x86 at least. David mentioned
      the HAVE_EFFICIENT_UNALIGNED_ACCESS test to handle this on all
      arches that have efficient unailgned accesses.
      
      I tried this idea and got nice assembly on 32 bits:
      
      158:   33 82 38 01 00 00       xor    0x138(%edx),%eax
      15e:   33 8a 34 01 00 00       xor    0x134(%edx),%ecx
      164:   c1 e0 10                shl    $0x10,%eax
      167:   09 c1                   or     %eax,%ecx
      169:   74 0b                   je     176 <eth_type_trans+0x87>
      
      And very nice assembly on 64 bits of course (one xor, one shl)
      
      Nice oprofile improvement in eth_type_trans(), 0.17 % instead of 0.41 %,
      expected since we remove 8 instructions on a fast path.
      
      This patch implements a compare_ether_addr_64bits() function, that
      uses the CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ifdef to efficiently
      perform the 6 bytes comparison on all capable arches.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1f87e235
  2. 23 Nov, 2008 13 commits
  3. 21 Nov, 2008 25 commits