The client operation section
provides a general overview of the basic operation for the active,
or client side of communication. A general connection flow is described
in the following:
- rdma_create_event_channel
 
- Creates a channel to receive events.
 
- rdma_create_id
 
- Allocates an rdma_cm_id that is conceptually similar to a socket.
 
- rdma_resolve_addr
 
- Obtains a local RDMA device to reach the remote address.
 
- rdma_get_cm_event
 
- Waits for the RDMA_CM_EVENT_ADDR_RESOLVED event.
 
- rdma_ack_cm_event
 
- Acknowledges the received event.
 
- rdma_create_qp
 
- Allocates a QP for the communication.
 
- rdma_resolve_route
 
- Determines the route to the remote address.
 
- rdma_get_cm_event
 
- Waits for the RDMA_CM_EVENT_ROUTE_RESOLVED event.
 
- rdma_ack_cm_event
 
- Acknowledges the received event.
 
- rdma_connect
 
- Connects to the remote server.
 
- rdma_get_cm_event
 
- Waits for the RDMA_CM_EVENT_ESTABLISHED event.
 
- rdma_ack_cm_event
 
- Acknowledges the received event.
 
- Performs data transfer over the connection.
 
- rdma_disconnect
 
- Tears down the connection.
 
- rdma_get_cm_event
 
- Waits for the RDMA_CM_EVENT_DISCONNECTED event.
 
- rdma_ack_cm_event
 
- Acknowledges the event.
 
- rdma_destroy_qp
 
- Destroys the QP.
 
- rdma_destroy_id
 
- Releases the rdma_cm_id.
 
- rdma_destroy_event_channel
 
- Releases the event channel.
 
 
Note: The example shows the client initiating the disconnect, but
either side of a connection might initiate the disconnect process.