diff options
author | Mike Marciniszyn <mike.marciniszyn@qlogic.com> | 2011-01-11 04:42:19 +0300 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2011-01-11 04:42:19 +0300 |
commit | a377acd15188cf11e47a67af5feea098cd8b25d2 (patch) | |
tree | 07b03137da672a9616b0a75e7296db621bf831e0 /drivers/infiniband | |
parent | f509f9c14d3f70834f964189293bed3e0e1fc839 (diff) | |
download | linux-a377acd15188cf11e47a67af5feea098cd8b25d2.tar.xz |
IB/qib: Generate completion callback on errors
According to IBTA vol. 1, C11-30.1.1, a notification callback is
invoked if the CQ is armed for the next solicited completion event or
an error completion. The error case wasn't being generated correctly.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/qib/qib_cq.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/qib/qib_cq.c b/drivers/infiniband/hw/qib/qib_cq.c index a86cbf880f98..5246aa486bbe 100644 --- a/drivers/infiniband/hw/qib/qib_cq.c +++ b/drivers/infiniband/hw/qib/qib_cq.c @@ -100,7 +100,8 @@ void qib_cq_enter(struct qib_cq *cq, struct ib_wc *entry, int solicited) wc->head = next; if (cq->notify == IB_CQ_NEXT_COMP || - (cq->notify == IB_CQ_SOLICITED && solicited)) { + (cq->notify == IB_CQ_SOLICITED && + (solicited || entry->status != IB_WC_SUCCESS))) { cq->notify = IB_CQ_NONE; cq->triggered++; /* |