diff options
Diffstat (limited to 'drivers')
| -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; |
