[TOOLS] fix send_bw test for UD.
authorsleybo <sleybo@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Mon, 19 Feb 2007 15:42:01 +0000 (15:42 +0000)
committersleybo <sleybo@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Mon, 19 Feb 2007 15:42:01 +0000 (15:42 +0000)
pass my_dest structure between server and client.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@597 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

tools/perftests/user/perf_defs.h
tools/perftests/user/send_bw/send_bw.c
tools/perftests/user/send_lat/send_lat.c
tools/perftests/user/write_bw/write_bw.c
tools/perftests/user/write_lat/write_lat.c

index f69f311..f6ce49c 100644 (file)
 #if 0
 #define PERF_ENTER     printf("%s: ===>\n",__FUNCTION__);
 #define PERF_EXIT printf("%s: <===\n",__FUNCTION__);
+#define PERF_DEBUG     printf
 #else
 #define PERF_ENTER
 #define PERF_EXIT
+#define PERF_DEBUG //
 #endif
 
 struct pingpong_context {
index 48f23b6..5689861 100644 (file)
 #define MAX_INLINE 400
 
 struct user_parameters {
-       const char              *servername;
-       int connection_type;
-       int mtu;
-       int all; /* run all msg size */
-       int signal_comp;
-       int iters;
-       int tx_depth;
-       int duplex;
+       const char      *servername;
+       int                     connection_type;
+       int                     mtu;
+       int                     all; /* run all msg size */
+       int                     signal_comp;
+       int                     iters;
+       int                     tx_depth;
+       int                     duplex;
     int use_event;
 };
 
@@ -429,6 +429,7 @@ static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
                                fprintf(stderr, "Couldn't post recv: counter=%d\n", i);
                                return 14;
                        }
+                       PERF_DEBUG("rcnt = %d \n",i);
                }   
        }
        post_recv = user_parm->tx_depth;
@@ -437,7 +438,8 @@ static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
 }
 
 static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername,
-                       int ib_port, int port, struct pingpong_dest **p_rem_dest,struct user_parameters *user_parm)
+                       int ib_port, int port, struct pingpong_dest **p_my_dest,
+                       struct pingpong_dest **p_rem_dest,struct user_parameters *user_parm)
 {
        struct pingpong_dest    *my_dest;
        struct pingpong_dest    *rem_dest;
@@ -488,7 +490,7 @@ static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername
                my_dest[i].rkey = ctx->rkey;
                my_dest[i].vaddr = (uintptr_t)ctx->buf + ctx->size;
 
-               printf("  local address:  LID %#04x, QPN %#06x, PSN %#06x "
+               printf("  local address:  LID %#04x, QPN %#06x, PSN %#06x, "
                "RKey %#08x VAddr %#016Lx\n",
                my_dest[i].lid, my_dest[i].qpn, my_dest[i].psn,
                my_dest[i].rkey, my_dest[i].vaddr);
@@ -512,6 +514,7 @@ static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername
                        return INVALID_SOCKET;
        }
        *p_rem_dest = rem_dest;
+       *p_my_dest = my_dest;
        return sockfd;
 }
 
@@ -638,7 +641,7 @@ int run_iter_bi(struct pingpong_context *ctx, struct user_parameters *user_param
                                return 1;
                        }
                        ++scnt;
-//printf("scnt = %d \n",scnt);
+                       PERF_DEBUG("scnt = %d \n",scnt);
                }
 
                {
@@ -707,6 +710,8 @@ int run_iter_bi(struct pingpong_context *ctx, struct user_parameters *user_param
                                        p_wc_free = p_wc_done;
                                        p_wc_free->p_next = NULL;
                                        p_wc_done = NULL;
+                                       PERF_DEBUG("ccnt = %d \n",ccnt);
+                                       PERF_DEBUG("rcnt = %d \n",rcnt);
                                }
                        } while (ib_status == IB_SUCCESS );
 
@@ -714,7 +719,7 @@ int run_iter_bi(struct pingpong_context *ctx, struct user_parameters *user_param
                                fprintf(stderr, "poll CQ failed %d\n", ib_status);
                                return 1;
                        }
-//printf("ccnt = %d \n",ccnt);
+
                }
        }
        return(0);
