Hi ,<br><br><br>I have written the test case for doing RDMA_WRITE from one pc to another (Windows)<br><br>In the receiver side we have registered a big buffer and obtained the key and vaddr,<br>This key and vaddr is transferred to the remote side during connection.<br>
MAX_PACKET = 10;<br>pkt_size = 1024; // 1KBytes<br>Buffer_size = MAX_PACKET * pkt_size;<br><br>I am able to successfully do a RDMA_WRITE operation with the given key and given vaddr for the first packet<br><i>send_wr.remote_ops.rkey = rdma_key; // #RDMA#<br>
send_wr.remote_ops.vaddr = rdma_vaddr; // #RDMA#</i><br><br>But I am not able to transfer the second packet by changing the rdma_vaddr<br><i>send_wr.remote_ops.rkey = rdma_key; // #RDMA#<br>
send_wr.remote_ops.vaddr = rdma_vaddr + pkt_num*pkt_size; // #RDMA to the next memory location in the same registered buffer</i><br><br>I am not sure whether it is legal to give a different virtual address(vaddr + offset) associated rdma_key with vaddr for RDMA_WRITE operation?<br>
OR<br>Do i have to register all buffers individually and obtain different key associated with it?<br>OR<br>Is there a way out to do RDMA_WRITE at different offsets of the memory(registered) using associated (only) one key?<br>
<br>Any suggestion or direction towards proper thread will be useful.<br><br>Thanks<br>Rakesh Thakur<br><br><br><br><br><br><br>