1. 21 12月, 2009 1 次提交
  2. 19 12月, 2009 2 次提交
  3. 04 12月, 2009 6 次提交
  4. 03 12月, 2009 2 次提交
  5. 04 11月, 2009 1 次提交
  6. 04 9月, 2009 1 次提交
  7. 01 9月, 2009 1 次提交
  8. 29 8月, 2009 1 次提交
  9. 23 8月, 2009 8 次提交
  10. 16 8月, 2009 1 次提交
  11. 02 8月, 2009 1 次提交
  12. 27 7月, 2009 1 次提交
  13. 24 6月, 2009 1 次提交
  14. 18 6月, 2009 1 次提交
    • J
      net: group address list and its count · 31278e71
      Jiri Pirko 提交于
      This patch is inspired by patch recently posted by Johannes Berg. Basically what
      my patch does is to group list and a count of addresses into newly introduced
      structure netdev_hw_addr_list. This brings us two benefits:
      1) struct net_device becames a bit nicer.
      2) in the future there will be a possibility to operate with lists independently
         on netdevices (with exporting right functions).
      I wanted to introduce this patch before I'll post a multicast lists conversion.
      Signed-off-by: NJiri Pirko <jpirko@redhat.com>
      
       drivers/net/bnx2.c              |    4 +-
       drivers/net/e1000/e1000_main.c  |    4 +-
       drivers/net/ixgbe/ixgbe_main.c  |    6 +-
       drivers/net/mv643xx_eth.c       |    2 +-
       drivers/net/niu.c               |    4 +-
       drivers/net/virtio_net.c        |   10 ++--
       drivers/s390/net/qeth_l2_main.c |    2 +-
       include/linux/netdevice.h       |   17 +++--
       net/core/dev.c                  |  130 ++++++++++++++++++--------------------
       9 files changed, 89 insertions(+), 90 deletions(-)
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      31278e71
  15. 09 6月, 2009 2 次提交
  16. 08 6月, 2009 1 次提交
    • E
      net: skb_shared_info optimization · 042a53a9
      Eric Dumazet 提交于
      skb_dma_unmap() is quite expensive for small packets,
      because we use two different cache lines from skb_shared_info.
      
      One to access nr_frags, one to access dma_maps[0]
      
      Instead of dma_maps being an array of MAX_SKB_FRAGS + 1 elements,
      let dma_head alone in a new dma_head field, close to nr_frags,
      to reduce cache lines misses.
      
      Tested on my dev machine (bnx2 & tg3 adapters), nice speedup !
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      042a53a9
  17. 30 5月, 2009 1 次提交
    • J
      net: convert unicast addr list · ccffad25
      Jiri Pirko 提交于
      This patch converts unicast address list to standard list_head using
      previously introduced struct netdev_hw_addr. It also relaxes the
      locking. Original spinlock (still used for multicast addresses) is not
      needed and is no longer used for a protection of this list. All
      reading and writing takes place under rtnl (with no changes).
      
      I also removed a possibility to specify the length of the address
      while adding or deleting unicast address. It's always dev->addr_len.
      
      The convertion touched especially e1000 and ixgbe codes when the
      change is not so trivial.
      Signed-off-by: NJiri Pirko <jpirko@redhat.com>
      
       drivers/net/bnx2.c               |   13 +--
       drivers/net/e1000/e1000_main.c   |   24 +++--
       drivers/net/ixgbe/ixgbe_common.c |   14 ++--
       drivers/net/ixgbe/ixgbe_common.h |    4 +-
       drivers/net/ixgbe/ixgbe_main.c   |    6 +-
       drivers/net/ixgbe/ixgbe_type.h   |    4 +-
       drivers/net/macvlan.c            |   11 +-
       drivers/net/mv643xx_eth.c        |   11 +-
       drivers/net/niu.c                |    7 +-
       drivers/net/virtio_net.c         |    7 +-
       drivers/s390/net/qeth_l2_main.c  |    6 +-
       drivers/scsi/fcoe/fcoe.c         |   16 ++--
       include/linux/netdevice.h        |   18 ++--
       net/8021q/vlan.c                 |    4 +-
       net/8021q/vlan_dev.c             |   10 +-
       net/core/dev.c                   |  195 +++++++++++++++++++++++++++-----------
       net/dsa/slave.c                  |   10 +-
       net/packet/af_packet.c           |    4 +-
       18 files changed, 227 insertions(+), 137 deletions(-)
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ccffad25
  18. 29 5月, 2009 1 次提交
  19. 18 5月, 2009 1 次提交
    • E
      bnx2: bnx2_tx_int() optimizations · d62fda08
      Eric Dumazet 提交于
      When using bnx2 in a high transmit load, bnx2_tx_int() cost is pretty high.
      
      There are two reasons.
      
      One is an expensive call to bnx2_get_hw_tx_cons(bnapi) for each freed skb
      
      One is cpu stalls when accessing skb_is_gso(skb) / skb_shinfo(skb)->nr_frags
      because of two cache line misses.
      (One to get skb->end/head to compute skb_shinfo(skb),
       one to get is_gso/nr_frags)
      
      This patch :
      
      1) avoids calling bnx2_get_hw_tx_cons(bnapi) too many times.
      
      2) makes bnx2_start_xmit() cache is_gso & nr_frags into sw_tx_bd descriptor.
         This uses a litle bit more ram (256 longs per device on x86), but helps a lot.
      
      3) uses a prefetch(&skb->end) to speedup dev_kfree_skb(), bringing
        cache line that will be needed in skb_release_data()
      
      result is 5 % bandwidth increase in benchmarks, involving UDP or TCP receive
       & transmits, when a cpu is dedicated to ksoftirqd for bnx2.
      
      bnx2_tx_int going from 3.33 % cpu to 0.5 % cpu in oprofile
      
      Note : skb_dma_unmap() still very expensive but this is for another patch,
      not related to bnx2 (2.9 % of cpu, while it does nothing on x86_32)
      Signed-off-by: NEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d62fda08
  20. 07 5月, 2009 1 次提交
    • M
      bnx2: Fix panic in bnx2_poll_work(). · 581daf7e
      Michael Chan 提交于
      Add barrier() to bnx2_get_hw_{tx|rx}_cons() to fix this issue:
      
      http://bugzilla.kernel.org/show_bug.cgi?id=12698
      
      This issue was reported by multiple i386 users.  Without barrier(),
      the compiled code looks like the following where %eax contains the
      address of the tx_cons or rx_cons in the DMA status block.  The
      status block contents can change between the cmpb and the movzwl
      instruction.  The driver would crash if the value was not 0xff during
      the cmpb instruction, but changed to 0xff during the movzwl
      instruction.
      
      6828:	80 38 ff             	cmpb   $0xff,(%eax)
      682b:	0f b7 10             	movzwl (%eax),%edx
      
      With the added barrier(), the compiled code now looks correct:
      
      683d:	0f b7 10             	movzwl (%eax),%edx
      6840:	0f b6 c2             	movzbl %dl,%eax
      6843:	3d ff 00 00 00       	cmp    $0xff,%eax
      
      Thanks to Pascal de Bruijn <pmjdebruijn@pcode.nl> for reporting the
      problem and Holger Noefer <hnoefer@pironet-ndh.com> for patiently
      testing test patches for us.
      
      Also updated version to 2.0.1.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      581daf7e
  21. 09 4月, 2009 1 次提交
  22. 07 4月, 2009 3 次提交
  23. 05 4月, 2009 1 次提交
    • M
      bnx2: Use request_firmware() · 57579f76
      Michael Chan 提交于
      Based on original patch by Ben Hutchings <ben@decadent.org.uk> and
      Bastian Blank <waldi@debian.org>, with the following main changes:
      
      Separated the mips firmware and rv2p firmware into different files
      to make it easier to update them separately.
      
      Added some code to fixup the rv2p code with run-time information
      such as PAGE_SIZE.
      
      Update version to 2.0.0.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      57579f76