diff options
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c index 2b68235973d7..7f54d2478738 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | |||
@@ -2055,6 +2055,13 @@ int ocrdma_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
2055 | } | 2055 | } |
2056 | 2056 | ||
2057 | while (wr) { | 2057 | while (wr) { |
2058 | if (qp->qp_type == IB_QPT_UD && | ||
2059 | (wr->opcode != IB_WR_SEND && | ||
2060 | wr->opcode != IB_WR_SEND_WITH_IMM)) { | ||
2061 | *bad_wr = wr; | ||
2062 | status = -EINVAL; | ||
2063 | break; | ||
2064 | } | ||
2058 | if (ocrdma_hwq_free_cnt(&qp->sq) == 0 || | 2065 | if (ocrdma_hwq_free_cnt(&qp->sq) == 0 || |
2059 | wr->num_sge > qp->sq.max_sges) { | 2066 | wr->num_sge > qp->sq.max_sges) { |
2060 | *bad_wr = wr; | 2067 | *bad_wr = wr; |