[ofa-general] post_recv question
James Lentini
jlentini at netapp.com
Thu Feb 21 08:19:34 PST 2008
On Thu, 21 Feb 2008, Steve Wise wrote:
> Hey all:
>
> I have a question regarding exactly _when_ a posted recv buffer is available
> for the HW to use:
>
> Consider that the post_recv methods usually just program a hw-specific WR in
> the RQ, then ring a doorbell, then return. There is a delta period between
> when the app returns from the post_recv call and when the HW actually DMA's
> the WR and programs up the HW to enable that buffer. (I'm assumming a specific
> HW design here, but I _think_ most HW behaves this way?).
>
> If this is all true, then from the apps point of view, the buffer isn't really
> available when it returns from post_recv. This can lead to conditions where
> the app advertises that recv buffer to the peer via some out of band channel,
> and the peer posts a SEND which arrives _before_ the HW has actually setup the
> RECV buffer.
>
> Granted, this hole is small, but does it exist for nes, mthca, ehca, and ipath
> libs/drivers? Or do they _not_ have this issue?
>
> Does the IBTA spec discuss this at all? Most importantly, does the IBTA spec
> and/or the iWARP verbs spec _mandate_ that the buffer is actually available
> when the post_recv() method returns (I didn't find it in the iWARP spec)? If
> such a mandate exists, then it would force post_recv() methods to stall and/or
> somehow know when the HW has completed setting up the recv buffer. This would
> kill performance IMO and I think no such mandate exists, but I wanted to know
> what others think.
>
> Maybe this isn't an issue with mthca/ehca/ipath/nes?
>
>
> Thanks,
>
> Steve.
>From the RDMA application perspective, the application has to assume
that when post_recv() returns, the RECV WR is on the QP's recv queue
since there are no APIs for the application to query the
availability/eligibility of a RECV.
More information about the general
mailing list