diff options
-rw-r--r-- | drivers/infiniband/sw/rxe/rxe_req.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c index 832846b73ea0..22bd9630dcd9 100644 --- a/drivers/infiniband/sw/rxe/rxe_req.c +++ b/drivers/infiniband/sw/rxe/rxe_req.c | |||
@@ -696,7 +696,8 @@ next_wqe: | |||
696 | qp->req.wqe_index); | 696 | qp->req.wqe_index); |
697 | wqe->state = wqe_state_done; | 697 | wqe->state = wqe_state_done; |
698 | wqe->status = IB_WC_SUCCESS; | 698 | wqe->status = IB_WC_SUCCESS; |
699 | goto complete; | 699 | __rxe_do_task(&qp->comp.task); |
700 | return 0; | ||
700 | } | 701 | } |
701 | payload = mtu; | 702 | payload = mtu; |
702 | } | 703 | } |
@@ -745,13 +746,17 @@ err: | |||
745 | wqe->status = IB_WC_LOC_PROT_ERR; | 746 | wqe->status = IB_WC_LOC_PROT_ERR; |
746 | wqe->state = wqe_state_error; | 747 | wqe->state = wqe_state_error; |
747 | 748 | ||
748 | complete: | 749 | /* |
749 | if (qp_type(qp) != IB_QPT_RC) { | 750 | * IBA Spec. Section 10.7.3.1 SIGNALED COMPLETIONS |
750 | while (rxe_completer(qp) == 0) | 751 | * ---------8<---------8<------------- |
751 | ; | 752 | * ...Note that if a completion error occurs, a Work Completion |
752 | } | 753 | * will always be generated, even if the signaling |
753 | 754 | * indicator requests an Unsignaled Completion. | |
754 | return 0; | 755 | * ---------8<---------8<------------- |
756 | */ | ||
757 | wqe->wr.send_flags |= IB_SEND_SIGNALED; | ||
758 | __rxe_do_task(&qp->comp.task); | ||
759 | return -EAGAIN; | ||
755 | 760 | ||
756 | exit: | 761 | exit: |
757 | return -EAGAIN; | 762 | return -EAGAIN; |