Lines Matching +full:pd +full:- +full:node
2 * Copyright (c) 2005-2007 Intel Corporation. All rights reserved.
14 * - Redistributions of source code must retain the above
18 * - Redistributions in binary form must reproduce the above
53 struct ibv_pd *pd; member
85 static int create_message(struct cmatest_node *node) in create_message() argument
93 node->mem = malloc(message_size + sizeof(struct ibv_grh)); in create_message()
94 if (!node->mem) { in create_message()
96 return -1; in create_message()
98 node->mr = ibv_reg_mr(node->pd, node->mem, in create_message()
101 if (!node->mr) { in create_message()
107 free(node->mem); in create_message()
108 return -1; in create_message()
111 static int verify_test_params(struct cmatest_node *node) in verify_test_params() argument
116 ret = ibv_query_port(node->cma_id->verbs, node->cma_id->port_num, in verify_test_params()
124 return -EINVAL; in verify_test_params()
130 static int init_node(struct cmatest_node *node) in init_node() argument
135 node->pd = ibv_alloc_pd(node->cma_id->verbs); in init_node()
136 if (!node->pd) { in init_node()
137 ret = -ENOMEM; in init_node()
138 printf("mckey: unable to allocate PD\n"); in init_node()
143 node->cq = ibv_create_cq(node->cma_id->verbs, cqe, node, NULL, 0); in init_node()
144 if (!node->cq) { in init_node()
145 ret = -ENOMEM; in init_node()
155 init_qp_attr.qp_context = node; in init_node()
158 init_qp_attr.send_cq = node->cq; in init_node()
159 init_qp_attr.recv_cq = node->cq; in init_node()
160 ret = rdma_create_qp(node->cma_id, node->pd, &init_qp_attr); in init_node()
166 ret = create_message(node); in init_node()
175 static int post_recvs(struct cmatest_node *node) in post_recvs() argument
187 recv_wr.wr_id = (uintptr_t) node; in post_recvs()
190 sge.lkey = node->mr->lkey; in post_recvs()
191 sge.addr = (uintptr_t) node->mem; in post_recvs()
194 ret = ibv_post_recv(node->cma_id->qp, &recv_wr, &recv_failure); in post_recvs()
203 static int post_sends(struct cmatest_node *node, int signal_flag) in post_sends() argument
209 if (!node->connected || !message_count) in post_sends()
217 send_wr.wr_id = (unsigned long)node; in post_sends()
218 send_wr.imm_data = htobe32(node->cma_id->qp->qp_num); in post_sends()
220 send_wr.wr.ud.ah = node->ah; in post_sends()
221 send_wr.wr.ud.remote_qpn = node->remote_qpn; in post_sends()
222 send_wr.wr.ud.remote_qkey = node->remote_qkey; in post_sends()
225 sge.lkey = node->mr->lkey; in post_sends()
226 sge.addr = (uintptr_t) node->mem; in post_sends()
229 ret = ibv_post_send(node->cma_id->qp, &send_wr, &bad_send_wr); in post_sends()
238 test.connects_left--; in connect_error()
241 static int addr_handler(struct cmatest_node *node) in addr_handler() argument
245 ret = verify_test_params(node); in addr_handler()
249 ret = init_node(node); in addr_handler()
254 ret = post_recvs(node); in addr_handler()
259 ret = rdma_join_multicast(node->cma_id, test.dst_addr, node); in addr_handler()
270 static int join_handler(struct cmatest_node *node, in join_handler() argument
275 inet_ntop(AF_INET6, param->ah_attr.grh.dgid.raw, buf, 40); in join_handler()
277 param->ah_attr.dlid, param->ah_attr.sl); in join_handler()
279 node->remote_qpn = param->qp_num; in join_handler()
280 node->remote_qkey = param->qkey; in join_handler()
281 node->ah = ibv_create_ah(node->pd, ¶m->ah_attr); in join_handler()
282 if (!node->ah) { in join_handler()
287 node->connected = 1; in join_handler()
288 test.connects_left--; in join_handler()
292 return -1; in join_handler()
299 switch (event->event) { in cma_handler()
301 ret = addr_handler(cma_id->context); in cma_handler()
304 ret = join_handler(cma_id->context, &event->param.ud); in cma_handler()
310 rdma_event_str(event->event), event->status); in cma_handler()
312 ret = event->status; in cma_handler()
335 switch (event->event) { in cma_thread()
339 rdma_event_str(event->event), event->status); in cma_thread()
350 static void destroy_node(struct cmatest_node *node) in destroy_node() argument
352 if (!node->cma_id) in destroy_node()
355 if (node->ah) in destroy_node()
356 ibv_destroy_ah(node->ah); in destroy_node()
358 if (node->cma_id->qp) in destroy_node()
359 rdma_destroy_qp(node->cma_id); in destroy_node()
361 if (node->cq) in destroy_node()
362 ibv_destroy_cq(node->cq); in destroy_node()
364 if (node->mem) { in destroy_node()
365 ibv_dereg_mr(node->mr); in destroy_node()
366 free(node->mem); in destroy_node()
369 if (node->pd) in destroy_node()
370 ibv_dealloc_pd(node->pd); in destroy_node()
373 rdma_destroy_id(node->cma_id); in destroy_node()
383 return -ENOMEM; in alloc_nodes()
396 while (--i >= 0) in alloc_nodes()
439 ret = cma_handler(event->id, event); in connect_events()
453 printf("getaddrinfo failed (%s) - invalid hostname or IP address\n", gai_strerror(ret)); in get_addr()
457 memcpy(addr, res->ai_addr, res->ai_addrlen); in get_addr()
471 sib->sib_family = AF_IB; in get_dst_addr()
472 return inet_pton(AF_INET6, dst, &sib->sib_addr) != 1; in get_dst_addr()
560 while ((op = getopt(argc, argv, "m:M:sb:c:C:S:p:")) != -1) { in main()
590 printf("\t-m multicast_address\n"); in main()
591 printf("\t[-M unmapped_multicast_address]\n" in main()
592 "\t replaces -m and requires -b\n"); in main()
593 printf("\t[-s(ender)]\n"); in main()
594 printf("\t[-b bind_address]\n"); in main()
595 printf("\t[-c connections]\n"); in main()
596 printf("\t[-C message_count]\n"); in main()
597 printf("\t[-S message_size]\n"); in main()
598 printf("\t[-p port_space - %#x for UDP (default), " in main()