[ofa-general] post_recv question
Steve Wise
swise at opengridcomputing.com
Thu Feb 21 12:24:30 PST 2008
Caitlin Bestler wrote:
> On Thu, Feb 21, 2008 at 11:40 AM, Sean Hefty <sean.hefty at intel.com> wrote:
>>> I'm asking this from a device driver developer's perspective. I'm not
>> >writing an application. I'm trying to understand and define exactly
>> >what must be guaranteed by the device/driver up returning from
>> >post_recv().
>>
>> At least from IB's view for post receive (from spec):
>>
>> Control returns to the Consumer immediately after the WQEs have been submitted
>> to the Receive Queue or the SRQ and the HCA has been notified that one or more
>> WQEs are ready to process.
>>
>> - Sean
>>
>
> Would you agree that if the WQEs have already successfully been
> "submitted to the Receive Queue or the SRQ and the HCA has been notified"
> that the HCA would be incorrect in subsequently raising an error
> stating that the
> buffers were not available?
>
> iWARP does not convey send credits in the RDMA protocol, but I believe both
> iWARP and IB are in agreement that declaring "no buffer available" and causing
> the reliable connection to be torn down is a serious step. The HCA/RNIC is not
> free to be sloppy in making this determination.
>
> There are other places in both specifications where the RDMA device is given
> latitude to asynchronously implement a request. For example, it is clear that
> a window is *not* necessarily bound when the bind call completes. But in
> all those cases there is an explicit completion to allow the consumer to
> unambiguously know when it is safe to proceed.
>
> the application is never expected to rely on knowledge of specific HCAs
> or RNICs, or to "guess" what might be good enough. There are only
> two feedbacks from posting a Receive WQE: the call completion
> and the CQE being returned by cq_poll().
>
> There are only two states for the Recv WQE between those two events:
> available for allocation and allocated. And the application does not
> need to know about the difference between those two states on a
> per-WQE basis.
>
> If there were a third state, then there would have to be a mechanism
> to make that information available. There is none, so such a third state
> must not exist (at least in any observable form).
I agree. Its just that the wording above is pretty loose in my mind.
But I'm only seeking clarification.
Seems the consensus is that when you return from post_recv() the buffer
can be assumed to be available for incoming SEND placement...
More information about the general
mailing list