[ofa-general] disconnect implementation for rdma cm unconnected datagram service
Sean Hefty
mshefty at ichips.intel.com
Mon Jun 18 09:42:55 PDT 2007
Or Gerlitz wrote:
> Looking on cm_sidr_rep_handler we see that the cm id state
> is reseted to IB_CM_IDLE, and on the other hand ib_send_cm_dreq
> returns -EINVAL if the id state is not IB_CM_ESTABLISHED. I gueess
> this means that rdma_disconnect on RDMA_PS_UDP would never work?
Correct - there isn't a disconnect for UDP.
> Thinking on remote qp/lid change, the equivalent I see for UDP based apps,
> is that a remote qp/lid change would have been caught by the local stack
> neighbouring system since it sends few unicast arps probes and the re-issues
> a broadcast arp from which the new HW address (qpn / gid --> lid) would be learned.
>
> What you think would be the correct way to solve that for rdmacm based apps?
I don't know that we can do anything about a QP change.
> is there a way for the RDMA/IB stack level to provide the solution? we were
Once the inform_info patches are in, we might be able to hook into that
to at least provide notification that the remote address has changed. I
don't think there's a LID change notice, though, only GID IN/OUT. LID
changes would be difficult to hide from the app anyway, since the app
must re-create their address vector.
If we ever go as far as adding an rdma_send() call, we might be able to
hide it better.
> I guess that remote lid change can be emulated as disconnect if the rdmacm
> would listen on IN/OUT traps, but the question if what can we do about the
> remote process qp, eg in the case the process dies and then comes back again etc.
I think the current solution is that the app must detect that they are
no longer getting responses from the remote side and try to
re-'connect'. I need to give this more thought to determine if there's
anything that we can do here. (This seems hard without the rdma_cm
controlling the QP and CQs.) Do you have any ideas?
- Sean
More information about the general
mailing list