]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
dtest: update for ep_mode on MCM providers
authorArlin Davis <arlin.r.davis@intel.com>
Tue, 4 Feb 2014 03:12:06 +0000 (19:12 -0800)
committerArlin Davis <arlin.r.davis@intel.com>
Tue, 4 Feb 2014 03:12:06 +0000 (19:12 -0800)
Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
test/dtest/dtest.c

index 3e62ade61b6542a744074ae32feacccb15237d58..7bb148828d572ef07cc370134bd6091e2cce8876 100755 (executable)
 
 /* 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)
@@ -118,6 +119,7 @@ static DAT_PZ_HANDLE h_pz = DAT_HANDLE_NULL;
 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;
@@ -333,10 +335,11 @@ static void print_ia_address(struct sockaddr *sa)
                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);
@@ -348,11 +351,10 @@ int main(int argc, char **argv)
        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;
@@ -402,6 +404,12 @@ int main(int argc, char **argv)
                        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;
@@ -441,6 +449,7 @@ int main(int argc, char **argv)
                }
        }
 #endif
+
        if (signal_rate > burst)
                signal_rate = burst;
 
@@ -448,7 +457,13 @@ int main(int argc, char **argv)
        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);
        }
@@ -994,6 +1009,7 @@ DAT_RETURN connect_ep(char *hostname, DAT_CONN_QUAL conn_id)
 
                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) {
@@ -1401,7 +1417,7 @@ DAT_RETURN do_rdma_write_with_msg(void)
                        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
@@ -1449,7 +1465,8 @@ done:
                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);
@@ -1492,14 +1509,14 @@ done:
                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);