Lines Matching defs:node

80 static int create_message(struct cmatest_node *node)
88 node->mem = malloc(message_size + sizeof(struct ibv_grh));
89 if (!node->mem) {
93 node->mr = ibv_reg_mr(node->pd, node->mem,
96 if (!node->mr) {
102 free(node->mem);
106 static int verify_test_params(struct cmatest_node *node)
111 ret = ibv_query_port(node->cma_id->verbs, node->cma_id->port_num,
125 static int init_node(struct cmatest_node *node)
130 node->pd = ibv_alloc_pd(node->cma_id->verbs);
131 if (!node->pd) {
138 node->cq = ibv_create_cq(node->cma_id->verbs, cqe, node, NULL, 0);
139 if (!node->cq) {
150 init_qp_attr.qp_context = node;
153 init_qp_attr.send_cq = node->cq;
154 init_qp_attr.recv_cq = node->cq;
155 ret = rdma_create_qp(node->cma_id, node->pd, &init_qp_attr);
161 ret = create_message(node);
170 static int post_recvs(struct cmatest_node *node)
182 recv_wr.wr_id = (uintptr_t) node;
185 sge.lkey = node->mr->lkey;
186 sge.addr = (uintptr_t) node->mem;
189 ret = ibv_post_recv(node->cma_id->qp, &recv_wr, &recv_failure);
198 static int post_sends(struct cmatest_node *node, int signal_flag)
204 if (!node->connected || !message_count)
212 send_wr.wr_id = (unsigned long)node;
213 send_wr.imm_data = htobe32(node->cma_id->qp->qp_num);
215 send_wr.wr.ud.ah = node->ah;
216 send_wr.wr.ud.remote_qpn = node->remote_qpn;
217 send_wr.wr.ud.remote_qkey = node->remote_qkey;
220 sge.lkey = node->mr->lkey;
221 sge.addr = (uintptr_t) node->mem;
224 ret = ibv_post_send(node->cma_id->qp, &send_wr, &bad_send_wr);
236 static int addr_handler(struct cmatest_node *node)
241 ret = rdma_set_option(node->cma_id, RDMA_OPTION_ID,
247 ret = rdma_resolve_route(node->cma_id, 2000);
255 static int route_handler(struct cmatest_node *node)
260 ret = verify_test_params(node);
264 ret = init_node(node);
268 ret = post_recvs(node);
275 ret = rdma_connect(node->cma_id, &conn_param);
288 struct cmatest_node *node;
296 node = &test.nodes[test.conn_index++];
298 node->cma_id = cma_id;
299 cma_id->context = node;
301 ret = verify_test_params(node);
305 ret = init_node(node);
309 ret = post_recvs(node);
314 conn_param.qp_num = node->cma_id->qp->qp_num;
315 ret = rdma_accept(node->cma_id, &conn_param);
320 node->connected = 1;
325 node->cma_id = NULL;
333 static int resolved_handler(struct cmatest_node *node,
336 node->remote_qpn = event->param.ud.qp_num;
337 node->remote_qkey = event->param.ud.qkey;
338 node->ah = ibv_create_ah(node->pd, &event->param.ud.ah_attr);
339 if (!node->ah) {
344 node->connected = 1;
388 static void destroy_node(struct cmatest_node *node)
390 if (!node->cma_id)
393 if (node->ah)
394 ibv_destroy_ah(node->ah);
396 if (node->cma_id->qp)
397 rdma_destroy_qp(node->cma_id);
399 if (node->cq)
400 ibv_destroy_cq(node->cq);
402 if (node->mem) {
403 ibv_dereg_mr(node->mr);
404 free(node->mem);
407 if (node->pd)
408 ibv_dealloc_pd(node->pd);
411 rdma_destroy_id(node->cma_id);
452 static void create_reply_ah(struct cmatest_node *node, struct ibv_wc *wc)
457 node->ah = ibv_create_ah_from_wc(node->pd, wc, node->mem,
458 node->cma_id->port_num);
459 node->remote_qpn = be32toh(wc->imm_data);
461 ibv_query_qp(node->cma_id->qp, &attr, IBV_QP_QKEY, &init_attr);
462 node->remote_qkey = attr.qkey;