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.