/* definitions */
#define SERVER_CONN_QUAL 45248
-#define DTO_TIMEOUT (1000*1000*20)
+#define DTO_TIMEOUT DAT_TIMEOUT_INFINITE
+/*#define DTO_TIMEOUT (1000*1000*20) */
#define CNO_TIMEOUT (1000*1000*1)
#define DTO_FLUSH_TIMEOUT (1000*1000*2)
#define CONN_TIMEOUT (1000*1000*100)
static DAT_EP_HANDLE h_ep = DAT_HANDLE_NULL;
static DAT_PSP_HANDLE h_psp = DAT_HANDLE_NULL;
static DAT_CR_HANDLE h_cr = DAT_HANDLE_NULL;
+static DAT_IA_ATTR ia_attr;
static DAT_EVD_HANDLE h_async_evd = DAT_HANDLE_NULL;
static DAT_EVD_HANDLE h_dto_req_evd = DAT_HANDLE_NULL;
break;
case AF_INET6:
inet_ntop(AF_INET6, &((struct sockaddr_in6 *)sa)->sin6_addr, str, INET6_ADDRSTRLEN);
- printf("%d Local Address AF_INET6 - %s flowinfo(QPN)=0x%x, port(LID)=0x%x\n",
+ printf("%d Local Address AF_INET6 - %s flowinfo(QPN)=0x%x, port(LID)=0x%x ep_map=0x%x\n",
getpid(), str,
ntohl(((struct sockaddr_in6 *)sa)->sin6_flowinfo),
- ntohs(((struct sockaddr_in6 *)sa)->sin6_port));
+ ntohs(((struct sockaddr_in6 *)sa)->sin6_port),
+ 0x000000ff & ((((struct sockaddr_in6 *)sa)->sin6_scope_id) >> 8));
break;
default:
printf("%d Local Address UNKOWN FAMILY - port %d\n", getpid(), SERVER_CONN_QUAL);
int c, i;
DAT_RETURN ret;
DAT_EP_PARAM ep_param;
- DAT_IA_ATTR ia_attr;
DAT_PROVIDER_ATTR pr_attr;
/* parse arguments */
- while ((c = getopt(argc, argv, "Aautscvpq:l:b:d:B:h:P:S:")) != -1) {
+ while ((c = getopt(argc, argv, "Aautscvpq:l:b:d:B:h:P:S:e:")) != -1) {
switch (c) {
case 'A': /* all tests, msg, rdma read and write */
write_only = 0;
ucm = 1;
server = 0;
break;
+ case 'e':
+ /* map UCM ep_map into 3rd byte of AF_INET6 sin6_scope_id */
+ remote.sin6_scope_id = (0x0000ff00 & (strtol(optarg,NULL,0) << 8));
+ ucm = 1;
+ server = 0;
+ break;
case 'B':
burst = atoi(optarg);
break;
}
}
#endif
+
if (signal_rate > burst)
signal_rate = burst;
sq_cnt = MSG_BUF_COUNT + MAX_RDMA_RD + signal_rate;
if (!server) {
- printf("%d Running as client - %s\n", getpid(), provider);
+ printf("%d Running as client %s\n", getpid(), provider);
+ if (ucm) {
+ printf("%d Remote UCM -> qpn 0x%x lid 0x%x ep_map 0x%x\n",
+ getpid(), ntohl(remote.sin6_flowinfo),
+ htons(remote.sin6_port),
+ 0xff & (remote.sin6_scope_id >> 8));
+ }
} else {
printf("%d Running as server - %s\n", getpid(), provider);
}
printf("%d Server waiting for connect request on port " F64x
"\n", getpid(), conn_id);
+ print_ia_address(ia_attr.ia_address_ptr);
ret = dat_evd_wait(h_cr_evd, SERVER_TIMEOUT, 1, &event, &nmore);
if (ret != DAT_SUCCESS) {
sprintf(&sbuf[25],"rdma_writes= ");
sprintf(&sbuf[25], "rdma writes completed == %d", i+1);
- sbuf[buf_len-1] = i;
+ sbuf[buf_len-1] = i+1; /* last byte should be number of writes */
if (!((i+1) % signal_rate))
flags = DAT_COMPLETION_DEFAULT_FLAG;
else
if (event.event_number != (int)DAT_IB_DTO_EVENT ||
ext_event->type != DAT_IB_RDMA_WRITE_IMMED_DATA ||
ext_event->val.immed.data != 0x7777) {
- printf("unexpected event 0x%x, type 0x%x or idata 0x%x, waiting for WR-IMMED #0x%x\n",
+ printf("unexpected event 0x%x, type 0x%x or idata 0x%x,"
+ " waiting for WR-IMMED #0x%x\n",
event.event_number, ext_event->type,
ext_event->val.immed.data, DAT_IB_DTO_EVENT);
return (DAT_ABORT);
if ((dto_event->transfered_length != sizeof(DAT_RMR_TRIPLET))
|| (dto_event->user_cookie.as_64 != recv_msg_index)) {
fprintf(stderr,
- "unexpected event data for receive: len=%d cookie=" F64x" exp %d/%d\n",
+ " ERR on receive: st %d len=%d cookie=" F64x" exp 0 %d %d\n",
+ dto_event->status,
(int)dto_event->transfered_length, dto_event->user_cookie.as_64,
(int)sizeof(DAT_RMR_TRIPLET), recv_msg_index);
return (DAT_ABORT);
}
printf("%d LAST rdma_write message ACK received from remote \n", getpid());
}
-
stop = get_time();
ts.rdma_wr = ((stop - start) * 1.0e6);