RDMA Read from Peer Buffer

When the upper layer is required to retrieve the contents of a remote peer buffer, it passes:

  • The implementation-defined representation of the Connection.

  • The local buffer whose contents are to receive the data from the peer.

  • An array of one or more Buffer Descriptor V1 structures describing the remote peer buffer as obtained from the peer in an upper-layer operation on the Connection,

  • An Offset into the remote peer buffer indicating the first byte of the target subsegment to be read.

The provided Offset MUST be used to index into the provided array of Buffer Descriptor V1 structure elements by consuming the elements’ Length fields to identify the first Buffer Descriptor V1 structure to use. It MUST then use the length of the provided buffer to determine how many Buffer Descriptor V1 structure elements describe the targeted remote peer buffer locations. It MUST adjust the Offset and Length fields of the first element to indicate the trailing subsegment of the first peer buffer segment, and MUST adjust the Length field of the last element to indicate the leading subsegment of the last peer buffer segment.

Implementation-specific means MUST be used to request that the RDMA provider perform one or more RDMA Read operations to transfer data from the remote peer memory locations described by the Buffer Descriptor V1 structure elements calculated in the previous step, to the memory locations described by the buffer, on the specified Connection. The result of the operation from the RDMA provider MUST be provided to the upper layer.