diff options
author | Steve Wise <swise@opengridcomputing.com> | 2013-08-06 21:04:35 +0530 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2013-08-13 11:55:45 -0700 |
commit | 1cf24dcef4e1dd0c34d8c39b09a9ce9a01accc72 (patch) | |
tree | 31fc9b6019990693eac87713c15a97b5571932ee /mm | |
parent | 97d7ec0c410e89ece852e768b8bfd42d4d5822fd (diff) |
RDMA/cxgb4: Fix QP flush logic
This patch makes following fixes in QP flush logic:
- correctly flushes unsignaled WRs followed by a signaled WR
- supports for flushing a CQ bound to multiple QPs
- resets cidx_flush if a active queue starts getting HW CQEs again
- marks WQ in error when we leave RTS. This was only being done for
user queues, but we need it for kernel queues too so that
post_send/post_recv will start returning the appropriate error
synchronously
- eats unsignaled read resp CQEs. HW always inserts CQEs so we must
silently discard them if the read work request was unsignaled.
- handles QP flushes with pending SW CQEs. The flush and out of order
completion logic has a bug where if out of order completions are
flushed but not yet polled by the consumer and the qp is then
flushed then we end up inserting duplicate completions.
- c4iw_flush_sq() should only flush wrs that have not already been
flushed. Since we already track where in the SQ we've flushed via
sq.cidx_flush, just start at that point and flush any remaining.
This bug only caused a problem in the presence of unsignaled work
requests.
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Vipul Pandya <vipul@chelsio.com>
[ Fixed sparse warning due to htonl/ntohl confusion. - Roland ]
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'mm')
0 files changed, 0 insertions, 0 deletions