1. 08 Feb, 2008 3 commits
    • Eli Cohen's avatar
      IPoIB: Add send gather support · 7143740d
      Eli Cohen authored
      This patch acts as a preparation for using checksum offload for IB
      devices capable of inserting/verifying checksum in IP packets.  The
      patch does not actaully turn on NETIF_F_SG - we defer that to the
      patches adding checksum offload capabilities.
      
      We only add support for send gathers for datagram mode, since existing
      HW does not support checksum offload on connected QPs.
      Signed-off-by: default avatarMichael S. Tsirkin <mst@mellanox.co.il>
      Signed-off-by: default avatarEli Cohen <eli@mellanox.co.il>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      7143740d
    • Eli Cohen's avatar
      IPoIB: Add high DMA feature flag · eb14032f
      Eli Cohen authored
      All current InfiniBand devices can handle all DMA addresses, and it's
      hard to imagine anyone would be silly enough to build a new device
      that couldn't.  Therefore, enable the NETIF_F_HIGHDMA feature for IPoIB.
      
      This has no effect for no, but is needed when we enable gather/scatter
      support and checksum stateless offloads.
      Signed-off-by: default avatarEli Cohen <eli@mellnaox.co.il>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      eb14032f
    • Jack Morgenstein's avatar
      IB/mlx4: Use multiple WQ blocks to post smaller send WQEs · ea54b10c
      Jack Morgenstein authored
      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: default avatarMichael S. Tsirkin <mst@dev.mellanox.co.il>
      Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      ea54b10c
  2. 07 Feb, 2008 3 commits
  3. 05 Feb, 2008 34 commits