Server Operation

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.
[ Feedback ]