Skip to content

Posts Tagged ‘QP ’

By default, all Work Requests generate Work Completions when their processing is finished. However, Send Request may or may not generate Work Completions when their processing is finished - this is fully controllable by the application and this is called...

General In RDMA there are two options for establishing a connection between two sides: Changing the QP state explicitly in the application by calling ibv_modify_qp() Using librdmacm (in iWARP this is the only way to do it) In this post,...

What is Fence? In the Send Queue there are operations that only send data from a local host to a remote one and there are operations that read data from a remote host and store it locally. Sometimes, there is...

Since in RDMA any UD QP can send/receive a packet to/from any other UD QP in the subnet, there is a need for a protection mechanism to allow a UD QP to specify from which other UD QPs it wishes...

RDMA supports zero byte messages, and this can be done by posting a Send Request without a scatter/gather list (i.e. a list with zero entries). Zero byte messages can be done with the following opcodes: Send Send with immediate RDMA...

Let's start with the bottom line: the verbs API is fully thread safe and verbs can be called from every thread in the process. Part of the thread safe is implemented at the libibverbs level and part of it is...

When one wishes to stop the outstanding Work Requests from being processed, flushing the Work Queues may be useful. The most common reason for doing this is to reclaim the memory buffers that the Work Requests refer to. Another reason...

There are many code samples on the internet that explain how to send messages using the SEND operation over Reliable Connected (RC) QP. In this post I will explain how to convert the code from this kind of example to...

When writing a new RDMA application (just like when writing a new application over sockets), one should decide which QP type he should work with. In this post, I will describe in detail the characteristics of each transport type. In...

int ibv_detach_mcast(struct ibv_qp *qp, const union ibv_gid *gid, uint16_t lid);int ibv_detach_mcast(struct ibv_qp *qp, const union ibv_gid *gid, uint16_t lid); Description ibv_detach_mcast() detaches a Queue Pair from a multicast group. After the detachment completes, this QP won't get a copy of...