1. 01 7月, 2016 1 次提交
  2. 07 1月, 2016 1 次提交
    • D
      net: Add eth_platform_get_mac_address() helper. · c7f5d105
      David S. Miller 提交于
      A repeating pattern in drivers has become to use OF node information
      and, if not found, platform specific host information to extract the
      ethernet address for a given device.
      
      Currently this is done with a call to of_get_mac_address() and then
      some ifdef'd stuff for SPARC.
      
      Consolidate this into a portable routine, and provide the
      arch_get_platform_mac_address() weak function hook for all
      architectures to implement if they want.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c7f5d105
  3. 18 8月, 2015 1 次提交
  4. 06 5月, 2015 1 次提交
    • A
      etherdev: Fix sparse error, make test usable by other functions · 2c7a88c2
      Alexander Duyck 提交于
      This change does two things.  First it fixes a sparse error for the fact
      that the __be16 degrades to an integer.  Since that is actually what I am
      kind of doing I am simply working around that by forcing both sides of the
      comparison to u16.
      
      Also I realized on some compilers I was generating another instruction for
      big endian systems such as PowerPC since it was masking the value before
      doing the comparison.  So to resolve that I have simply pulled the mask out
      and wrapped it in an #ifndef __BIG_ENDIAN.
      
      Lastly I pulled this all out into its own function.  I notices there are
      similar checks in a number of other places so this function can be reused
      there to help reduce overhead in these paths as well.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2c7a88c2
  5. 04 5月, 2015 1 次提交
  6. 03 3月, 2015 1 次提交
  7. 03 1月, 2015 1 次提交
  8. 09 12月, 2014 1 次提交
    • A
      net: Add functions for handling padding frame and adding to length · 9c0c1124
      Alexander Duyck 提交于
      This patch adds two new helper functions skb_put_padto and eth_skb_pad.
      These functions deviate from the standard skb_pad or skb_padto in that they
      will also update the length and tail pointers so that they reflect the
      padding added to the frame.
      
      The eth_skb_pad helper is meant to be used with Ethernet devices to update
      either Rx or Tx frames so that they report the correct size.  The
      skb_put_padto helper is meant to be used primarily in the transmit path for
      network devices that need frames to be padded up to some minimum size and
      don't wish to simply update the length somewhere external to the frame.
      
      The motivation behind this is that there are a number of implementations
      throughout the network device drivers that are all doing the same thing,
      but each a little bit differently and as a result several implementations
      contain bugs such as updating the length without updating the tail offset
      and other similar issues.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9c0c1124
  9. 06 9月, 2014 1 次提交
  10. 16 1月, 2014 1 次提交
  11. 10 12月, 2013 2 次提交
  12. 07 12月, 2013 1 次提交
    • J
      ether_addr_equal: Optimize implementation, remove unused compare_ether_addr · 0d74c42f
      Joe Perches 提交于
      Add a new check for CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS to reduce
      the number of or's used in the ether_addr_equal comparison to very
      slightly improve function performance.
      
      Simplify the ether_addr_equal_64bits implementation.
      Integrate and remove the zap_last_2bytes helper as it's now
      used only once.
      
      Remove the now unused compare_ether_addr function.
      
      Update the unaligned-memory-access documentation to remove the
      compare_ether_addr description and show how unaligned accesses
      could occur with ether_addr_equal.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0d74c42f
  13. 27 9月, 2013 1 次提交
    • J
      [networking]device.h: Remove extern from function prototypes · f629d208
      Joe Perches 提交于
      There are a mix of function prototypes with and without extern
      in the kernel sources.  Standardize on not using extern for
      function prototypes.
      
      Function prototypes don't need to be written with extern.
      extern is assumed by the compiler.  Its use is as unnecessary as
      using auto to declare automatic/local variables in a block.
      Signed-off-by: NJoe Perches <joe@perches.com>
      f629d208
  14. 04 9月, 2013 1 次提交
  15. 22 1月, 2013 1 次提交
  16. 04 1月, 2013 1 次提交
  17. 03 11月, 2012 2 次提交
  18. 30 10月, 2012 1 次提交
  19. 11 9月, 2012 1 次提交
  20. 17 7月, 2012 1 次提交
  21. 11 7月, 2012 1 次提交
  22. 18 5月, 2012 1 次提交
  23. 13 5月, 2012 1 次提交
  24. 11 5月, 2012 1 次提交
  25. 10 5月, 2012 1 次提交
  26. 09 5月, 2012 1 次提交
  27. 08 5月, 2012 1 次提交
  28. 13 2月, 2012 1 次提交
    • D
      rename dev_hw_addr_random and remove redundant second · 1a0d6ae5
      Danny Kukawka 提交于
      Renamed dev_hw_addr_random to eth_hw_addr_random() to reflect that
      this function only assign a random ethernet address (MAC). Removed
      the second parameter (u8 *hwaddr), it's redundant since the also
      given net_device already contains net_device->dev_addr.
      Set it directly.
      
      Adapt igbvf and ixgbevf to the changed function.
      
      Small fix for ixgbevf_probe(): if ixgbevf_sw_init() fails
      (which means the device got no dev_addr) handle the error and
      jump to err_sw_init as already done by igbvf in similar case.
      Signed-off-by: NDanny Kukawka <danny.kukawka@bisect.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1a0d6ae5
  29. 13 7月, 2011 1 次提交
  30. 14 1月, 2011 1 次提交
  31. 11 1月, 2011 1 次提交
  32. 24 9月, 2010 1 次提交
  33. 27 8月, 2010 1 次提交
    • E
      gro: __napi_gro_receive() optimizations · 40d0802b
      Eric Dumazet 提交于
      compare_ether_header() can have a special implementation on 64 bit
      arches if CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is defined.
      
      __napi_gro_receive() and vlan_gro_common() can avoid a conditional
      branch to perform device match.
      
      On x86_64, __napi_gro_receive() has now 38 instructions instead of 53
      
      As gcc-4.4.3 still choose to not inline it, add inline keyword to this
      performance critical function.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      CC: Herbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      40d0802b
  34. 10 8月, 2010 1 次提交
  35. 25 7月, 2010 1 次提交
    • S
      sysfs: add attribute to indicate hw address assignment type · c1f79426
      Stefan Assmann 提交于
      Add addr_assign_type to struct net_device and expose it via sysfs.
      This new attribute has the purpose of giving user-space the ability to
      distinguish between different assignment types of MAC addresses.
      
      For example user-space can treat NICs with randomly generated MAC
      addresses differently than NICs that have permanent (locally assigned)
      MAC addresses.
      For the former udev could write a persistent net rule by matching the
      device path instead of the MAC address.
      There's also the case of devices that 'steal' MAC addresses from slave
      devices. In which it is also be beneficial for user-space to be aware
      of the fact.
      
      This patch also introduces a helper function to assist adoption of
      drivers that generate MAC addresses randomly.
      Signed-off-by: NStefan Assmann <sassmann@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c1f79426
  36. 06 5月, 2009 1 次提交
    • J
      net: introduce a list of device addresses dev_addr_list (v6) · f001fde5
      Jiri Pirko 提交于
      v5 -> v6 (current):
      -removed so far unused static functions
      -corrected dev_addr_del_multiple to call del instead of add
      
      v4 -> v5:
      -added device address type (suggested by davem)
      -removed refcounting (better to have simplier code then safe potentially few
       bytes)
      
      v3 -> v4:
      -changed kzalloc to kmalloc in __hw_addr_add_ii()
      -ASSERT_RTNL() avoided in dev_addr_flush() and dev_addr_init()
      
      v2 -> v3:
      -removed unnecessary rcu read locking
      -moved dev_addr_flush() calling to ensure no null dereference of dev_addr
      
      v1 -> v2:
      -added forgotten ASSERT_RTNL to dev_addr_init and dev_addr_flush
      -removed unnecessary rcu_read locking in dev_addr_init
      -use compare_ether_addr_64bits instead of compare_ether_addr
      -use L1_CACHE_BYTES as size for allocating struct netdev_hw_addr
      -use call_rcu instead of rcu_synchronize
      -moved is_etherdev_addr into __KERNEL__ ifdef
      
      This patch introduces a new list in struct net_device and brings a set of
      functions to handle the work with device address list. The list is a replacement
      for the original dev_addr field and because in some situations there is need to
      carry several device addresses with the net device. To be backward compatible,
      dev_addr is made to point to the first member of the list so original drivers
      sees no difference.
      Signed-off-by: NJiri Pirko <jpirko@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f001fde5
  37. 09 2月, 2009 1 次提交
  38. 24 11月, 2008 1 次提交
    • E
      eth: Declare an optimized compare_ether_addr_64bits() function · 1f87e235
      Eric Dumazet 提交于
      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: NEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1f87e235