1. 07 1月, 2010 1 次提交
  2. 04 12月, 2009 1 次提交
  3. 13 11月, 2009 2 次提交
  4. 06 9月, 2009 1 次提交
    • R
      IB/mlx4: Annotate CQ locking · 338a8fad
      Roland Dreier 提交于
      mlx4_ib_lock_cqs()/mlx4_ib_unlock_cqs() are helper functions that
      lock/unlock both CQs attached to a QP in the proper order to avoid
      AB-BA deadlocks.  Annotate this so sparse can understand what's going
      on (and warn us if we misuse these functions).
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      338a8fad
  5. 06 6月, 2009 1 次提交
  6. 08 5月, 2009 1 次提交
  7. 18 1月, 2009 1 次提交
  8. 17 1月, 2009 1 次提交
  9. 11 10月, 2008 1 次提交
  10. 09 10月, 2008 1 次提交
  11. 16 9月, 2008 1 次提交
  12. 08 8月, 2008 1 次提交
  13. 26 7月, 2008 1 次提交
  14. 23 7月, 2008 2 次提交
  15. 15 7月, 2008 5 次提交
  16. 21 5月, 2008 1 次提交
    • R
      IB/mlx4: Fix creation of kernel QP with max number of send s/g entries · cd155c1c
      Roland Dreier 提交于
      When creating a kernel QP where the consumer asked for a send queue
      with lots of scatter/gater entries, set_kernel_sq_size() incorrectly
      returned an error if the send queue stride is larger than the
      hardware's maximum send work request descriptor size.  This is not a
      problem; the only issue is to make sure that the actual descriptors
      used do not overflow the maximum descriptor size, so check this instead.
      
      Clamp the returned max_send_sge value to be no bigger than what
      query_device returns for the max_sge to avoid confusing hapless users,
      even if the hardware is capable of handling a few more s/g entries.
      
      This bug caused NFS/RDMA mounts to fail when the server adapter used
      the mlx4 driver.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      cd155c1c
  17. 17 5月, 2008 1 次提交
  18. 29 4月, 2008 1 次提交
    • A
      IB: expand ib_umem_get() prototype · cb9fbc5c
      Arthur Kepner 提交于
      Add a new parameter, dmasync, to the ib_umem_get() prototype.  Use dmasync = 1
      when mapping user-allocated CQs with ib_umem_get().
      Signed-off-by: NArthur Kepner <akepner@sgi.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Jes Sorensen <jes@sgi.com>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Cc: Roland Dreier <rdreier@cisco.com>
      Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
      Cc: David Miller <davem@davemloft.net>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Grant Grundler <grundler@parisc-linux.org>
      Cc: Michael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      cb9fbc5c
  19. 24 4月, 2008 1 次提交
  20. 17 4月, 2008 7 次提交
    • D
      IB/mlx4: Update QP state if query QP succeeds · 0df67030
      Dotan Barak 提交于
      If the QP was moved to another state (such as SQE) by the hardware,
      then after this change the user won't have to set the IBV_QP_CUR_STATE
      mask in order to execute modify QP in order to recover from this state.
      Signed-off-by: NDotan Barak <dotanb@dev.mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      0df67030
    • R
      IB/core: Add support for "send with invalidate" work requests · 0f39cf3d
      Roland Dreier 提交于
      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: NRoland Dreier <rolandd@cisco.com>
      0f39cf3d
    • R
      IB/mlx4: Micro-optimize mlx4_ib_post_send() · f438000f
      Roland Dreier 提交于
      Rather than have build_mlx_header() return a negative value on failure
      and the length of the segments it builds on success, add a pointer
      parameter to return the length and return 0 on success.  This matches
      the calling convention used for build_lso_seg() and generates slightly
      smaller code -- eg, on 64-bit x86:
      
      add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-22 (-22)
      function                                     old     new   delta
      mlx4_ib_post_send                           2023    2001     -22
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      f438000f
    • E
      IB/mlx4: Add IPoIB LSO support · b832be1e
      Eli Cohen 提交于
      Add TSO support to the mlx4_ib driver.
      Signed-off-by: NEli Cohen <eli@mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      b832be1e
    • E
      IB/core: Add creation flags to struct ib_qp_init_attr · b846f25a
      Eli Cohen 提交于
      Add a create_flags member to struct ib_qp_init_attr that will allow a
      kernel verbs consumer to create a pass special flags when creating a QP.
      Add a flag value for telling low-level drivers that a QP will be used
      for IPoIB UD LSO.  The create_flags member will also be useful for XRC
      and ehca low-latency QP support.
      
      Since no create_flags handling is implemented yet, add code to all
      low-level drivers to return -EINVAL if create_flags is non-zero.
      Signed-off-by: NEli Cohen <eli@mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      b846f25a
    • E
      IB/mlx4: Add IPoIB checksum offload support · 8ff095ec
      Eli Cohen 提交于
      ConnectX devices support checksum generation and verification of TCP
      and UDP packets for UD IPoIB messages.  This patch checks if the HCA
      supports this and sets the IB_DEVICE_UD_IP_CSUM capability flag if it
      does.  It implements support for handling the IB_SEND_IP_CSUM send
      flag and setting the csum_ok field in receive work completions.
      Signed-off-by: NEli Cohen <eli@mellanox.co.il>
      Signed-off-by: NAli Ayub <ali@mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      8ff095ec
    • R
      IB/mlx4: Endianness annotations · d2ae16d5
      Roland Dreier 提交于
      Trivial fixes to stamp_send_wqe().
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      d2ae16d5
  21. 09 2月, 2008 1 次提交
    • J
      IB/mlx4: Use multiple WQ blocks to post smaller send WQEs · ea54b10c
      Jack Morgenstein 提交于
      ConnectX HCA supports shrinking WQEs, so that a single work request
      can be made of multiple units of wqe_shift.  This way, WRs can differ
      in size, and do not have to be a power of 2 in size, saving memory and
      speeding up send WR posting.  Unfortunately, if we do this then the
      wqe_index field in CQEs can't be used to look up the WR ID anymore, so
      our implementation does this only if selective signaling is off.
      
      Further, on 32-bit platforms, we can't use vmap() to make the QP
      buffer virtually contigious. Thus we have to use constant-sized WRs to
      make sure a WR is always fully within a single page-sized chunk.
      
      Finally, we use WRs with the NOP opcode to avoid wrapping around the
      queue buffer in the middle of posting a WR, and we set the
      NoErrorCompletion bit to avoid getting completions with error for NOP
      WRs.  However, NEC is only supported starting with firmware 2.2.232,
      so we use constant-sized WRs for older firmware.  And, since MLX QPs
      only support SEND, we use constant-sized WRs in this case.
      
      When stamping during NOP posting, do stamping following setting of the
      NOP WQE valid bit.
      Signed-off-by: NMichael S. Tsirkin <mst@dev.mellanox.co.il>
      Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      ea54b10c
  22. 07 2月, 2008 1 次提交
  23. 31 10月, 2007 1 次提交
  24. 19 10月, 2007 1 次提交
  25. 10 10月, 2007 1 次提交
  26. 24 9月, 2007 1 次提交
    • J
      IB/mlx4: Fix data corruption triggered by wrong headroom marking order · 6e694ea3
      Jack Morgenstein 提交于
      This is an addendum to commit 0e6e7416 ("IB/mlx4: Handle new FW
      requirement for send request prefetching").  We also need to handle
      prefetch marking properly for S/G segments, or else the HCA may end up
      processing S/G segments that are not fully written and end up sending
      the wrong data.  This can actually cause data corruption in practice,
      especially on systems with relatively slow CPUs (where the HCA is more
      likely to prefetch while the CPU is in the middle of writing a work
      request into memory).
      
      We write S/G segments in reverse order into the WQE, in order to
      guarantee that the first dword of all cachelines containing S/G
      segments is written last (overwriting the headroom invalidation
      pattern).  The entire cacheline will thus contain valid data when the
      invalidation pattern is overwritten.
      Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      6e694ea3
  27. 29 7月, 2007 1 次提交
  28. 21 7月, 2007 1 次提交
    • R
      IB/mlx4: Fix error path in create_qp_common() · 23f1b384
      Roland Dreier 提交于
          
      The error handling code at err_wrid in create_qp_common() does not
      handle a userspace QP attached to an SRQ correctly, since it ends up
      in the else clause of the if statement.  This means it tries to
      kfree() the uninitialized qp->sq.wrid and qp->rq.wrid pointers.  Fix
      this so we only free the wrid arrays for kernel QPs.
      
      Pointed out by Michael S. Tsirkin <mst@dev.mellanox.co.il>.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      23f1b384