rdma_accept

Accepts a connection request.

Syntax

#include <rdma/rdma_cma.h>
int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param);

Description

The rdma_accept function is called from the listening side to accept a connection lookup request.

Notes:
  • The rdma_accept routine is not called on a listening rdma_cm_id, unlike the socket accept routine. Instead, after calling rdma_listen, you have to wait for a connection request event to occur.
  • Connection request events gives you a newly created rdma_cm_id, similar to a new socket, but the rdma_cm_id is bound to a specific RDMA device. The rdma_accept routine is called on the new rdma_cm_id.

Connection Properties

See, the rdma_connect routine.

Parameters

id Specifies the connection identifier associated with the request.
conn_param Specifies the information required to establish the connection.

Return Values

The rdma_accept function returns the following values:
0 On success.
-1 Error, see errno.
-EINVAL The error occurs:
  • If the id, conn_param, id->qp, or id->qp->context parameter is NULL.
  • If conn_param->responder_resources is bigger than the local RDMA device attribute, max_qp_rd_atom, and remote RDMA device attribute, max_qp_init_rd_atom.
  • If conn_param->initiator_depth is bigger than the local RDMA device attribute, max_qp_init_rd_atom, and remote RDMA device attribute, max_qp_rd_atom.
-EPROTONOSUPPORT The id->ps is not RDMA_PS_TCP.
-ENODATA The write operation on id->channel->fd failed.
[ Feedback ]