<br><font size=2 face="sans-serif">Steve,</font>
<br>
<br><font size=2 face="sans-serif">many thanks for your quick response!</font>
<br>
<br><font size=2 face="sans-serif">I read about this P2P feature but did
not know how to activate it. In the meantime I decided</font>
<br><font size=2 face="sans-serif">to do a 0-length RDMA Write from the
initiator - that worked right away and has the same effect.</font>
<br>
<br><font size=2 face="sans-serif">Cheers,</font>
<br><font size=2 face="sans-serif"> Philip</font>
<br>
<br><tt><font size=2>Steve Wise <swise@opengridcomputing.com> wrote
on 01/28/2009 04:33:05 PM:<br>
<br>
> [image removed] </font></tt>
<br><tt><font size=2>> <br>
> Re: 0-length RDMA Read</font></tt>
<br><tt><font size=2>> <br>
> Steve Wise </font></tt>
<br><tt><font size=2>> <br>
> to:</font></tt>
<br><tt><font size=2>> <br>
> Philip Frey1</font></tt>
<br><tt><font size=2>> <br>
> 01/28/2009 04:34 PM</font></tt>
<br><tt><font size=2>> <br>
> Cc:</font></tt>
<br><tt><font size=2>> <br>
> general, Felix Marti</font></tt>
<br><tt><font size=2>> <br>
> This looks like a bug.  The lib assumes an SGE entry will be
provided.<br>
> <br>
> A workaround for now is to set num_sge to 1 and initialize the sge
entry to:<br>
> <br>
> sge.addr 0<br>
> sge.lkey 2<br>
> sge.length 0<br>
> rkey 2<br>
> remote_addr 0<br>
> <br>
> I'll fix this in libcxgb3 to allow num_sge == 0 to mean 0B read.  Also,
<br>
> right now you need to specify non-zero (and yet still valid possible)
<br>
> lkey and rkey values.  I'll fix this too so if length is 0 or
num_sge is <br>
> 0, then the library will create a valid 0B read request for you ignoring
<br>
> the other fields.  I opened bug 1496 for this: <br>
> </font></tt><a href="https://bugs.openfabrics.org/show_bug.cgi?id=1496"><tt><font size=2>https://bugs.openfabrics.org/show_bug.cgi?id=1496</font></tt></a><tt><font size=2><br>
> <br>
> Lemme know if you want a new libcxgb3 tarball with the fix.<br>
> <br>
> By the way, as of ofed-1.3.1 and 2.6.27 kernels, iw_cxgb3 supports
a <br>
> mode where it handles this client-must-send-first issue for you.  There
<br>
> is a module option called peer2peer.  Set it to 1 and all subsequent
<br>
> connections will handle this by doing a 0B read from the client.<br>
> <br>
> 'echo 1 > /sys/module/iw_cxgb3/parameters/peer2peer'  will
do the trick...<br>
> <br>
> Steve.<br>
> <br>
> <br>
> Philip Frey1 wrote:<br>
> ><br>
> > Hi,<br>
> ><br>
> > since for iWARP, that after the MPA connection establishment,
the<br>
> > MPA initiator must send the first FPDU, I wanted to do that using
a <br>
> > 0-length<br>
> > RDMA Read. When using the T3 Chelsio RNIC, I end up with a segmentation<br>
> > fault from the libcxgb3 (function t3b_post_send).<br>
> ><br>
> > I was trying to post a 0-lenght WR for RDMA Read like this:<br>
> ><br>
> > struct ibv_send_wr        wr;<br>
> ><br>
> > wr.wr_id = 1;<br>
> > wr.next = NULL;<br>
> > wr.sg_list = NULL;<br>
> > wr.num_sge = 0;<br>
> > wr.wr.rdma.remote_addr = 0;<br>
> > wr.wr.rdma.rkey = 0;<br>
> > wr.opcode = IBV_WR_RDMA_READ;<br>
> > wr.send_flags = IBV_SEND_SIGNALED;<br>
> ><br>
> > ibv_post_send(qp, &wr, &bad_wr);<br>
> ><br>
> > Question1: Are 0-length RDMA Reads supported at all by the T3?<br>
> > Question2: If they are, how do I have to write a correct send
WR?<br>
> ><br>
> > Many thanks for your advice,<br>
> >  Philip<br>
> ><br>
> ><br>
> ><br>
> > -- <br>
> >   Philip Frey            
     <br>
> >   IBM Zurich Research Laboratory<br>
> >   Saumerstrasse 4            
                     
|  Phone: +41 44 <br>
> > 724 8613<br>
> >   CH-8803 Rueschlikon/Switzerland  |  Email: phf@zurich.ibm.com
<br>
> <br>
</font></tt>