[ofa-general] [RFC] XRC -- make receiving XRC QP independent of any one user process

Tang, Changqing changquing.tang at hp.com
Fri Dec 21 18:51:38 PST 2007



> -----Original Message-----
> From: Jack Morgenstein [mailto:jackm at dev.mellanox.co.il]
> Sent: Friday, December 21, 2007 2:51 PM
> To: Tang, Changqing
> Cc: pasha at dev.mellanox.co.il; general at lists.openfabrics.org
> Subject: Re: [ofa-general] [RFC] XRC -- make receiving XRC QP
> independent of any one user process
>
> On Friday 21 December 2007 20:22, Tang, Changqing wrote:
> > What we do for heart-beat is using zero-byte rdma_write,
> the message
> > goes to the peer QP only, there is no need to post anything
> on remote side, no need for pinned memory.
> >
> I'll look into this solution on Sunday (I've not used 0-byte
> rdma_reads myself yet).
> (Question -- does the 0-byte rdma-read need to access a valid
> address (i.e., region) on the remote side, even if it is
> zero-byte? or are the remote address and rkey fields "don't
> care" in the post_send work request in this case?)

We need to ask Roland to confirm this.


>
> If you can, please send me a coding example at the userspace
> ibv (verbs) layer.
> It will save time.

I did not use zero byte rdma_read, I only use zero byte rdma_write.

Here is our code:

                sr.next = NULL;
                sr.wr_id = (uint64_t)(AULONG)rdmahdr;

                sr.sg_list = &ssg;
                sr.num_sge = 0;
                sr.opcode = IBV_WR_RDMA_WRITE;
                sr.send_flags = IBV_SEND_INLINE|IBV_SEND_SIGNALED;

                err = ibv_post_send(ibvproc->connection[i].qp_hndl, &sr, &bad_sr);
                if (err != 0) {
                        hpmp_printf("ibv_post_send() failed");
                        return (-1);
                }

Note, ssg is not initialized (Maybe we can set sr.sg_list = NULL ?)


--CQ


> (jackm at dev.mellanox.co.il).
>
> Thanks!
>
> - Jack
>



More information about the general mailing list