static int run(void) { int ret = 0; if (!dst_addr) { ret = server_listen(); if (ret) return ret; } ret = dst_addr ? client_connect() : server_connect(); if (ret) { return ret; } run_test(); fi_shutdown(ep, 0); fi_close(&ep->fid); free_ep_res(); if (!dst_addr) free_lres(); fi_close(&dom->fid); fi_close(&fab->fid); return ret; }
static int server_listen(void) { struct fi_info *fi; int ret; ret = fi_getinfo(FI_VERSION(1, 0), src_addr, port, FI_SOURCE, &hints, &fi); if (ret) { printf("fi_getinfo %s\n", strerror(-ret)); return ret; } cq_data_size = fi->domain_attr->cq_data_size; ret = fi_fabric(fi->fabric_attr, &fab, NULL); if (ret) { printf("fi_fabric %s\n", fi_strerror(-ret)); goto err0; } ret = fi_passive_ep(fab, fi, &pep, NULL); if (ret) { printf("fi_passive_ep %s\n", fi_strerror(-ret)); goto err1; } ret = alloc_cm_res(); if (ret) goto err2; ret = fi_bind(&pep->fid, &cmeq->fid, 0); if (ret) { printf("fi_bind %s\n", fi_strerror(-ret)); goto err3; } ret = fi_listen(pep); if (ret) { printf("fi_listen %s\n", fi_strerror(-ret)); goto err3; } fi_freeinfo(fi); return 0; err3: free_lres(); err2: fi_close(&pep->fid); err1: fi_close(&fab->fid); err0: fi_freeinfo(fi); return ret; }
static int server_listen(void) { struct fi_info *fi; int ret; ret = fi_getinfo(FT_FIVERSION, opts.src_addr, opts.src_port, FI_SOURCE, hints, &fi); if (ret) { FT_PRINTERR("fi_getinfo", ret); return ret; } ret = fi_fabric(fi->fabric_attr, &fab, NULL); if (ret) { FT_PRINTERR("fi_fabric", ret); goto err0; } ret = fi_passive_ep(fab, fi, &pep, NULL); if (ret) { FT_PRINTERR("fi_passive_ep", ret); goto err1; } ret = alloc_cm_res(); if (ret) goto err2; ret = fi_pep_bind(pep, &cmeq->fid, 0); if (ret) { FT_PRINTERR("fi_pep_bind", ret); goto err3; } ret = fi_listen(pep); if (ret) { FT_PRINTERR("fi_listen", ret); goto err3; } fi_freeinfo(fi); return 0; err3: free_lres(); err2: fi_close(&pep->fid); err1: fi_close(&fab->fid); err0: fi_freeinfo(fi); return ret; }
static int server_listen(void) { struct fi_info *fi; int ret; ret = fi_getinfo(FI_VERSION(1, 0), src_addr, port, 0, &hints, &fi); if (ret) { printf("fi_getinfo %s\n", strerror(-ret)); return ret; } ret = fi_fabric(fi->fabric_attr, &fab, NULL); if (ret) { printf("fi_fabric %s\n", fi_strerror(-ret)); goto err0; } ret = fi_pendpoint(fab, fi, &pep, NULL); if (ret) { printf("fi_endpoint %s\n", fi_strerror(-ret)); goto err1; } ret = alloc_cm_res(); if (ret) goto err2; ret = bind_fid(&pep->fid, &cmeq->fid, 0); if (ret) goto err3; ret = fi_listen(pep); if (ret) { printf("fi_listen %s\n", fi_strerror(-ret)); goto err3; } fi_freeinfo(fi); return 0; err3: free_lres(); err2: fi_close(&pep->fid); err1: fi_close(&fab->fid); err0: fi_freeinfo(fi); return ret; }
static int run(void) { int i, ret = 0; if (!opts.dst_addr) { ret = server_listen(); if (ret) return ret; } ret = opts.dst_addr ? client_connect() : server_connect(); if (ret) return ret; ret = exchange_addr_key(); if (ret) return ret; if (!(opts.user_options & FT_OPT_SIZE)) { for (i = 0; i < TEST_CNT; i++) { if (test_size[i].option > opts.size_option) continue; opts.transfer_size = test_size[i].size; init_test(&opts, test_name, sizeof(test_name)); ret = run_test(); if (ret) goto out; } } else { init_test(&opts, test_name, sizeof(test_name)); ret = run_test(); if (ret) goto out; } sync_test(); wait_for_data_completion(scq, max_credits - credits); /* Finalize before closing ep */ ft_finalize(ep, scq, rcq, FI_ADDR_UNSPEC); out: fi_shutdown(ep, 0); free_ep_res(); if (!opts.dst_addr) free_lres(); fi_close(&dom->fid); fi_close(&fab->fid); return ret; }
static int run(void) { int i, ret = 0; if (!dst_addr) { ret = server_listen(); if (ret) return ret; } print_test_hdr(); ret = dst_addr ? client_connect() : server_connect(); if (ret) { return ret; } if (!custom) { for (i = 0; i < TEST_CNT; i++) { if (test_size[i].option > size_option) continue; init_test(test_size[i].size, test_name, &transfer_size, &iterations); run_test(); } } else { ret = run_test(); } ret = wait_for_completion(scq, max_credits - credits); if (ret) { return ret; } credits = max_credits; fi_shutdown(ep, 0); fi_close(&ep->fid); free_ep_res(); if (!dst_addr) free_lres(); fi_close(&dom->fid); fi_close(&fab->fid); return ret; }
static int run(void) { int i, ret = 0; if (!client) { ret = server_listen(); if (ret) return ret; } printf("%-8s%-8s%-8s%8s %10s%13s\n", "bytes", "iters", "total", "time", "MB/sec", "usec/xfer"); ret = client ? client_connect() : server_connect(); if (ret) return ret; if (!custom) { for (i = 0; i < TEST_CNT; i++) { if (test_size[i].option > size_option) continue; init_test(test_size[i].size); ret = run_test(); } } else { ret = run_test(); } fi_shutdown(ep, 0); fi_close(&ep->fid); free_ep_res(); if (!client) free_lres(); fi_close(&dom->fid); fi_close(&fab->fid); return ret; }