func (qp *queuePair) ReadyToSend() error { attr := C.struct_ibv_qp_attr{} attr.qp_state = C.IBV_QPS_RTS // Local ack timeout for primary path. // Timeout is calculated as 4.096e-6*(2**attr.timeout) seconds. attr.timeout = 14 // Retry count (7 means forever) attr.retry_cnt = 6 // RNR retry (7 means forever) attr.rnr_retry = 6 attr.sq_psn = C.uint32_t(qp.psn) // this must be > 0 to avoid IBV_WC_REM_INV_REQ_ERR attr.max_rd_atomic = 1 mask := C.IBV_QP_STATE | C.IBV_QP_TIMEOUT | C.IBV_QP_RETRY_CNT | C.IBV_QP_RNR_RETRY | C.IBV_QP_SQ_PSN | C.IBV_QP_MAX_QP_RD_ATOMIC return qp.modify(&attr, mask) }