qedr: ignore inline flag in read verbs
authorAmrani, Ram <Ram.Amrani@cavium.com>
Thu, 22 Dec 2016 12:40:37 +0000 (14:40 +0200)
committerDoug Ledford <dledford@redhat.com>
Thu, 22 Dec 2016 16:36:12 +0000 (11:36 -0500)
In the current implementation a read verb with IB_SEND_INLINE may be
illegally configured.
In this fix we ignore the inline bit in the case of a read verb.

Signed-off-by: Ram Amrani <Ram.Amrani@cavium.com>
Reviewed-by: Michal Kalderon <Michal.Kalderon@cavium.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/qedr/verbs.c

index 0237ff986829e0b3ffc1daa8a5400ce36365146b..9af2b4f3b62ff8ba230f8b13a5af0706ebc84d39 100644 (file)
@@ -2636,7 +2636,9 @@ static u32 qedr_prepare_sq_rdma_data(struct qedr_dev *dev,
        rwqe2->r_key = cpu_to_le32(rdma_wr(wr)->rkey);
        DMA_REGPAIR_LE(rwqe2->remote_va, rdma_wr(wr)->remote_addr);
 
-       if (wr->send_flags & IB_SEND_INLINE) {
+       if (wr->send_flags & IB_SEND_INLINE &&
+           (wr->opcode == IB_WR_RDMA_WRITE_WITH_IMM ||
+            wr->opcode == IB_WR_RDMA_WRITE)) {
                u8 flags = 0;
 
                SET_FIELD2(flags, RDMA_SQ_RDMA_WQE_1ST_INLINE_FLG, 1);