This section provides a general overview of the basic operation
for the passive, or server, side of communication. A general connection
flow would be:
- 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_bind_addr
 
- Sets the local port number to listen on.
 
- rdma_listen
 
- Begins listening for connection requests.
 
- rdma_get_cm_event
 
- Waits for the RDMA_CM_EVENT_CONNECT_REQUEST event with a new rdma_cm_id.
 
- rdma_create_qp
 
- Allocates a QP for the communication on the new rdma_cm_id.
 
- rdma_accept
 
- Accepts the connection request.
 
- rdma_ack_cm_event
 
- Acknowledges the event.
 
- rdma_get_cm_event
 
- Waits for the RDMA_CM_EVENT_ESTABLISHED event.
 
- rdma_ack_cm_event
 
- Acknowledges the event.
 
- Performs the data transfer over the connection.
 
- rdma_get_cm_event
 
- Waits for the RDMA_CM_EVENT_DISCONNECTED event.
 
- rdma_ack_cm_event
 
- Acknowledges the event.
 
- rdma_disconnect
 
- Tears down the connection.
 
- rdma_destroy_qp
 
- Destroys the QP.
 
- rdma_destroy_id
 
- Releases the connected rdma_cm_id.
 
- rdma_destroy_id
 
- Releases the listening rdma_cm_id.
 
- rdma_destroy_event_channel
 
- Releases the event channel.