@@ -730,11 +735,6 @@ int run_iter_uni(struct pingpong_context *ctx, struct user_parameters *user_para
        ib_recv_wr_t            *bad_wr_recv;
        ib_api_status_t ib_status;
 
-       if (user_param->connection_type==UD) {
-               if (size > 2048) {
-                       size = 2048;
-               }
-       }
 
        /* send */
        if (user_param->connection_type==UD) {
@@ -805,7 +805,7 @@ int run_iter_uni(struct pingpong_context *ctx, struct user_parameters *user_para
                                                scnt, ccnt);
                                                return 1;
                                        }
-                                       ++rcnt;
+                                       
                                        ib_status = ib_post_recv(ctx->qp[0], &ctx->rwr, &bad_wr_recv);
                                        if (ib_status != IB_SUCCESS)
                                        {
@@ -813,7 +813,11 @@ int run_iter_uni(struct pingpong_context *ctx, struct user_parameters *user_para
                                                rcnt);
                                                return 15;
                                        }
-//printf("rcnt = %d \n",rcnt);
+                                       ++rcnt;
+                                       ++ccnt;
+                                       PERF_DEBUG("ccnt = %d \n",ccnt);
+                                       PERF_DEBUG("rcnt = %d \n",rcnt);
+
                                        p_wc_free = p_wc_done;
                                        p_wc_free->p_next = NULL;
                                        p_wc_done = NULL;
@@ -840,7 +844,7 @@ int run_iter_uni(struct pingpong_context *ctx, struct user_parameters *user_para
                                        return 1;
                                }
                                ++scnt;
-//printf("scnt = %d \n",scnt);
+                               PERF_DEBUG("scnt = %d \n",scnt);
                        }
                        if (ccnt < user_param->iters) {
                                ib_wc_t wc;
@@ -887,12 +891,14 @@ int run_iter_uni(struct pingpong_context *ctx, struct user_parameters *user_para
                                                p_wc_free->p_next = NULL;
                                                p_wc_done = NULL;
                                        }
+
                                } while (ib_status == IB_SUCCESS );
                                if (ib_status != IB_NOT_FOUND) {
                                        fprintf(stderr, "poll CQ failed %d\n", ib_status);
                                        return 1;
                                }
-//printf("ccnt = %d \n",ccnt);
+
+                               PERF_DEBUG("ccnt = %d \n",ccnt);
                        }
                }
        }
@@ -903,7 +909,7 @@ int run_iter_uni(struct pingpong_context *ctx, struct user_parameters *user_para
 int __cdecl main(int argc, char *argv[])
 {
        struct pingpong_context *ctx;
-       struct pingpong_dest     my_dest;
+       struct pingpong_dest     *my_dest;
        struct pingpong_dest    *rem_dest;
        struct user_parameters  user_param;
        char                            *ib_devname = NULL;
@@ -1015,7 +1021,7 @@ int __cdecl main(int argc, char *argv[])
                case 'b':
                        user_param.duplex = 1;
                        break;
-
+               case 'h':
                default:
                        usage(argv[0]);
                        return 1;
@@ -1052,18 +1058,16 @@ int __cdecl main(int argc, char *argv[])
                return 1;
        }
        
-       if (user_param.all == ALL) {
+       if (user_param.all == ALL && user_param.connection_type!=UD) {
                /*since we run all sizes */
+               printf("test\n");
                size = 8388608; /*2^23 */
-       } else {
-               if (user_param.connection_type==UD) {
-                       if (size > 2048) {
-                               printf("Max msg size in UD is 2048 changing to 2048\n");
-                               size = 2048;
-                       }
-               }
+       } else if (user_param.connection_type==UD ) {
+               printf("Max msg size in UD is 2048 changing to 2048\n");
+               size = 2048;
        }
        
+       
        srand(GetCurrentProcessId() * GetTickCount());
 
        //TODO: get pagesize from sysinfo
@@ -1077,7 +1081,7 @@ int __cdecl main(int argc, char *argv[])
        if (!ctx)
                return 1;
        
-       sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&rem_dest,&user_param);
+       sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&my_dest,&rem_dest,&user_param);
        if (sockfd == INVALID_SOCKET)
                return 9;
        
