Lines Matching refs:ibwc

2399 static void ocrdma_update_wc(struct ocrdma_qp *qp, struct ib_wc *ibwc,
2408 ibwc->wr_id = qp->wqe_wr_id_tbl[wqe_idx].wrid;
2413 ibwc->opcode = IB_WC_RDMA_WRITE;
2417 ibwc->opcode = IB_WC_RDMA_READ;
2418 ibwc->byte_len = rw->len;
2421 ibwc->opcode = IB_WC_SEND;
2424 ibwc->opcode = IB_WC_REG_MR;
2427 ibwc->opcode = IB_WC_LOCAL_INV;
2430 ibwc->status = IB_WC_GENERAL_ERR;
2469 static bool ocrdma_update_err_cqe(struct ib_wc *ibwc, struct ocrdma_cqe *cqe,
2474 ibwc->byte_len = 0;
2475 ibwc->qp = &qp->ibqp;
2476 ibwc->status = ocrdma_to_ibwc_err(status);
2491 static int ocrdma_update_err_rcqe(struct ib_wc *ibwc, struct ocrdma_cqe *cqe,
2494 ibwc->opcode = IB_WC_RECV;
2495 ibwc->wr_id = qp->rqe_wr_id_tbl[qp->rq.tail];
2498 return ocrdma_update_err_cqe(ibwc, cqe, qp, status);
2501 static int ocrdma_update_err_scqe(struct ib_wc *ibwc, struct ocrdma_cqe *cqe,
2504 ocrdma_update_wc(qp, ibwc, qp->sq.tail);
2507 return ocrdma_update_err_cqe(ibwc, cqe, qp, status);
2512 struct ocrdma_cqe *cqe, struct ib_wc *ibwc,
2532 expand = ocrdma_update_err_rcqe(ibwc, cqe, qp, status);
2550 expand = ocrdma_update_err_scqe(ibwc, cqe, qp, status);
2557 struct ib_wc *ibwc, bool *polled)
2566 ibwc->status = IB_WC_SUCCESS;
2567 ibwc->wc_flags = 0;
2568 ibwc->qp = &qp->ibqp;
2569 ocrdma_update_wc(qp, ibwc, tail);
2582 struct ib_wc *ibwc, bool *polled, bool *stop)
2591 expand = ocrdma_poll_success_scqe(qp, cqe, ibwc, polled);
2593 expand = ocrdma_poll_err_scqe(qp, cqe, ibwc, polled, stop);
2597 static int ocrdma_update_ud_rcqe(struct ocrdma_dev *dev, struct ib_wc *ibwc,
2605 ibwc->src_qp = le32_to_cpu(cqe->flags_status_srcqpn) &
2607 ibwc->pkey_index = 0;
2608 ibwc->wc_flags = IB_WC_GRH;
2609 ibwc->byte_len = (le32_to_cpu(cqe->ud.rxlen_pkey) >>
2617 ibwc->wc_flags |= IB_WC_WITH_NETWORK_HDR_TYPE;
2618 ibwc->network_hdr_type = hdr_type;
2624 static void ocrdma_update_free_srq_cqe(struct ib_wc *ibwc,
2637 ibwc->wr_id = srq->rqe_wr_id_tbl[wqe_idx];
2645 struct ib_wc *ibwc, bool *polled, bool *stop,
2661 expand = ocrdma_update_err_scqe(ibwc, cqe, qp, status);
2674 expand = ocrdma_update_err_rcqe(ibwc, cqe, qp, status);
2680 struct ocrdma_cqe *cqe, struct ib_wc *ibwc)
2685 ibwc->opcode = IB_WC_RECV;
2686 ibwc->qp = &qp->ibqp;
2687 ibwc->status = IB_WC_SUCCESS;
2690 ocrdma_update_ud_rcqe(dev, ibwc, cqe);
2692 ibwc->byte_len = le32_to_cpu(cqe->rq.rxlen);
2695 ibwc->ex.imm_data = htonl(le32_to_cpu(cqe->rq.lkey_immdt));
2696 ibwc->wc_flags |= IB_WC_WITH_IMM;
2698 ibwc->opcode = IB_WC_RECV_RDMA_WITH_IMM;
2699 ibwc->ex.imm_data = htonl(le32_to_cpu(cqe->rq.lkey_immdt));
2700 ibwc->wc_flags |= IB_WC_WITH_IMM;
2702 ibwc->ex.invalidate_rkey = le32_to_cpu(cqe->rq.lkey_immdt);
2703 ibwc->wc_flags |= IB_WC_WITH_INVALIDATE;
2706 ocrdma_update_free_srq_cqe(ibwc, cqe, qp);
2708 ibwc->wr_id = qp->rqe_wr_id_tbl[qp->rq.tail];
2714 struct ib_wc *ibwc, bool *polled, bool *stop)
2719 ibwc->wc_flags = 0;
2731 ocrdma_poll_success_rcqe(qp, cqe, ibwc);
2733 expand = ocrdma_poll_err_rcqe(qp, cqe, ibwc, polled, stop,
2752 struct ib_wc *ibwc)
2777 expand = ocrdma_poll_scqe(qp, cqe, ibwc, &polled,
2780 expand = ocrdma_poll_rcqe(qp, cqe, ibwc, &polled,
2797 ibwc = ibwc + 1;
2812 struct ocrdma_qp *qp, struct ib_wc *ibwc)
2820 ocrdma_update_wc(qp, ibwc, qp->sq.tail);
2823 ibwc->wr_id = qp->rqe_wr_id_tbl[qp->rq.tail];
2828 ibwc->byte_len = 0;
2829 ibwc->status = IB_WC_WR_FLUSH_ERR;
2830 ibwc = ibwc + 1;