[openib-general] design for communication established affiliated asynchronous event handling
James Lentini
jlentini at netapp.com
Fri Jun 16 08:15:46 PDT 2006
On Thu, 15 Jun 2006, Sean Hefty wrote:
> >The cma/verbs consumer can't just ignore the event since its qp state is
> >still RTR which means an attempt to tx replying the rx would fail.
>
> In most cases, I would expect that the IB CM will eventually receive the RTU,
> which will generate an event to the RDMA CM to transition the QP into RTS. This
> is why I think that the event can safely be ignored. It does however mean that
> a user cannot send on the QP until the user sees RDMA_CM_EVENT_ESTABLISHED.
>
> >I suggest the following design: the CMA would replace the event handler
> >provided with the qp_init_attr struct with a callback of its own and
> >keep the original handler/context on a private structure.
>
> This sounds like it would work. I don't think that there are any events where
> the additional delay would matter.
>
> As an alternative, I don't think that there's any reason why the QP
> can't be transition to RTS when the CM REP is sent.
I like this idea. It simplifies how ULPs handle this issue. Are there
any spec. compliance issues with this?
> A user just can't post to the send queue until either an
> RDMA_CM_EVENT_ESTABLISHED, IB_EVENT_COMM_EST, or a completion occurs
> on the QP. (This doesn't change the fact that the IB CM still needs
> to know that the connection has been established, or it risks
> putting the connection into an error state if an RTU is never
> received.)
If the passive side CM doesn't receive an RTU, the passive side CM
should retransmit the REP. At least that is how I read 12.9.8.6
"Timeouts and Retries" in the IBTA spec. I can't find where this
happens in the code. Did I miss it?
More information about the general
mailing list