[openib-general] What could prevent a gen2 x86 client qp from doing RDMA_READ on a gen1 PowerPC client?

Bub Thomas thomas.bub at thomson.net
Thu Nov 16 08:02:48 PST 2006


Here is my next and hopefully last problem.
As described earlier I'm connecting a gen2 x86 clients to a gen1 PowerPC
server
After having sorted out the trouble with the CM parameters I'm now
having trouble with RDMA read from client on the server.
What works is:
-	gen2 x86 client doing a VAPI_SEND to gen1 PowerPC server. (this
wasn't working last time)
-	RDMA write from gen1 PowerPC server to gen2 x86 client

What is not working is:
-	RDMA read from gen2 x86 client on gen1 PowerPC server. I'm
getting a vendor_error 0x81 VAPI_RETRY_EXC_ERR in the send completion
queue.

The RDMA start address, length and key have been exchanged and look
identical on both sides.

Doing connections and transfers between x86 only gen1 server x86 gen2
client works in all directions. (Send and receive as well as RDMA read
and write)
So a gen2 client can do a RDMA read from a gen1 server! 
Having a gen1 PowerPC server and a gen1 x86 client works as well.
So a gen1 PowerPC server can be RDMA read from an x86 client!

I'm again a little puzzled what can the gen2 server do wrong in a RDMA
read on a PowerPC server  when it can do the same operation a x86
server?

Any ideas, thoughts, help.... are more then welcome
Thanks
Thomas

Here is my code I'm using to do RDMA
I'm always having only a single segment to be transmitted!
rdma(ibv_sge *sgList,
     int      sgListlen,
     int      size,
     bool     write)
{
    struct ibv_send_wr  wr;
    struct ibv_send_wr *bad_wr;
    int res;
    int                 localErrno = 0;
    uint64_t            remainingBytes =
ntohl(_remoteBufferInfo->totalSize);

    sgList[0].length = remainingBytes;
    memset(&wr, 0, sizeof(wr));
    wr.next                = NULL;
    wr.wr_id               = 1;
    wr.opcode              = write ? IBV_WR_RDMA_WRITE :
IBV_WR_RDMA_READ;
    wr.send_flags          = IBV_SEND_SIGNALED;
    wr.sg_list             = sgList;
    wr.num_sge             = 1; 
    wr.wr.rdma.remote_addr = ntohll(_remoteBufferInfo->sgList[0].addr);

    wr.wr.rdma.rkey        = ntohl (_remoteBufferInfo->sgList[0].lkey);

    cleanCq(_sCq);
    res = ibv_post_send(_dataQp, &wr, &bad_wr);
    if (res != 0)
    {
         DEBUG1("Error in RDMA operation scheduling: %s\n",
strerror(res));
	 sv2BreakConnection();
	 localErrno = ENOTCONN;
	 return 0;
    }
    else
    {
         if (waitOnCq(_sCq))
	 {
	     localErrno = -1;
	 }
    }
}

............................................................
Thomas Bub
Grass Valley Germany GmbH
Brunnenweg 9
64331 Weiterstadt, Germany
Tel: +49 6150 104 147
Fax: +49 6150 104 656
Email: Thomas.Bub at thomson.net
www.GrassValley.com  <http://www.grassvalley.com> 
............................................................


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20061116/cd674e02/attachment.html>


More information about the general mailing list