[openib-general] [RFC] [PATCH] SRQ API

Roland Dreier roland at topspin.com
Wed Jun 15 14:35:12 PDT 2005


    Fab> I'm a bit confused still about how WR get processed.  If a QP
    Fab> goes to the error state, does it pull all WRs off of the SRQ?
    Fab> I would expect not.

Work requests are only taken from an SRQ when a message is received on
a QP attached to the SRQ.  The semantics are mostly described in
chapter 10 of the IBA spec, eg in sections 10.2.9 and 10.8.3.

    Fab> How does one flush WRs from an SRQ?  It seems that to use an
    Fab> SRQ, the user has to keep a parallel list of all WRs posted
    Fab> to track them so they may be properly freed when the SRQ is
    Fab> destroyed.  This also means the completion path now must be
    Fab> serialized with the requesting path so that accesses to this
    Fab> tracking list are properly synchronized.

The only way to flush the WRs is to destroy the SRQ.  This does mean
that the consumer needs to keep track of resources to be freed.
However, one doesn't necesarily have to synchronize completions and
work requests; for example independent head and tail pointers into a
circular buffer could be used instead.

 - R.



More information about the general mailing list