<br><tt><font size=2>You are right. Thanks!</font></tt>
<br>
<br><tt><font size=2>I have yet another issue:<br>
</font></tt>
<br><tt><font size=2>Sometimes I get the following message in /var/log/messages
of the local host:</font></tt>
<br>
<br><tt><font size=2>post_qp_event - AE qpid 0x4e0 opcode 3 status 0x13
type 0 wrid.hi 0x0 wrid.lo 0x65000000</font></tt>
<br>
<br><tt><font size=2>I was looking for the status and opcode in the source
and found that</font></tt>
<br><tt><font size=2>opcode 3 means T3_SEND and status 0x13 means TPT_ERR_OUT_OF_RQE.</font></tt>
<br><tt><font size=2>At the remote host I get and opcode 7 (T3_TERMINATE)
and status 0x0 (SUCCESS).</font></tt>
<br>
<br><tt><font size=2>Clearly there is someone running out of Receive Queue
Elements. The error occurred when</font></tt>
<br><tt><font size=2>doing an ibv_post_send() at the local host. Is this
a coincidence or does the local host</font></tt>
<br><tt><font size=2>somehow know that there are not enough RQE's available
at the remote host? In other words,</font></tt>
<br><tt><font size=2>does the TPT_ERR_OUT_OF_RQE refer to the local or
to the remote receive queue?</font></tt>
<br>
<br><tt><font size=2>Many thanks,</font></tt>
<br><tt><font size=2> Philip</font></tt>
<br>
<br><tt><font size=2>general-bounces@lists.openfabrics.org wrote on 09.06.2008
15:56:46:<br>
<br>
> Philip Frey1 wrote:<br>
> ><br>
> > > > what is the correct way to get completions from the
CQ without <br>
> > missing<br>
> > > > any?<br>
> > > > I am currently using two separate CQs for the SQ and
for the RQ.<br>
> > > > In pseudocode I do about the following to wait for
a completion:<br>
> > > ><br>
> > > > ibv_get_cq_event(channel, &dst_cq, &ctx);  
     //blocking wait for<br>
> > > > CQ event<br>
> > > > <-- EVENT --><br>
> > > > ibv_req_notify_cq(dst_cq, 0);      
                 // request
event<br>
> > > > for next completion<br>
> > > > ibv_poll_cq(dest_cq, 1, wc);        
               // get the WC <br>
> > from<br>
> > > > the CQ<br>
> > > > ibv_ack_cq_events(dst_cq, 1);      
                 // ack the
event<br>
> > > ><br>
> ><br>
> > < snip ><br>
> ><br>
> > ><br>
> > > you need to poll the cq until it is empty instead of just
polling once.<br>
> > ><br>
> > ><br>
> > > get_cq_event()<br>
> > > req_notify_cq()<br>
> > > do {<br>
> > >     ne = poll_cq();<br>
> > > } while (ne != 0);<br>
> > > ack_cq_event()<br>
> ><br>
> > But what if I am just interested in the next work completion?
Wouldn't <br>
> > this mean<br>
> > that I have to build a queue in my application, that can hold
<br>
> > completions in which<br>
> > I am not yet interested? It sounds like a replication of the
<br>
> > completion queue to me.<br>
> > I was more looking for a way to do the 'single poll' on the completion
<br>
> > without copying<br>
> > anything into another queue.<br>
> <br>
> You can process each polled CQE individually inside the loop, yes?
 How <br>
> is that different from getting notified of each CQE insertion and
<br>
> processing it then?<br>
> <br>
> <br>
> _______________________________________________<br>
> general mailing list<br>
> general@lists.openfabrics.org<br>
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general<br>
> <br>
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general<br>
</font></tt>