uint32_t length;
};
+#define RS_MIN_INLINE (sizeof(struct rs_sge))
#define rs_host_is_net() (1 == htonl(1))
#define RS_CONN_FLAG_NET 1
uint16_t sseq_no;
uint16_t sseq_comp;
uint16_t sq_size;
+ uint16_t sq_inline;
uint16_t rq_size;
uint16_t rseq_no;
if (inherited_rs) {
rs->sbuf_size = inherited_rs->sbuf_size;
rs->rbuf_size = inherited_rs->rbuf_size;
+ rs->sq_inline = inherited_rs->sq_inline;
rs->sq_size = inherited_rs->sq_size;
rs->rq_size = inherited_rs->rq_size;
rs->ctrl_avail = inherited_rs->ctrl_avail;
} else {
rs->sbuf_size = rs->rbuf_size = RS_BUF_SIZE;
+ rs->sq_inline = RS_INLINE;
rs->sq_size = rs->rq_size = RS_QP_SIZE;
rs->ctrl_avail = RS_QP_CTRL_SIZE;
}
qp_attr.cap.max_recv_wr = rs->rq_size;
qp_attr.cap.max_send_sge = 2;
qp_attr.cap.max_recv_sge = 1;
- qp_attr.cap.max_inline_data = RS_INLINE;
+ qp_attr.cap.max_inline_data = rs->sq_inline;
ret = rdma_create_qp(rs->cm_id, NULL, &qp_attr);
if (ret)
if (xfer_size > rs->target_sgl[rs->target_sge].length)
xfer_size = rs->target_sgl[rs->target_sge].length;
- if (xfer_size <= RS_INLINE) {
+ if (xfer_size <= rs->sq_inline) {
sge.addr = (uintptr_t) buf;
sge.length = xfer_size;
sge.lkey = 0;
ret = rs_write_data(rs, rs_wrid(1, xfer_size),
rs->ssgl, 1,
rs_msg_set(RS_OP_DATA, xfer_size),
- xfer_size <= RS_INLINE ? IBV_SEND_INLINE : 0);
+ xfer_size <= rs->sq_inline ? IBV_SEND_INLINE : 0);
if (xfer_size < rs_sbuf_left(rs))
rs->ssgl[0].addr += xfer_size;
else
ret = rs_write_data(rs, rs_wrid(1, xfer_size),
rs->ssgl, 2,
rs_msg_set(RS_OP_DATA, xfer_size),
- xfer_size <= RS_INLINE ? IBV_SEND_INLINE : 0);
+ xfer_size <= rs->sq_inline ? IBV_SEND_INLINE : 0);
rs->ssgl[0].addr = (uintptr_t) rs->sbuf + rs->ssgl[1].length;
}
if (ret)
case RDMA_RQSIZE:
rs->rq_size = min((*(uint32_t *) optval), RS_QP_MAX_SIZE);
break;
+ case RDMA_INLINE:
+ rs->sq_inline = min(*(uint32_t *) optval, RS_QP_MAX_SIZE);
+ if (rs->sq_inline < RS_MIN_INLINE)
+ rs->sq_inline = RS_MIN_INLINE;
+ break;
default:
break;
}
*((int *) optval) = rs->rq_size;
*optlen = sizeof(int);
break;
+ case RDMA_INLINE:
+ *((int *) optval) = rs->sq_inline;
+ *optlen = sizeof(int);
+ break;
default:
ret = ENOTSUP;
break;