linux/drivers/infiniband/hw/mlx4
Jack Morgenstein ea54b10c77 IB/mlx4: Use multiple WQ blocks to post smaller send WQEs
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: Michael S. Tsirkin <mst@dev.mellanox.co.il>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2008-02-08 13:30:02 -08:00
..
ah.c IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
cq.c IB/mlx4: Use multiple WQ blocks to post smaller send WQEs 2008-02-08 13:30:02 -08:00
doorbell.c IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
Kconfig IB: Use menuconfig for InfiniBand menu 2007-07-09 20:12:26 -07:00
mad.c IB/mlx4: Incorrect semicolon after if statement 2007-08-15 20:24:06 -07:00
main.c IB/mlx4: Actually print out the driver version 2008-02-04 20:20:44 -08:00
Makefile IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
mlx4_ib.h IB/mlx4: Use multiple WQ blocks to post smaller send WQEs 2008-02-08 13:30:02 -08:00
mr.c IB/mlx4: Implement FMRs 2007-10-09 19:59:16 -07:00
qp.c IB/mlx4: Use multiple WQ blocks to post smaller send WQEs 2008-02-08 13:30:02 -08:00
srq.c IB/mlx4: Consolidate code to get an entry from a struct mlx4_buf 2008-02-06 21:07:54 -08:00
user.h IB/mlx4: Handle new FW requirement for send request prefetching 2007-06-18 08:13:48 -07:00