@@ -1124,9 +1128,13 @@ int __cdecl main(int argc, char *argv[])
                        if (user_param.servername) {
                                print_report(user_param.iters, size, user_param.duplex, tposted, tcompleted);
                                /* sync again for the sake of UC/UC */
-                               pp_client_exch_dest(sockfd, &my_dest,rem_dest);
+                               if(pp_client_exch_dest(sockfd, my_dest,rem_dest))
+                                       return 19;
+                                       
                        } else {
-                               pp_server_exch_dest(sockfd, &my_dest,rem_dest);
+                               if(pp_server_exch_dest(sockfd,my_dest,rem_dest))
+                                       return 19;
+                                       
                        }
 
                }
@@ -1145,9 +1153,9 @@ int __cdecl main(int argc, char *argv[])
 
        /* close sockets */
        if (user_param.servername) {
-               pp_client_exch_dest(sockfd, &my_dest,&rem_dest[0]);
+               pp_client_exch_dest(sockfd, my_dest,rem_dest);
        } else {
-               pp_server_exch_dest(sockfd, &my_dest,&rem_dest[0]);
+               pp_server_exch_dest(sockfd, my_dest,rem_dest);
        }
 
        send(sockfd, "done", sizeof "done",0);
index 9d04122..d519c1c 100644 (file)
@@ -462,7 +462,8 @@ static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
 }
 
 static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername,
-                       int ib_port, int port, struct pingpong_dest **p_rem_dest,struct user_parameters *user_parm)
+                       int ib_port, int port, struct pingpong_dest **p_my_dest,
+                       struct pingpong_dest **p_rem_dest,struct user_parameters *user_parm)
 {
        struct pingpong_dest    *my_dest;
        struct pingpong_dest    *rem_dest;
@@ -513,7 +514,7 @@ static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername
                my_dest[i].rkey = ctx->rkey;
                my_dest[i].vaddr = (uintptr_t)ctx->buf + ctx->size;
 
-               printf("  local address:  LID %#04x, QPN %#06x, PSN %#06x "
+               printf("  local address:  LID %#04x, QPN %#06x, PSN %#06x, "
                "RKey %#08x VAddr %#016Lx\n",
                my_dest[i].lid, my_dest[i].qpn, my_dest[i].psn,
                my_dest[i].rkey, my_dest[i].vaddr);
@@ -537,6 +538,7 @@ static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername
                        return INVALID_SOCKET;
        }
        *p_rem_dest = rem_dest;
+       *p_my_dest = my_dest;
        return sockfd;
 }
 
