ZERO_STRUCT(init_attr);
init_attr.cap.max_send_wr = 16;
init_attr.cap.max_recv_wr = 2;
- init_attr.cap.max_recv_sge = 1;
- init_attr.cap.max_send_sge = 1;
+ init_attr.cap.max_recv_sge = 2;
+ init_attr.cap.max_send_sge = 2;
init_attr.qp_type = IBV_QPT_RC;
state->t->ibv.cq = ibv_create_cq(state->t->rdma.cm_id->verbs,
struct {
uint8_t buffer[0x14];
struct ibv_mr *mr;
-/* uint8_t buffer2[0x14];
- struct ibv_mr *mr2;
- struct ibv_sge sge[2];
-*/ struct ibv_sge sge[1];
+ struct ibv_sge sge[1];
struct ibv_send_wr wr;
} req;
struct {
return tevent_req_post(req, ev);
}
-/* state->req.mr2 = ibv_reg_mr(transport->ibv.pd,
+ state->req.mr2 = ibv_reg_mr(transport->ibv.pd,
state->req.buffer2,
sizeof(state->req.buffer2),
IBV_ACCESS_LOCAL_WRITE);
if (tevent_req_nomem(state->req.mr2, req)) {
return tevent_req_post(req, ev);
}
-*/ state->req.sge[0].addr = (uint64_t) (uintptr_t) state->req.buffer;
+ state->req.sge[0].addr = (uint64_t) (uintptr_t) state->req.buffer;
state->req.sge[0].length = sizeof(state->req.buffer);
state->req.sge[0].lkey = state->req.mr->lkey;
-/* state->req.sge[1].addr = (uint64_t) (uintptr_t) state->req.buffer2;
- state->req.sge[1].length = sizeof(state->req.buffer2);
- state->req.sge[1].lkey = state->req.mr2->lkey;
-*/ state->req.wr.opcode = IBV_WR_SEND;
+ state->req.wr.opcode = IBV_WR_SEND;
state->req.wr.send_flags = IBV_SEND_SIGNALED;
state->req.wr.sg_list = state->req.sge;
state->req.wr.num_sge = ARRAY_SIZE(state->req.sge);