|
|
@@ -844,11 +844,16 @@ static enum resp_states do_complete(struct rxe_qp *qp,
|
|
|
|
|
|
memset(&cqe, 0, sizeof(cqe));
|
|
|
|
|
|
- wc->wr_id = wqe->wr_id;
|
|
|
- wc->status = qp->resp.status;
|
|
|
- wc->qp = &qp->ibqp;
|
|
|
+ if (qp->rcq->is_user) {
|
|
|
+ uwc->status = qp->resp.status;
|
|
|
+ uwc->qp_num = qp->ibqp.qp_num;
|
|
|
+ uwc->wr_id = wqe->wr_id;
|
|
|
+ } else {
|
|
|
+ wc->status = qp->resp.status;
|
|
|
+ wc->qp = &qp->ibqp;
|
|
|
+ wc->wr_id = wqe->wr_id;
|
|
|
+ }
|
|
|
|
|
|
- /* fields after status are not required for errors */
|
|
|
if (wc->status == IB_WC_SUCCESS) {
|
|
|
wc->opcode = (pkt->mask & RXE_IMMDT_MASK &&
|
|
|
pkt->mask & RXE_WRITE_MASK) ?
|