From d4b4b7e3ab424e268b953a416bedf0b478634a0a Mon Sep 17 00:00:00 2001 From: Devesh Sharma Date: Thu, 26 Jun 2014 16:54:07 +0530 Subject: [PATCH] RDMA/libocrdma: do not allow RDMA on UD QP As per IB compilance it is not allowed to post RDMA operations on a UD QP. This patch is adding a compilance check and if any violation is detected -EINVAL is returned. Signed-off-by: Devesh Sharma Signed-off-by: Mitesh Ahuja --- src/ocrdma_verbs.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ocrdma_verbs.c b/src/ocrdma_verbs.c index 0f138cf..a5b7252 100644 --- a/src/ocrdma_verbs.c +++ b/src/ocrdma_verbs.c @@ -1395,6 +1395,14 @@ int ocrdma_post_send(struct ibv_qp *ib_qp, struct ibv_send_wr *wr, } while (wr) { + + if (qp->qp_type == IBV_QPT_UD && (wr->opcode != IBV_WR_SEND && + wr->opcode != IBV_WR_SEND_WITH_IMM)) { + *bad_wr = wr; + status = -EINVAL; + break; + } + if (ocrdma_hwq_free_cnt(&qp->sq) == 0 || wr->num_sge > qp->sq.max_sges) { *bad_wr = wr; -- 2.46.0