[ewg] rdma_get_cm_event() vs ibv_async_event()

Yann Droneaud ydroneaud at opteya.com
Fri Mar 25 04:30:15 PDT 2011


Hi,

I'm using RDMA CM to manage connections above IB layer.

After connection is established, IB async events are polled using the
file descriptor found in the associated connection id returned by RDMA
CM layer: ibv_context->async_fd and proceed using ibv_get_async_event().

But the only event I caught and handle is IBV_EVENT_COMM_EST because it
happen sometimes under high load (in this case, rdma_notify() is used to
send the event back to RDMA CM layer).

RDMA CM event are monitored using an event channel created by
rdma_create_event_channel(), polled using file descriptor
rdma_event_channel->fd  and later processed by rdma_get_cm_event() on
event.

I'm suspecting there's some race between RDMA event channel ( /
rdma_get_cm_event()) and my IB async event monitoring.

So here's my question: should I monitor async events using
ibv_get_async_event() or is it fully managed by the RDMA CM layer ?

Regards.

-- 
Yann Droneaud
OPTEYA






More information about the ewg mailing list