Sent from my iPhone > On Apr 20, 2017, at 1:53 PM, Josh Beavers <josh.beavers@xxxxxxxxx> wrote: > > Hello, Hi Josh, > > I am still new to RoCEv2 and have created a test utility patterned > after the rc_pingpong.c libibverbs example, but using RDMA WRITE > instead of RDMA SEND. > > I discovered that when one machine sends a read, the other machine > acknowledges but does not indicate any completion on the CQ. This > means userspace never wakes up to do its "pong" code. > > > The cause of this is that IB_OPCODE_RC_SEND_LAST has RXE_COMP_MASK > associated (http://lxr.free-electrons.com/source/drivers/infiniband/sw/rxe/rxe_opcode.c#L149), > but IB_OPCODE_RC_RDMA_WRITE_LAST does not. Can someone please help me > understand why SEND LAST would trigger the CQ (creating a CQE, if I > understand correctly) even in the non-immediate case? > > Page 170 of the Infiniband spec (vol 1, release 1.3) suggests the CQE > is only created for such packets with immediate data (ImmDt header). This is basically the reason. RDMA READ and WRITE, and ATOMIC operations do not consume any receive buffers in the receiver side, and thus no completion is generated. > > Also for reference, page 531 of the Infiniband spec talks about > signaled completions and the conditions which cause a CQE to be > generated. > > > Thanks, > -J > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html