1. 22 6月, 2007 1 次提交
  2. 30 5月, 2007 1 次提交
  3. 25 5月, 2007 2 次提交
  4. 22 5月, 2007 1 次提交
    • M
      IPoIB/cm: Fix SRQ WR leak · 518b1646
      Michael S. Tsirkin 提交于
      SRQ WR leakage has been observed with IPoIB/CM: e.g. flipping ports on
      and off will, with time, leak out all WRs and then all connections
      will start getting RNR NAKs.  Fix this in the way suggested by spec:
      move the QP being destroyed to the error state, wait for "Last WQE
      Reached" event and then post WR on a "drain QP" connected to the same
      CQ.  Once we observe a completion on the drain QP, it's safe to call
      ib_destroy_qp.
      Signed-off-by: NMichael S. Tsirkin <mst@dev.mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      518b1646
  5. 15 5月, 2007 1 次提交
  6. 07 5月, 2007 3 次提交
    • 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
    • M
      IB: Add CQ comp_vector support · f4fd0b22
      Michael S. Tsirkin 提交于
      Add a num_comp_vectors member to struct ib_device and extend
      ib_create_cq() to pass in a comp_vector parameter -- this parallels
      the userspace libibverbs API.  Update all hardware drivers to set
      num_comp_vectors to 1 and have all ULPs pass 0 for the comp_vector
      value.  Pass the value of num_comp_vectors to userspace rather than
      hard-coding a value of 1.
      
      We want multiple CQ event vector support (via MSI-X or similar for
      adapters that can generate multiple interrupts), but it's not clear
      how many vectors we want, or how we want to deal with policy issues
      such as how to decide which vector to use or how to set up interrupt
      affinity.  This patch is useful for experimenting, since no core
      changes will be necessary when updating a driver to support multiple
      vectors, and we know that we want to make at least these changes
      anyway.
      Signed-off-by: NMichael S. Tsirkin <mst@dev.mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      f4fd0b22
    • M
      IPoIB/cm: Don't crash if remote side uses one QP for both directions · d6ef7d68
      Michael S. Tsirkin 提交于
      The IPoIB CM spec allows the use of a single connection in both
      active->passive and passive->active directions.  The current Linux
      code uses one connection for both directions, but if another node only
      uses one connection for both directions, we oops when we try to look
      up the passive connection.  Fix by checking that qp_context is
      non-NULL before dereferencing it.
      Signed-off-by: NMichael S. Tsirkin <mst@dev.mellanox.co.il>
      d6ef7d68
  7. 01 5月, 2007 1 次提交
  8. 26 4月, 2007 1 次提交
  9. 25 4月, 2007 1 次提交
    • R
      IPoIB/cm: spin_lock_irqsave() -> spin_lock_irq() replacements · 37aebbde
      Roland Dreier 提交于
      There are quite a few places in ipoib_cm.c where we know IRQs are
      enabled because we do something that sleeps in the same function, so
      we can convert several occurrences of spin_lock_irqsave() to a plain
      spin_lock_irq().  This cleans up the source a little and makes the
      code smaller too:
      
      add/remove: 0/0 grow/shrink: 1/5 up/down: 3/-51 (-48)
      function                                     old     new   delta
      ipoib_cm_tx_reap                             403     406      +3
      ipoib_cm_stale_task                          146     145      -1
      ipoib_cm_dev_stop                            173     172      -1
      ipoib_cm_tx_handler                          964     956      -8
      ipoib_cm_rx_handler                          956     937     -19
      ipoib_cm_skb_reap                            212     190     -22
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      37aebbde
  10. 19 4月, 2007 1 次提交
  11. 10 4月, 2007 1 次提交
  12. 23 3月, 2007 2 次提交
  13. 21 2月, 2007 1 次提交
  14. 17 2月, 2007 2 次提交
  15. 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