RDMA/qedr: Fix iWARP write and send with immediate
iWARP does not support RDMA WRITE or SEND with immediate data. Driver should check this before submitting to FW and return an immediate error Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com> Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
e3fd112cbf
commit
551e1c67b4
|
@ -3034,6 +3034,11 @@ static int __qedr_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
|
|
||||||
switch (wr->opcode) {
|
switch (wr->opcode) {
|
||||||
case IB_WR_SEND_WITH_IMM:
|
case IB_WR_SEND_WITH_IMM:
|
||||||
|
if (unlikely(rdma_protocol_iwarp(&dev->ibdev, 1))) {
|
||||||
|
rc = -EINVAL;
|
||||||
|
*bad_wr = wr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
wqe->req_type = RDMA_SQ_REQ_TYPE_SEND_WITH_IMM;
|
wqe->req_type = RDMA_SQ_REQ_TYPE_SEND_WITH_IMM;
|
||||||
swqe = (struct rdma_sq_send_wqe_1st *)wqe;
|
swqe = (struct rdma_sq_send_wqe_1st *)wqe;
|
||||||
swqe->wqe_size = 2;
|
swqe->wqe_size = 2;
|
||||||
|
@ -3075,6 +3080,11 @@ static int __qedr_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IB_WR_RDMA_WRITE_WITH_IMM:
|
case IB_WR_RDMA_WRITE_WITH_IMM:
|
||||||
|
if (unlikely(rdma_protocol_iwarp(&dev->ibdev, 1))) {
|
||||||
|
rc = -EINVAL;
|
||||||
|
*bad_wr = wr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
wqe->req_type = RDMA_SQ_REQ_TYPE_RDMA_WR_WITH_IMM;
|
wqe->req_type = RDMA_SQ_REQ_TYPE_RDMA_WR_WITH_IMM;
|
||||||
rwqe = (struct rdma_sq_rdma_wqe_1st *)wqe;
|
rwqe = (struct rdma_sq_rdma_wqe_1st *)wqe;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue