<html>
<body>
<font size=3>At 11:04 AM 2/8/2006, Michael S. Tsirkin wrote:<br>
<blockquote type=cite class=cite cite="">Quoting r. Steve Wise
<swise@opengridcomputing.com>:<br>
> Subject: Re: [openib-general] Re: [PATCH] [RFC] - example user
moderdmaping/pongprogram using CMA<br>
> <br>
> On Wed, 2006-02-08 at 19:10 +0200, Michael S. Tsirkin wrote:<br>
> > Quoting r. Sean Hefty <sean.hefty@intel.com>:<br>
> > > Subject: RE: [openib-general] Re: [PATCH] [RFC] - example
user mode rdmaping/pongprogram using CMA<br>
> > > <br>
> > > >Steve, looks like you have at most a single receive
work request posted at the<br>
> > > >receive workqueue at all times.<br>
> > > >If true, this is *really* not a good idea,
performance-wise, even if you<br>
> > > >actually have at most 1 packet in flight.<br>
> > > <br>
> > > Can you provide some more details on this?<br>
> > <br>
> > See 9.7.7.2 end-to-end (message level) flow control<br>
> > <br>
> <br>
> I just read this section in the 1.2 version of the spec, and I
still<br>
> don't understand what the issue really is?  9.7.7.2 talks about
IBA<br>
> doing flow control based on the RECV WQEs posted. rping always
ensures<br>
> that there is a RECV posted before the peer can send.  This is
ensured<br>
> by the rping protocol itself (see the comment at the front of
rping.c<br>
> describing the ping loop).<br>
> <br>
> I'm only ever sending one outstanding message via SEND/RECV.  I
would<br>
> rather post exactly what is needed, than post some number of RECVs
"just<br>
> to be safe".  Sorry if I'm being dense.  What am I
missing here?<br>
> <br>
> Steve.<br>
> <br><br>
As far as I know, the credits are only updated by the ACK messages.<br>
If there is a single work request outstanding on the RQ,<br>
the ACK of the SEND message will have the credit field value 0<br>
(since exactly one receive WR was outstanding, and that is now
consumed).<br><br>
As a result the remote side withh "think" that there are
no<br>
receive WQEs and will slow down (what spec refers to as limited
WQE).</blockquote><br>
Correct.   The ACK / NAK protocol used by IB is used to return
credits.  In order to pipeline to improve performance, then you must
post multiple receive work requests in order to account for the expected
round trip time of the fabric and the associated CA processing.<br><br>
Mike</font></body>
</html>