1. 26 1月, 2008 1 次提交
  2. 20 10月, 2007 1 次提交
  3. 17 10月, 2007 1 次提交
  4. 11 10月, 2007 2 次提交
    • R
      [IPoIB]: Convert to netdevice internal stats · de903512
      Roland Dreier 提交于
      Use the stats member of struct netdevice in IPoIB, so we can save
      memory by deleting the stats member of struct ipoib_dev_priv, and save
      code by deleting ipoib_get_stats().
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      de903512
    • S
      [NET]: Make NAPI polling independent of struct net_device objects. · bea3348e
      Stephen Hemminger 提交于
      Several devices have multiple independant RX queues per net
      device, and some have a single interrupt doorbell for several
      queues.
      
      In either case, it's easier to support layouts like that if the
      structure representing the poll is independant from the net
      device itself.
      
      The signature of the ->poll() call back goes from:
      
      	int foo_poll(struct net_device *dev, int *budget)
      
      to
      
      	int foo_poll(struct napi_struct *napi, int budget)
      
      The caller is returned the number of RX packets processed (or
      the number of "NAPI credits" consumed if you want to get
      abstract).  The callee no longer messes around bumping
      dev->quota, *budget, etc. because that is all handled in the
      caller upon return.
      
      The napi_struct is to be embedded in the device driver private data
      structures.
      
      Furthermore, it is the driver's responsibility to disable all NAPI
      instances in it's ->stop() device close handler.  Since the
      napi_struct is privatized into the driver's private data structures,
      only the driver knows how to get at all of the napi_struct instances
      it may have per-device.
      
      With lots of help and suggestions from Rusty Russell, Roland Dreier,
      Michael Chan, Jeff Garzik, and Jamal Hadi Salim.
      
      Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
      Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.
      
      [ Ported to current tree and all drivers converted.  Integrated
        Stephen's follow-on kerneldoc additions, and restored poll_list
        handling to the old style to fix mutual exclusion issues.  -DaveM ]
      Signed-off-by: NStephen Hemminger <shemminger@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bea3348e
  5. 10 10月, 2007 1 次提交
  6. 11 7月, 2007 1 次提交
    • R
      IPoIB: Recycle loopback skbs instead of freeing and reallocating · 1b844afe
      Roland Dreier 提交于
      InfiniBand HCAs replicate multicast packets back to the QP that sent
      them if that QP is attached to the destination multicast group.  This
      means that IPoIB multicasts are often replicated back to the receive
      queue of the interface that generated them.  To avoid confusing the
      network stack, we drop these duplicates within the IPoIB driver.
      
      However, there's no reason to free the skb that received the duplicate
      and then immediately allocate a new skb to post to the receive queue.
      We can be more efficient and just repost the same skb.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      1b844afe
  7. 25 5月, 2007 1 次提交
  8. 22 5月, 2007 1 次提交
  9. 19 5月, 2007 1 次提交
  10. 07 5月, 2007 1 次提交
    • R
      IPoIB: Convert to NAPI · 8d1cc86a
      Roland Dreier 提交于
      Convert the IP-over-InfiniBand network device driver over to using
      NAPI to handle completions for the main CQ.  This covers all receives
      as well as datagram mode sends; send completions for connected mode
      connections are still handled from interrupt context.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      8d1cc86a
  11. 26 4月, 2007 1 次提交
  12. 19 4月, 2007 1 次提交
  13. 23 3月, 2007 1 次提交
  14. 11 2月, 2007 1 次提交
    • M
      IPoIB: Connected mode experimental support · 839fcaba
      Michael S. Tsirkin 提交于
      The following patch adds experimental support for IPoIB connected
      mode, as defined by the draft from the IETF ipoib working group.  The
      idea is to increase performance by increasing the MTU from the maximum
      of 2K (theoretically 4K) supported by IPoIB on top of UD.  With this
      code, I'm able to get 800MByte/sec or more with netperf without
      options on a Mellanox 4x back-to-back DDR system.
      
      Some notes on code:
      1. SRQ is used for scalability to large cluster sizes
      2. Only RC connections are used (UC does not support SRQ now)
      3. Retry count is set to 0 since spec draft warns against retries
      4. Each connection is used for data transfers in only 1 direction, so
         each connection is either active(TX) or passive (RX).  2 sides that
         want to communicate create 2 connections.
      5. Each active (TX) connection has a separate CQ for send completions -
         this keeps the code simple without CQ resize and other tricks
      6. To detect stale passive side connections (where the remote side is
         down), we keep an LRU list of passive connections (updated once per
         second per connection) and destroy a connection after it has been
         unused for several seconds. The LRU rule makes it possible to avoid
         scanning connections that have recently been active.
      Signed-off-by: NMichael S. Tsirkin <mst@mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      839fcaba
  15. 13 12月, 2006 1 次提交
  16. 22 11月, 2006 1 次提交
  17. 11 10月, 2006 1 次提交
  18. 23 9月, 2006 3 次提交
  19. 18 6月, 2006 1 次提交
    • R
      IPoIB: Avoid using stale last_send counter when reaping AHs · 31c02e21
      Roland Dreier 提交于
      The comparisons of priv->tx_tail to ah->last_send in ipoib_free_ah()
      and ipoib_post_receive() are slightly unsafe, because priv->tx_lock is
      not held and hence a stale value of ah->last_send might be used, which
      would lead to freeing an AH before the driver was really done with it.
      The simple way to fix this is to the optimization of early free from
      ipoib_free_ah() and unconditionally queue AHs for reaping, and then
      take priv->tx_lock in __ipoib_reap_ah().
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      31c02e21
  20. 06 6月, 2006 1 次提交
  21. 11 4月, 2006 1 次提交
  22. 25 3月, 2006 2 次提交
    • L
      IPoIB: P_Key change event handling · 7a343d4c
      Leonid Arsh 提交于
      This patch causes the network interface to respond to P_Key change
      events correctly.  As a result, you'll see a child interface in the
      "RUNNING" state (netif_carrier_on()) only when the corresponding P_Key
      is configured by the SM.  When SM removes a P_Key, the "RUNNING" state
      will be disabled for the corresponding network interface.  To
      implement this, I added IB_EVENT_PKEY_CHANGE event handling.  To
      prevent flushing the device before the device is open by the "delay
      open" mechanism, I added an additional device flag called
      IPOIB_FLAG_INITIALIZED.
      
      This also prevents the child network interface from trying to join to
      multicast groups until the PKEY is configured.  We used to get error
      messages like:
      
          ib0.f2f2: couldn't attach QP to multicast group ff12:401b:f2f2:0:0:0:ffff:ffff
      
      in this case.  To fix this, I just check IPOIB_FLAG_OPER_UP flag in
      ipoib_set_mcast_list().
      Signed-off-by: NLeonid Arsh <leonida@voltaire.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      7a343d4c
    • L
      IPoIB: Pass correct pointer when flushing child interfaces · 6f633c8d
      Leonid Arsh 提交于
      ipoib_ib_dev_flush() should get passed cpriv->dev, not &cpriv->dev.
      Signed-off-by: NLeonid Arsh <leonida@voltaire.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      6f633c8d
  23. 21 3月, 2006 2 次提交
  24. 14 1月, 2006 1 次提交
  25. 13 1月, 2006 1 次提交
  26. 30 11月, 2005 1 次提交
  27. 03 11月, 2005 1 次提交
  28. 31 10月, 2005 1 次提交
  29. 29 10月, 2005 1 次提交
    • R
      [IPoIB] Drop RX packets when out of memory · 1993d683
      Roland Dreier 提交于
      Change the way IPoIB handles RX packets when it can't allocate a new
      receive skbuff.  If the allocation of a new receive skb fails, we now
      drop the packet we just received and repost the original receive skb.
      This means that the receive ring always stays full and we don't have
      to monkey around with trying to schedule a refill task for later.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      1993d683
  30. 18 10月, 2005 1 次提交
  31. 21 9月, 2005 1 次提交
    • R
      [PATCH] IPoIB: Don't flush workqueue from within workqueue · 8d2cae06
      Roland Dreier 提交于
      ipoib_mcast_restart_task() is always called from within the
      single-threaded IPoIB workqueue, so flushing the workqueue from within
      the function can lead to a recursion overflow.  But since we're
      running in a single-threaded workqueue, we're already synchronized
      against other items in the workqueue, so just get rid of the flush in
      ipoib_mcast_restart_task().
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      8d2cae06
  32. 27 8月, 2005 2 次提交
  33. 28 7月, 2005 1 次提交
  34. 17 4月, 2005 1 次提交