#include <infiniband/umad.h> int umad_send(int portid, int agentid, void *umad, int length, int timeout_ms, int retries);
The buffer can contain a RMPP transmission which is larger than a single MAD packet when the agentid specifies a class which utilizes RMPP and the header flags indicate RMPP is active. NOTE currently only RMPPFlags.Active is meaningful in the header in user space. All other RMPP fields are ignored. The data section of the buffer will be sent in multiple RMPP MAD packets with headers built for the user.
timeout_ms controls the solicited MADs behavior as follows: zero value means not solicited. Positive value makes kernel indicate timeout in milliseconds. If reply is not received within the specified value, the original buffer is returned in the read channel with the status field set (to non zero). Negative timeout_ms makes kernel wait forever for the reply. retries indicates the number of times the MAD will be retried before giving up.