@@ -645,13 +647,6 @@ int run_iter(struct pingpong_context *ctx, struct user_parameters *user_param,
        iters = user_param->iters;
        tx_depth = user_param->tx_depth;
 
-
-       if (user_param->connection_type==UD) {
-               if (size > 2048) {
-                       size = 2048;
-               }
-       }
-
        ///send //
        if (user_param->connection_type==UD) {
                ctx->list.vaddr = (uintptr_t) ctx->buf + 40;
@@ -698,8 +693,8 @@ int run_iter(struct pingpong_context *ctx, struct user_parameters *user_param,
                        p_wc_free = &wc;
                        p_wc_done = NULL;
                        p_wc_free->p_next = NULL;
-                       //printf("rcnt %d\n",rcnt);
-                       //printf("scnt %d\n",scnt);
+                       PERF_DEBUG("rcnt %d\n",rcnt);
+                       PERF_DEBUG("scnt %d\n",scnt);
                        /*Server is polling on recieve first */
                        ++rcnt;
                        if (ib_post_recv(qp, &rwr, &bad_wr_recv)) {
@@ -753,8 +748,8 @@ int run_iter(struct pingpong_context *ctx, struct user_parameters *user_param,
                if (scnt < iters ) {
                        ib_send_wr_t            *bad_wr;
 
-                       //printf("rcnt1 %d\n",rcnt);
-                       //printf("scnt1 %d\n",scnt);
+                       PERF_DEBUG("rcnt1 %d\n",rcnt);
+                       PERF_DEBUG("scnt1 %d\n",scnt);
                        if (ccnt == (tx_depth - 2) || (user_param->signal_comp == SIGNAL)
                            || (scnt == (iters - 1)) ) {
                                ccnt = 0;
@@ -780,8 +775,8 @@ int run_iter(struct pingpong_context *ctx, struct user_parameters *user_param,
                        ib_wc_t wc;
                        ib_wc_t *p_wc_done,*p_wc_free;
 
-                       //printf("rcnt2 %d\n",rcnt);
-                       //printf("scnt2 %d\n",scnt);
+                       PERF_DEBUG("rcnt2 %d\n",rcnt);
+                       PERF_DEBUG("scnt2 %d\n",scnt);
                        p_wc_free = &wc;
                        p_wc_done = NULL;
                        p_wc_free->p_next = NULL;
@@ -849,6 +844,7 @@ int __cdecl main(int argc, char *argv[])
 {
 
        struct pingpong_context *ctx;
+       struct pingpong_dest     *my_dest;
        struct pingpong_dest     *rem_dest;
        struct user_parameters  user_param;
        char                            *ib_devname = NULL;
@@ -1018,11 +1014,16 @@ int __cdecl main(int argc, char *argv[])
                return 1;
        }
 
-
-       if (user_param.all == ALL) {
-               /*since we run all sizes lets allocate big enough buffer */
+       
+       if (user_param.all == ALL && user_param.connection_type!=UD) {
+               /*since we run all sizes */
+               printf("test\n");
                size = 8388608; /*2^23 */
+       } else if (user_param.connection_type==UD ) {
+               printf("Max msg size in UD is 2048 changing to 2048\n");
+               size = 2048;
        }
+       
        srand(GetCurrentProcessId() * GetTickCount());
 
        //TODO: get pagesize from sysinfo
@@ -1034,7 +1035,7 @@ int __cdecl main(int argc, char *argv[])
        if (!ctx)
                return 8;
 
-       sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&rem_dest,&user_param);
+       sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&my_dest,&rem_dest,&user_param);
        if (sockfd == INVALID_SOCKET)
                return 9;
 
index 3bee990..951975c 100644 (file)
@@ -383,7 +383,8 @@ static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
 }
 
 static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername,
-                       int ib_port, int port, struct pingpong_dest **p_rem_dest,struct user_parameters *user_parm)
+                       int ib_port, int port, struct pingpong_dest **p_my_dest,
+                       struct pingpong_dest **p_rem_dest,struct user_parameters *user_parm)
 {
        struct pingpong_dest    *my_dest;
        struct pingpong_dest    *rem_dest;
@@ -434,7 +435,7 @@ static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername
                my_dest[i].rkey = ctx->rkey;
                my_dest[i].vaddr = (uintptr_t)ctx->buf + ctx->size;
 
-               printf("  local address:  LID %#04x, QPN %#06x, PSN %#06x "
+               printf("  local address:  LID %#04x, QPN %#06x, PSN %#06x, "
                "RKey %#08x VAddr %#016Lx\n",
                my_dest[i].lid, my_dest[i].qpn, my_dest[i].psn,
                my_dest[i].rkey, my_dest[i].vaddr);
@@ -458,6 +459,7 @@ static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername
                        return INVALID_SOCKET;
        }
        *p_rem_dest = rem_dest;
+       *p_my_dest = my_dest;
        return sockfd;
 }
 
@@ -585,7 +587,7 @@ int run_iter(struct pingpong_context *ctx, struct user_parameters *user_param,
                                }
                                ctx->scnt[index]= ctx->scnt[index]+1;
                                ++scnt;
-//printf("scnt = %d \n",scnt);
+                               PERF_DEBUG("scnt = %d \n",scnt);
                        }
 
                }
@@ -615,7 +617,7 @@ int run_iter(struct pingpong_context *ctx, struct user_parameters *user_param,
                                        /*here the id is the index to the qp num */
                                        ctx->ccnt[(int)wc.wr_id] = ctx->ccnt[(int)wc.wr_id]+1;
                                        ++ccnt;
-//printf("ccnt = %d \n",ccnt);
+                                       PERF_DEBUG("ccnt = %d \n",ccnt);
                                        p_wc_free = p_wc_done;
                                        p_wc_free->p_next = NULL;
                                        p_wc_done = NULL;
@@ -640,7 +642,7 @@ int run_iter(struct pingpong_context *ctx, struct user_parameters *user_param,
 int __cdecl main(int argc, char *argv[])
 {
        struct pingpong_context *ctx;
-       struct pingpong_dest     my_dest;
+       struct pingpong_dest     *my_dest;
        struct pingpong_dest     *rem_dest;
        struct user_parameters  user_param;
        char                            *ib_devname = NULL;
@@ -817,7 +819,7 @@ int __cdecl main(int argc, char *argv[])
        if (!ctx)
                return 1;
 
-       sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&rem_dest,&user_param);
+       sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&my_dest,&rem_dest,&user_param);
        if (sockfd == INVALID_SOCKET)
                return 9;
        
@@ -827,7 +829,7 @@ int __cdecl main(int argc, char *argv[])
        /* For half duplex tests, server just waits for client to exit */
        /* use dummy my_dest struct*/
        if (!user_param.servername && !duplex) {
-               pp_server_exch_dest(sockfd, &my_dest,rem_dest);
+               pp_server_exch_dest(sockfd, my_dest,rem_dest);
                send(sockfd, "done", sizeof "done",0);
                closesocket(sockfd);
                return 0;
@@ -863,9 +865,9 @@ int __cdecl main(int argc, char *argv[])
 
        /* use dummy my_dest struct*/
        if (user_param.servername) {
-               pp_client_exch_dest(sockfd, &my_dest,rem_dest);
+               pp_client_exch_dest(sockfd, my_dest,rem_dest);
        } else {
-               pp_server_exch_dest(sockfd, &my_dest,rem_dest);
+               pp_server_exch_dest(sockfd, my_dest,rem_dest);
        }
        send(sockfd, "done", sizeof "done",0);
        closesocket(sockfd);
index 85921e3..fe1c128 100644 (file)
@@ -388,7 +388,8 @@ static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
 
 
 static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername,
-                       int ib_port, int port, struct pingpong_dest **p_rem_dest,struct user_parameters *user_parm)
+                       int ib_port, int port, struct pingpong_dest **p_my_dest,
+                       struct pingpong_dest **p_rem_dest,struct user_parameters *user_parm)
 {
        struct pingpong_dest    *my_dest;
        struct pingpong_dest    *rem_dest;
@@ -439,7 +440,7 @@ static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername
                my_dest[i].rkey = ctx->rkey;
                my_dest[i].vaddr = (uintptr_t)ctx->buf + ctx->size;
 
-               printf("  local address:  LID %#04x, QPN %#06x, PSN %#06x "
+               printf("  local address:  LID %#04x, QPN %#06x, PSN %#06x, "
                "RKey %#08x VAddr %#016Lx\n",
                my_dest[i].lid, my_dest[i].qpn, my_dest[i].psn,
                my_dest[i].rkey, my_dest[i].vaddr);
@@ -463,6 +464,7 @@ static SOCKET pp_open_port(struct pingpong_context *ctx, const char * servername
                        return INVALID_SOCKET;
        }
        *p_rem_dest = rem_dest;
+       *p_my_dest = my_dest;
        return sockfd;
 }
 
@@ -648,7 +650,7 @@ int run_iter(struct pingpong_context *ctx, struct user_parameters *user_param,
 
                        ++ccnt;
                }
-//printf("ccnt = %d \n",ccnt);
+               PERF_DEBUG("ccnt = %d \n",ccnt);
        }
        return(0);
 }
@@ -665,6 +667,7 @@ int __cdecl main(int argc, char *argv[])
 
 
        struct pingpong_context *ctx;
+       struct pingpong_dest     *my_dest;
        struct pingpong_dest     *rem_dest;
        struct user_parameters  user_param;
        char                            *ib_devname = NULL;
@@ -836,7 +839,7 @@ int __cdecl main(int argc, char *argv[])
        ctx = pp_init_ctx( size, ib_port,&user_param);
        if (!ctx)
                return 8;
-       sockfd = pp_open_port(ctx, user_param.servername, ib_port, port, &rem_dest,&user_param);
+       sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&my_dest,&rem_dest,&user_param);
        if (sockfd == INVALID_SOCKET)
                return 9;
        printf("------------------------------------------------------------------\n");