An error occurred fetching the project authors.
  1. 21 Sep, 2008 1 commit
  2. 15 Jul, 2008 1 commit
    • Steve Wise's avatar
      RDMA/core: Add memory management extensions support · 00f7ec36
      Steve Wise authored
      This patch adds support for the IB "base memory management extension"
      (BMME) and the equivalent iWARP operations (which the iWARP verbs
      mandates all devices must implement).  The new operations are:
      
       - Allocate an ib_mr for use in fast register work requests.
      
       - Allocate/free a physical buffer lists for use in fast register work
         requests.  This allows device drivers to allocate this memory as
         needed for use in posting send requests (eg via dma_alloc_coherent).
      
       - New send queue work requests:
         * send with remote invalidate
         * fast register memory region
         * local invalidate memory region
         * RDMA read with invalidate local memory region (iWARP only)
      
      Consumer interface details:
      
       - A new device capability flag IB_DEVICE_MEM_MGT_EXTENSIONS is added
         to indicate device support for these features.
      
       - New send work request opcodes IB_WR_FAST_REG_MR, IB_WR_LOCAL_INV,
         IB_WR_RDMA_READ_WITH_INV are added.
      
       - A new consumer API function, ib_alloc_mr() is added to allocate
         fast register memory regions.
      
       - New consumer API functions, ib_alloc_fast_reg_page_list() and
         ib_free_fast_reg_page_list() are added to allocate and free
         device-specific memory for fast registration page lists.
      
       - A new consumer API function, ib_update_fast_reg_key(), is added to
         allow the key portion of the R_Key and L_Key of a fast registration
         MR to be updated.  Consumers call this if desired before posting
         a IB_WR_FAST_REG_MR work request.
      
      Consumers can use this as follows:
      
       - MR is allocated with ib_alloc_mr().
      
       - Page list memory is allocated with ib_alloc_fast_reg_page_list().
      
       - MR R_Key/L_Key "key" field is updated with ib_update_fast_reg_key().
      
       - MR made VALID and bound to a specific page list via
         ib_post_send(IB_WR_FAST_REG_MR)
      
       - MR made INVALID via ib_post_send(IB_WR_LOCAL_INV),
         ib_post_send(IB_WR_RDMA_READ_WITH_INV) or an incoming send with
         invalidate operation.
      
       - MR is deallocated with ib_dereg_mr()
      
       - page lists dealloced via ib_free_fast_reg_page_list().
      
      Applications can allocate a fast register MR once, and then can
      repeatedly bind the MR to different physical block lists (PBLs) via
      posting work requests to a send queue (SQ).  For each outstanding
      MR-to-PBL binding in the SQ pipe, a fast_reg_page_list needs to be
      allocated (the fast_reg_page_list is owned by the low-level driver
      from the consumer posting a work request until the request completes).
      Thus pipelining can be achieved while still allowing device-specific
      page_list processing.
      
      The 32-bit fast register memory key/STag is composed of a 24-bit index
      and an 8-bit key.  The application can change the key each time it
      fast registers thus allowing more control over the peer's use of the
      key/STag (ie it can effectively be changed each time the rkey is
      rebound to a page list).
      Signed-off-by: default avatarSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      00f7ec36
  3. 13 May, 2008 2 commits
  4. 07 May, 2008 1 commit
    • Dave Olson's avatar
      IB/ipath: Need to always request and handle PIO avail interrupts · e2ab41ca
      Dave Olson authored
      Now that we always use PIO for vl15 on 7220, we could get stuck forever
      if we happened to run out of PIO buffers from the verbs code, because
      the setup code wouldn't run; the interrupt was also ignored if SDMA was
      supported.  We also have to reduce the pio update threshold if we have
      fewer kernel buffers than the existing threshold.
      
      Clean up the initialization a bit to get ordering safer and more
      sensible, and use the existing ipath_chg_kernavail call to do init,
      rather than doing it separately.
      
      Drop unnecessary clearing of pio buffer on pio parity error.
      
      Drop incorrect updating of pioavailshadow when exitting freeze mode
      (software state may not match chip state if buffer has been allocated
      and not yet written).
      
      If we couldn't get a kernel buffer for a while, make sure we are
      in sync with hardware, mainly to handle the exitting freeze case.
      Signed-off-by: default avatarDave Olson <dave.olson@qlogic.com>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      e2ab41ca
  5. 17 Apr, 2008 2 commits
    • Roland Dreier's avatar
      IB/core: Add support for "send with invalidate" work requests · 0f39cf3d
      Roland Dreier authored
      Add a new IB_WR_SEND_WITH_INV send opcode that can be used to mark a
      "send with invalidate" work request as defined in the iWARP verbs and
      the InfiniBand base memory management extensions.  Also put "imm_data"
      and a new "invalidate_rkey" member in a new "ex" union in struct
      ib_send_wr. The invalidate_rkey member can be used to pass in an
      R_Key/STag to be invalidated.  Add this new union to struct
      ib_uverbs_send_wr.  Add code to copy the invalidate_rkey field in
      ib_uverbs_post_send().
      
      Fix up low-level drivers to deal with the change to struct ib_send_wr,
      and just remove the imm_data initialization from net/sunrpc/xprtrdma/,
      since that code never does any send with immediate operations.
      
      Also, move the existing IB_DEVICE_SEND_W_INV flag to a new bit, since
      the iWARP drivers currently in the tree set the bit.  The amso1100
      driver at least will silently fail to honor the IB_SEND_INVALIDATE bit
      if passed in as part of userspace send requests (since it does not
      implement kernel bypass work request queueing).  Remove the flag from
      all existing drivers that set it until we know which ones are OK.
      
      The values chosen for the new flag is not consecutive to avoid clashing
      with flags defined in the XRC patches, which are not merged yet but
      which are already in use and are likely to be merged soon.
      
      This resurrects a patch sent long ago by Mikkel Hagen <mhagen@iol.unh.edu>.
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      0f39cf3d
    • Dave Olson's avatar
      IB/ipath: add calls to new 7220 code and enable in build · 124b4dcb
      Dave Olson authored
      This patch adds the initialization calls into the new 7220 HCA files,
      changes the Makefile to compile and link the new files, and code to
      handle send DMA.
      Signed-off-by: default avatarDave Olson <dave.olson@qlogic.com>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      124b4dcb
  6. 25 Jan, 2008 2 commits
  7. 30 Oct, 2007 1 commit
  8. 10 Oct, 2007 1 commit
  9. 18 Jul, 2007 1 commit
    • Roland Dreier's avatar
      IB/ipath: Make a few functions static · da9aec7b
      Roland Dreier authored
      Make some functions that are only used in a single .c file static.  In
      addition to being a cleanup, this shrinks the generated code.  On x86_64:
      
      add/remove: 1/3 grow/shrink: 2/1 up/down: 4777/-4956 (-179)
      function                                     old     new   delta
      handle_errors                                  -    3994   +3994
      __verbs_timer                                 42     710    +668
      ipath_do_ruc_send                           2131    2246    +115
      ipath_no_bufs_available                      136       -    -136
      ipath_disarm_senderrbufs                     639       -    -639
      ipath_ib_timer                               658       -    -658
      ipath_intr                                  5878    2355   -3523
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      da9aec7b
  10. 10 Jul, 2007 6 commits
  11. 19 Apr, 2007 3 commits
  12. 04 Feb, 2007 1 commit
    • Michael S. Tsirkin's avatar
      IB: Return qp pointer as part of ib_wc · 062dbb69
      Michael S. Tsirkin authored
      struct ib_wc currently only includes the local QP number: this matches
      the IB spec, but seems mostly useless. The following patch replaces
      this with the pointer to qp itself, and updates all low level drivers
      and all users.
      
      This has the following advantages:
      - Ability to get a per-qp context through wc->qp->qp_context
      - Existing drivers already have the qp pointer ready in poll cq, so
        this change actually saves a tiny bit (extra memory read) on data path
        (for ehca it would actually be expensive to find the QP pointer when
        polling a CQ, but ehca does not support SRQ so we can leave wc->qp as
        NULL for ehca)
      - Users that need the QP number can still get it through wc->qp->qp_num
      
      Use case:
      
      In IPoIB connected mode code, I have a common CQ shared by multiple
      QPs.  To track connection usage, I need a way to get at some per-QP
      context upon the completion, and I would like to avoid allocating
      context object per work request just to stick a QP pointer into it.
      With this code, I can just use wc->qp->qp_context.
      Signed-off-by: default avatarMichael S. Tsirkin <mst@mellanox.co.il>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      062dbb69
  13. 28 Sep, 2006 2 commits
  14. 22 Sep, 2006 2 commits
  15. 01 Jul, 2006 4 commits
  16. 23 May, 2006 1 commit
  17. 01 May, 2006 1 commit
  18. 31 Mar, 2006 1 commit