---
name: "rdma_post_recv"
section: "3"
platform: "linux"
package: "rdma-core"
version: "65.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/rdma_post_recv"
---

# rdma\_post\_recv(3)

post a work request to receive an incoming message.

## NAME

rdma\_post\_recv - post a work request to receive an incoming message.

## SYNOPSIS

**#include \<rdma/rdma\_verbs.h\>**

**int rdma\_post\_recv** **(struct rdma\_cm\_id \****id***,** **void \****context***,** **void \****addr***,** **size\_t** *length***,** **struct ibv\_mr \****mr***);**

## ARGUMENTS

- id

  A reference to a communication identifier where the message buffer will be posted.

- context

  User-defined context associated with the request.

- addr

  The address of the memory buffer to post.

- length

  The length of the memory buffer.

- mr

  A registered memory region associated with the posted buffer.

## DESCRIPTION

Posts a work request to the receive queue of the queue pair associated with the rdma\_cm\_id.  The posted buffer will be queued to receive an incoming message sent by the remote peer.

## RETURN VALUE

Returns 0 on success, or -1 on error.  If an error occurs, errno will be set to indicate the failure reason.

## NOTES

The user is responsible for ensuring that a receive buffer is posted and large enough to contain all sent data before the peer posts the corresponding send message.  The message buffer must have been registered before being posted, with the mr parameter referencing the registration. The buffer must remain registered until the receive completes.

Messages may be posted to an rdma\_cm\_id only after a queue pair has been associated with it.  A queue pair is bound to an rdma\_cm\_id after calling rdma\_create\_ep or rdma\_create\_qp, if the rdma\_cm\_id is allocated using rdma\_create\_id.

The user-defined context associated with the receive request will be returned to the user through the work completion wr\_id, work request identifier, field.

## SEE ALSO

[rdma\_cm(7)](/rdma_cm/7.md), [rdma\_create\_id(3)](/rdma_create_id/3.md), [rdma\_create\_ep(3)](/rdma_create_ep/3.md), [rdma\_create\_qp(3)](/rdma_create_qp/3.md), [rdma\_reg\_read(3)](/rdma_reg_read/3.md), [ibv\_reg\_mr(3)](/ibv_reg_mr/3.md), [ibv\_dereg\_mr(3)](/ibv_dereg_mr/3.md), [rdma\_post\_recvv(3)](/rdma_post_recvv/3.md), [rdma\_post\_send(3)](/rdma_post_send/3.md)
