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
..
2008-02-05 09:44:13 -08:00
2008-02-01 16:42:02 -05:00
2008-02-08 13:30:02 -08:00
2008-01-31 19:28:09 -08:00
2008-01-31 19:27:40 -08:00
2008-01-31 19:27:36 -08:00
2008-01-31 19:27:39 -08:00
2008-02-01 16:42:06 -05:00
2008-02-05 09:44:13 -08:00
2008-01-28 15:09:52 -08:00
2008-02-01 16:42:15 -05:00
2008-02-05 03:20:13 -08:00
2008-02-01 14:35:07 -08:00
2008-01-30 13:30:18 +01:00
2008-02-05 14:33:32 +10:00
2008-02-05 14:33:32 +10:00
2008-01-28 15:00:14 -08:00
2008-01-28 15:00:12 -08:00
2008-02-04 13:16:39 +00:00
2008-02-01 14:23:55 -05:00
2008-02-01 11:34:49 +01:00
2008-01-29 21:55:15 +01:00
2008-01-28 23:58:26 -05:00
2008-02-05 09:44:20 -08:00
2008-02-01 23:09:24 +01:00
2008-02-03 17:45:46 +02:00
2008-01-30 13:30:02 +01:00
2008-02-05 09:44:07 -08:00
2008-01-28 15:00:40 -08:00
2008-01-30 13:32:42 +01:00
2008-01-30 13:31:10 +01:00
2008-02-03 17:45:46 +02:00
2008-02-03 15:42:53 +02:00
2008-02-03 04:28:53 -08:00
2008-02-05 09:44:10 -08:00
2008-02-05 09:44:11 -08:00
2008-02-03 17:45:46 +02:00
2008-01-30 13:31:56 +01:00
2008-02-03 17:45:46 +02:00
2008-01-28 23:58:27 -05:00
2008-01-29 00:19:52 -05:00
2008-01-29 00:19:52 -05:00
2008-01-29 00:19:52 -05:00
2008-02-04 07:58:52 -08:00
2008-02-01 17:45:14 +01:00
2008-02-05 09:44:17 -08:00
2008-02-03 15:42:53 +02:00
2008-02-01 23:09:34 +01:00
2008-02-05 09:44:19 -08:00
2008-01-30 13:30:27 +01:00
2008-02-05 09:44:07 -08:00
2008-02-05 09:44:23 -08:00
2008-02-02 19:56:47 +01:00
2008-02-01 16:13:16 -05:00
2008-01-28 15:08:27 -08:00
2008-01-28 15:07:58 -08:00
2008-01-28 15:07:57 -08:00
2008-01-28 15:08:32 -08:00
2008-01-28 15:08:44 -08:00
2008-01-31 19:28:31 -08:00
2008-01-30 13:34:11 +01:00
2008-02-05 09:44:20 -08:00
2008-02-03 08:58:07 +01:00
2008-01-31 19:26:46 -08:00
2008-02-05 09:44:11 -08:00
2008-01-30 13:30:32 +01:00
2008-01-31 19:28:20 -08:00
2008-01-28 23:58:27 -05:00
2008-02-05 03:18:51 -08:00
2008-01-30 13:33:06 +01:00
2008-01-30 13:32:53 +01:00
2008-01-30 18:01:22 +02:00
2008-01-30 18:01:22 +02:00
2008-01-30 18:01:18 +02:00
2008-01-30 18:01:22 +02:00
2008-02-05 09:44:23 -08:00
2008-02-04 23:49:57 +11:00
2008-01-30 13:33:13 +01:00
2008-02-03 17:45:46 +02:00
2008-02-05 09:44:23 -08:00
2008-02-05 09:44:16 -08:00
2008-02-05 09:44:18 -08:00
2008-02-05 09:44:08 -08:00
2008-01-29 22:46:14 +11:00
2008-01-31 19:28:24 -08:00
2008-01-28 15:02:22 -08:00
2008-01-31 19:28:23 -08:00
2008-01-30 02:06:07 -05:00
2008-02-01 11:45:47 +11:00
2008-01-30 02:05:24 -05:00
2008-01-30 02:06:08 -05:00
2008-02-01 16:42:05 -05:00
2008-01-28 14:59:52 -08:00
2008-02-01 18:30:53 -05:00
2008-02-05 09:44:24 -08:00
2008-02-05 09:44:19 -08:00
2008-02-05 09:44:09 -08:00
2008-02-02 11:32:01 -08:00
2008-02-01 15:04:29 -08:00
2008-02-05 09:44:12 -08:00
2008-01-28 15:00:35 -08:00
2008-02-02 02:44:34 +03:00
2008-01-30 23:27:58 +01:00
2008-01-31 19:27:03 -08:00
2008-02-03 04:28:41 -08:00
2008-02-05 03:20:13 -08:00
2008-01-31 19:28:35 -08:00
2008-02-05 09:44:22 -08:00
2008-02-03 17:45:46 +02:00
2008-02-03 17:45:46 +02:00
2008-02-02 02:43:00 +03:00
2008-02-05 09:44:20 -08:00
2008-02-05 09:44:16 -08:00
2008-01-30 13:30:53 +01:00
2008-02-03 16:12:47 +02:00
2008-02-05 09:44:22 -08:00
2008-01-30 13:31:47 +01:00
2008-02-03 15:42:53 +02:00
2008-01-31 19:26:46 -08:00
2008-02-05 03:17:22 -08:00
2008-02-05 09:44:20 -08:00
2008-02-05 09:44:20 -08:00
2008-01-30 08:17:26 +11:00
2008-02-05 09:44:09 -08:00
2008-02-03 15:12:15 +02:00
2008-02-04 23:49:56 +11:00
2008-02-04 10:56:03 -08:00
2008-02-03 17:45:46 +02:00
2008-01-30 13:33:17 +01:00
2008-01-31 19:28:30 -08:00
2008-02-03 17:45:46 +02:00
2008-01-30 13:31:20 +01:00
2008-01-30 13:31:20 +01:00
2008-01-30 13:31:20 +01:00
2008-02-01 18:30:53 -05:00
2008-02-05 09:44:17 -08:00
2008-02-05 09:44:15 -08:00
2008-02-05 09:44:16 -08:00
2008-02-05 09:44:07 -08:00
2008-02-05 09:44:20 -08:00
2008-02-01 17:45:14 +01:00
2008-02-01 17:45:14 +01:00
2008-02-01 17:45:13 +01:00
2008-01-30 13:30:00 +01:00
2008-01-31 19:27:30 -08:00
2008-02-01 14:34:49 -08:00
2008-02-01 14:35:07 -08:00
2008-02-01 14:34:58 -08:00
2008-02-04 23:50:13 +11:00
2008-02-04 23:50:01 +11:00
2008-02-04 23:50:03 +11:00
2008-02-04 23:50:02 +11:00
2008-02-04 23:50:12 +11:00
2008-02-04 23:50:00 +11:00
2008-02-04 23:50:03 +11:00
2008-02-05 09:44:14 -08:00
2008-02-05 09:44:07 -08:00
2008-02-03 15:42:53 +02:00
2008-02-05 09:44:19 -08:00
2008-02-05 09:44:20 -08:00
2008-01-31 19:27:03 -08:00