]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[tools][perftests] Added a -d <guid> option to the tests to enable choosing a device...
authorTzachi Dar <tzachid@mellanox.co.il>
Wed, 24 Nov 2010 11:19:05 +0000 (11:19 +0000)
committerTzachi Dar <tzachid@mellanox.co.il>
Wed, 24 Nov 2010 11:19:05 +0000 (11:19 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1@3003 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 files changed:
trunk/tools/perftests/user/read_bw/SOURCES
trunk/tools/perftests/user/read_bw/read_bw.c
trunk/tools/perftests/user/read_lat/SOURCES
trunk/tools/perftests/user/read_lat/read_lat.c
trunk/tools/perftests/user/send_bw/SOURCES
trunk/tools/perftests/user/send_bw/send_bw.c
trunk/tools/perftests/user/send_lat/SOURCES
trunk/tools/perftests/user/send_lat/send_lat.c
trunk/tools/perftests/user/write_bw/SOURCES
trunk/tools/perftests/user/write_bw/write_bw.c
trunk/tools/perftests/user/write_lat/SOURCES
trunk/tools/perftests/user/write_lat/write_lat.c

index 3edb8ece3785f16b644de9ebed246208332322de..8c8e743e962f073b546ae63c08d1c770e80bc291 100644 (file)
@@ -11,7 +11,7 @@ SOURCES=read_bw.rc \
        ..\perf_utils.c \\r
        read_bw.c \r
 \r
-INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user\r
+INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\..\hw\mlx4\user\hca;..\..\..\..\inc\complib\r
 \r
 RCOPTIONS=/I..\..\win\include\r
 \r
index dff24417370c0d142536efc19c23da66689f741f..b2026a0ec2e2e7608a2f007e4dd8f408edd0cde2 100644 (file)
@@ -37,6 +37,7 @@
 #include "getopt.h"
 #include "perf_defs.h"
 #include "get_clock.h"
+#include "l2w.h"
 
 struct user_parameters {
        const char              *servername;
@@ -64,13 +65,14 @@ pp_cq_comp_cb(
        return ;
 }
 
-static struct pingpong_context *pp_init_ctx(unsigned size,int port, struct user_parameters *user_parm)
+static struct pingpong_context *pp_init_ctx(unsigned size,int port, struct user_parameters *user_parm, char* ib_devguid)
 {
 
        struct pingpong_context *ctx;
        ib_api_status_t                         ib_status = IB_SUCCESS; 
        size_t                                  guid_count;
        ib_net64_t                              *ca_guid_array;
+       int                                     guid_index = 0;
 
 
        ctx = malloc(sizeof *ctx);
@@ -145,7 +147,28 @@ static struct pingpong_context *pp_init_ctx(unsigned size,int port, struct user_
         * Open only the first HCA
         */
        /* Open the CA */
-       ib_status = ib_open_ca(ctx->al ,ca_guid_array[0] ,NULL,
+       if (ib_devguid) 
+       {
+               unsigned int i = 0;
+               guid_index = -1;
+               for (i = 0; i < guid_count; i++)
+               {
+                       char curr_dev[20];
+                       sprintf(curr_dev, "0x%016I64x", ntohll(ca_guid_array[i]));
+                       if (!_stricmp(ib_devguid, curr_dev))
+                       {
+                               guid_index = i;
+                               break;
+                       }
+               }
+               if (guid_index == -1)
+               {
+                       fprintf(stderr,"device with guid %s was not found\n", ib_devguid);
+                       return NULL;
+               }
+       }
+       
+       ib_status = ib_open_ca(ctx->al ,ca_guid_array[guid_index] ,NULL,
                NULL,   //ca_context
                &ctx->ca);
 
@@ -445,6 +468,7 @@ static void usage(const char *argv0)
        printf("\n");
        printf("Options:\n");
        printf("  -p, --port=<port>      listen on/connect to port <port> (default 18515)\n");
+       printf("  -d, --ib-dev=<dev>        use IB device <device guid> (default first device found)\n");
        printf("  -i, --ib-port=<port>   use port <port> of IB device (default 1)\n");
        printf("  -m, --mtu=<mtu>        mtu size (default 1024)\n");
        printf("  -o, --outs=<num>       num of outstanding read/atom(default 4)\n");
@@ -582,7 +606,7 @@ int __cdecl main(int argc, char *argv[])
        struct pingpong_dest     *my_dest;
        struct pingpong_dest     *rem_dest;
        struct user_parameters  user_param;
-       char                            *ib_devname = NULL;
+       char                            *ib_devguid = NULL;
        int                             port = 18515;
        int                             ib_port = 1;
        unsigned                        size = 65536;
@@ -592,6 +616,9 @@ int __cdecl main(int argc, char *argv[])
        int                             i = 0;
        int                             duplex = 0;
 
+       SYSTEM_INFO si;
+       GetSystemInfo(&si);
+
        /* init default values to user's parameters */
        memset(&user_param, 0, sizeof(struct user_parameters));
        user_param.mtu = 0; /* signal choose default by device */
@@ -632,7 +659,7 @@ int __cdecl main(int argc, char *argv[])
                        break;
 
                case 'd':
-                       ib_devname = _strdup(optarg);
+                       ib_devguid = _strdup(optarg);
                        break;
                case 'm':
                        user_param.mtu = strtol(optarg, NULL, 0);
@@ -717,13 +744,9 @@ int __cdecl main(int argc, char *argv[])
        
        srand(GetCurrentProcessId() * GetTickCount());
 
-       //TODO: get pagesize from sysinfo
-       page_size = 4096;
-
-       //TODO:get the device names
-
+       page_size = si.dwPageSize;
 
-       ctx = pp_init_ctx(size,ib_port, &user_param);
+       ctx = pp_init_ctx(size,ib_port, &user_param, ib_devguid);
        if (!ctx)
                return 8;
 
index 554d870763a948e35e4fba44b3eb222b8774ac09..57c69264fd3976fd7937b50f69c2f00e63f6edf6 100644 (file)
@@ -11,7 +11,7 @@ SOURCES=read_lat.rc \
        ..\perf_utils.c \\r
        read_lat.c \r
 \r
-INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user\r
+INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\..\hw\mlx4\user\hca;..\..\..\..\inc\complib\r
 \r
 RCOPTIONS=/I..\..\win\include\r
 \r
index 0c15f83c97982ce03d2334e296b1ec92b036d9dc..be0cb99a9628e226030af6572877b58b6b3fd1f8 100644 (file)
@@ -38,6 +38,7 @@
 #include "getopt.h"
 #include "perf_defs.h"
 #include "get_clock.h"
+#include "l2w.h"
 
 
 
@@ -68,7 +69,7 @@ pp_cq_comp_cb(
        return ;
 }
 
-static struct pingpong_context *pp_init_ctx(unsigned size,int port, struct user_parameters *user_parm)
+static struct pingpong_context *pp_init_ctx(unsigned size,int port, struct user_parameters *user_parm, char* ib_devguid)
 {
 
 
@@ -76,6 +77,7 @@ static struct pingpong_context *pp_init_ctx(unsigned size,int port, struct user_
        ib_api_status_t                         ib_status = IB_SUCCESS; 
        size_t                                  guid_count;
        ib_net64_t                              *ca_guid_array;
+       int                                             guid_index = 0;
 
 
        ctx = malloc(sizeof *ctx);
@@ -149,7 +151,28 @@ static struct pingpong_context *pp_init_ctx(unsigned size,int port, struct user_
         * Open only the first HCA
         */
        /* Open the CA */
-       ib_status = ib_open_ca(ctx->al ,ca_guid_array[0] ,NULL,
+       if (ib_devguid) 
+       {
+               unsigned int i = 0;
+               guid_index = -1;
+               for (i = 0; i < guid_count; i++)
+               {
+                       char curr_dev[20];
+                       sprintf(curr_dev, "0x%016I64x", ntohll(ca_guid_array[i]));
+                       if (!_stricmp(ib_devguid, curr_dev))
+                       {
+                               guid_index = i;
+                               break;
+                       }
+               }
+               if (guid_index == -1)
+               {
+                       fprintf(stderr,"device with guid %s was not found\n", ib_devguid);
+                       return NULL;
+               }
+       }
+       
+       ib_status = ib_open_ca(ctx->al ,ca_guid_array[guid_index] ,NULL,
                NULL,   //ca_context
                &ctx->ca);
 
@@ -456,6 +479,7 @@ static void usage(const char *argv0)
        printf("\n");
        printf("Options:\n");
        printf("  -p, --port=<port>            listen on/connect to port <port> (default 18515)\n");
+       printf("  -d, --ib-dev=<dev>           use IB device <device guid> (default first device found)\n");
        printf("  -m, --mtu=<mtu>              mtu size (default 256)\n");
        printf("  -i, --ib-port=<port>         use port <port> of IB device (default 1)\n");
        printf("  -s, --size=<size>            size of message to exchange (default 1)\n");
@@ -598,7 +622,7 @@ int __cdecl main(int argc, char *argv[])
        struct pingpong_dest     *my_dest;
        struct pingpong_dest     *rem_dest;
        struct user_parameters  user_param;
-       char                            *ib_devname = NULL;
+       char                            *ib_devguid = NULL;
        int                             port = 18515;
        int                             ib_port = 1;
        unsigned                        tmp_size,size = 2;
@@ -608,6 +632,8 @@ int __cdecl main(int argc, char *argv[])
        int                             i = 0;
        struct report_options    report = {0};
 
+       SYSTEM_INFO si;
+       GetSystemInfo(&si);
 
        /* init default values to user's parameters */
        memset(&user_param, 0, sizeof(struct user_parameters));
@@ -665,7 +691,7 @@ int __cdecl main(int argc, char *argv[])
                        return 0;
                        break;
                case 'd':
-                       ib_devname = _strdup(optarg);
+                       ib_devguid = _strdup(optarg);
                        break;
 
                case 'i':
@@ -755,13 +781,9 @@ int __cdecl main(int argc, char *argv[])
        
        srand(GetCurrentProcessId() * GetTickCount());
 
-       //TODO: get pagesize from sysinfo
-       page_size = 4096;
-
-       //TODO:get the device names
-
+       page_size = si.dwPageSize;
 
-       ctx = pp_init_ctx(size,ib_port, &user_param);
+       ctx = pp_init_ctx(size,ib_port, &user_param, ib_devguid);
        if (!ctx)
                return 8;
 
index 274106a1bf653473da7ba3d7b769f465041199fe..5db21b6200bdac419aabd80b577f65faf9437662 100644 (file)
@@ -11,7 +11,7 @@ SOURCES=send_bw.rc \
        ..\perf_utils.c \\r
        send_bw.c \r
 \r
-INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user\r
+INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\..\hw\mlx4\user\hca;..\..\..\..\inc\complib\r
 \r
 RCOPTIONS=/I..\..\win\include\r
 \r
index 955441a3bc7830f3bdd8f18fda74493d38d272da..7b7e7f5a830450673265855df7dc4a86cd916ccd 100644 (file)
@@ -38,6 +38,7 @@
 #include "get_clock.h"
 
 #include "perf_defs.h"
+#include "l2w.h"
 
 #define SIGNAL 1
 #define MAX_INLINE 400
@@ -74,13 +75,14 @@ pp_cq_comp_cb(
 
 
 static struct pingpong_context *pp_init_ctx(unsigned size,int port, 
-                                       struct user_parameters *user_parm)
+                                       struct user_parameters *user_parm, char* ib_devguid)
 {
 
        struct pingpong_context *ctx;
        ib_api_status_t                         ib_status = IB_SUCCESS; 
        size_t                                  guid_count;
        ib_net64_t                              *ca_guid_array;
+       int                                     guid_index = 0;
 
 
        
@@ -159,7 +161,28 @@ static struct pingpong_context *pp_init_ctx(unsigned size,int port,
         * Open only the first HCA
         */
        /* Open the CA */
-       ib_status = ib_open_ca(ctx->al ,ca_guid_array[0] ,NULL,
+       if (ib_devguid) 
+       {
+               unsigned int i = 0;
+               guid_index = -1;
+               for (i = 0; i < guid_count; i++)
+               {
+                       char curr_dev[20];
+                       sprintf(curr_dev, "0x%016I64x", ntohll(ca_guid_array[i]));
+                       if (!_stricmp(ib_devguid, curr_dev))
+                       {
+                               guid_index = i;
+                               break;
+                       }
+               }
+               if (guid_index == -1)
+               {
+                       fprintf(stderr,"device with guid %s was not found\n", ib_devguid);
+                       return NULL;
+               }
+       }
+       
+       ib_status = ib_open_ca(ctx->al ,ca_guid_array[guid_index] ,NULL,
                NULL,   //ca_context
                &ctx->ca);
 
@@ -568,6 +591,7 @@ static void usage(const char *argv0)
        printf("\n");
        printf("Options:\n");
        printf("  -p, --port=<port>         listen on/connect to port <port> (default 18515)\n");
+       printf("  -d, --ib-dev=<dev>        use IB device <device guid> (default first device found)\n");
        printf("  -i, --ib-port=<port>      use port <port> of IB device (default 1)\n");
        printf("  -c, --connection=<RC/UC>  connection type RC/UC/UD (default RC)\n");
        printf("  -m, --mtu=<mtu>           mtu size (default 1024)\n");
@@ -963,7 +987,7 @@ int __cdecl main(int argc, char *argv[])
        struct pingpong_dest            *my_dest;
        struct pingpong_dest            *rem_dest;
        struct user_parameters          user_param;
-       char                            *ib_devname = NULL;
+       char                            *ib_devguid = NULL;
        int                             port = 18515;
        int                             ib_port = 1;
        unsigned                        size = 65536;
@@ -973,6 +997,8 @@ int __cdecl main(int argc, char *argv[])
        WSADATA                         wsaData;
        int                             iResult;
 
+       SYSTEM_INFO si;
+       GetSystemInfo(&si);
 
        /* init default values to user's parameters */
        memset(&user_param, 0, sizeof(struct user_parameters));
@@ -1019,7 +1045,7 @@ int __cdecl main(int argc, char *argv[])
                        ++user_param.use_event;
                        break;
                case 'd':
-                       ib_devname = _strdup(optarg);
+                       ib_devguid = _strdup(optarg);
                        break;
                case 'c':
                        if (strcmp("UC",optarg)==0)
@@ -1126,14 +1152,11 @@ int __cdecl main(int argc, char *argv[])
        
        srand(GetCurrentProcessId() * GetTickCount());
 
-       //TODO: get pagesize from sysinfo
-       page_size = 4096;
+       page_size = si.dwPageSize;
 
-       //TODO:get the device names
-       
 
        // init the context
-       ctx = pp_init_ctx(size, ib_port, &user_param);
+       ctx = pp_init_ctx(size, ib_port, &user_param, ib_devguid);
        if (!ctx)
                return 1;
        
index 86150e1eb34acfd88fdd7d35e9d4966e38a0833a..2fee7490d8de8959feea564d57c2f2b5ff6940e5 100644 (file)
@@ -11,7 +11,7 @@ SOURCES=send_lat.rc \
        ..\perf_utils.c \\r
        send_lat.c \r
 \r
-INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user\r
+INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\..\hw\mlx4\user\hca;..\..\..\..\inc\complib\r
 \r
 RCOPTIONS=/I..\..\win\include\r
 \r
index b0a91362388652a634a68865715f22c61c177237..8931314297df4ab04e7dbdf6293b9255c70d29dd 100644 (file)
@@ -38,6 +38,7 @@
 #include "getopt.h"
 #include "get_clock.h"
 #include "perf_defs.h"
+#include "l2w.h"
 
 
 
@@ -67,12 +68,13 @@ pp_cq_comp_cb(
 }
 
 
-static struct pingpong_context *pp_init_ctx(unsigned int size,int port,struct user_parameters *user_parm) {
+static struct pingpong_context *pp_init_ctx(unsigned int size,int port,struct user_parameters *user_parm, char* ib_devguid) {
 
        struct pingpong_context *ctx;
        ib_api_status_t                         ib_status = IB_SUCCESS; 
        size_t                                  guid_count;
        ib_net64_t                              *ca_guid_array;
+       int                                     guid_index = 0;
 
 
        
@@ -156,7 +158,29 @@ static struct pingpong_context *pp_init_ctx(unsigned int size,int port,struct us
         * Open only the first HCA
         */
        /* Open the CA */
-       ib_status = ib_open_ca(ctx->al ,ca_guid_array[0] ,NULL,
+       if (ib_devguid) 
+       {
+               unsigned int i = 0;
+               guid_index = -1;
+               for (i = 0; i < guid_count; i++)
+               {
+                       char curr_dev[20];
+                       sprintf(curr_dev, "0x%016I64x", ntohll(ca_guid_array[i]));
+                       if (!_stricmp(ib_devguid, curr_dev))
+                       {
+                               guid_index = i;
+                               break;
+                       }
+               }
+               if (guid_index == -1)
+               {
+                       fprintf(stderr,"device with guid %s was not found\n", ib_devguid);
+                       return NULL;
+               }
+       }
+
+       
+       ib_status = ib_open_ca(ctx->al ,ca_guid_array[guid_index] ,NULL,
                NULL,   //ca_context
                &ctx->ca);
 
@@ -536,6 +560,7 @@ static void usage(const char *argv0)
        printf("\n");
        printf("Options:\n");
        printf("  -p, --port=<port>            listen on/connect to port <port> (default 18515)\n");
+       printf("  -d, --ib-dev=<dev>           use IB device <device guid> (default first device found)\n");
        printf("  -c, --connection=<RC/UC>     connection type RC/UC (default RC)\n");
        printf("  -m, --mtu=<mtu>              mtu size (default 2048)\n");
        printf("  -i, --ib-port=<port>         use port <port> of IB device (default 1)\n");
@@ -793,7 +818,7 @@ int __cdecl main(int argc, char *argv[])
        struct pingpong_dest     *my_dest;
        struct pingpong_dest     *rem_dest;
        struct user_parameters  user_param;
-       char                            *ib_devname = NULL;
+       char                            *ib_devguid = NULL;
        int                             port = 18515;
        int                             ib_port = 1;
        unsigned                        size = 2;
@@ -806,6 +831,9 @@ int __cdecl main(int argc, char *argv[])
 
        struct report_options    report = {0};
 
+       SYSTEM_INFO si;
+       GetSystemInfo(&si);
+
        /* init default values to user's parameters */
        memset(&user_param, 0, sizeof(struct user_parameters));
        user_param.mtu = 0;
@@ -867,7 +895,7 @@ int __cdecl main(int argc, char *argv[])
                        return 0;
                        break;
                case 'd':
-                       ib_devname = _strdup(optarg);
+                       ib_devguid = _strdup(optarg);
                        break;
 
                case 'i':
@@ -967,12 +995,9 @@ int __cdecl main(int argc, char *argv[])
        
        srand(GetCurrentProcessId() * GetTickCount());
 
-       //TODO: get pagesize from sysinfo
-       page_size = 4096;
-
-       //TODO  get the device names
+       page_size = si.dwPageSize;
        
-       ctx = pp_init_ctx( size, ib_port,&user_param);
+       ctx = pp_init_ctx( size, ib_port,&user_param, ib_devguid);
        if (!ctx)
                return 8;
 
index 4e9a6794a18f1cffdd08cf476fffafa370532164..08c69a602e1ce36b0db1fcfbaae5778292d4e3cd 100644 (file)
@@ -11,7 +11,7 @@ SOURCES=write_bw.rc \
        ..\perf_utils.c \\r
        write_bw.c \r
 \r
-INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user\r
+INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\..\hw\mlx4\user\hca;..\..\..\..\inc\complib\r
 \r
 RCOPTIONS=/I..\..\win\include\r
 \r
index ef2d235ef0ef3af5371fee3007229d9b6c272e87..ae28bbc7ecbc36deee5ae4deb2b16604dc0fded8 100644 (file)
  * $Id$
  */
  
+
 #include "getopt.h"
 #include "perf_defs.h"
 #include "get_clock.h"
-
-
+#include "l2w.h"
 
 struct user_parameters {
        const char              *servername;
@@ -66,7 +66,7 @@ pp_cq_comp_cb(
        UNUSED_PARAM( cq_context);
        return ;
 }
-static struct pingpong_context *pp_init_ctx(unsigned size, int port, struct user_parameters *user_parm)
+static struct pingpong_context *pp_init_ctx(unsigned size, int port, struct user_parameters *user_parm, char* ib_devguid)
 {
 
        struct pingpong_context *ctx;
@@ -74,6 +74,7 @@ static struct pingpong_context *pp_init_ctx(unsigned size, int port, struct user
        size_t                                  guid_count;
        ib_net64_t                              *ca_guid_array;
        int                                             counter;
+       int                                     guid_index = 0;
 
        ctx = malloc(sizeof *ctx);
        if (!ctx){
@@ -159,7 +160,28 @@ static struct pingpong_context *pp_init_ctx(unsigned size, int port, struct user
         * Open only the first HCA
         */
        /* Open the CA */
-       ib_status = ib_open_ca(ctx->al ,ca_guid_array[0] ,NULL,
+       if (ib_devguid) 
+       {
+               unsigned int i = 0;
+               guid_index = -1;
+               for (i = 0; i < guid_count; i++)
+               {
+                       char curr_dev[20];
+                       sprintf(curr_dev, "0x%016I64x", ntohll(ca_guid_array[i]));
+                       if (!_stricmp(ib_devguid, curr_dev))
+                       {
+                               guid_index = i;
+                               break;
+                       }
+               }
+               if (guid_index == -1)
+               {
+                       fprintf(stderr,"device with guid %s was not found\n", ib_devguid);
+                       return NULL;
+               }
+       }
+       
+       ib_status = ib_open_ca(ctx->al ,ca_guid_array[guid_index] ,NULL,
                NULL,   //ca_context
                &ctx->ca);
 
@@ -476,6 +498,7 @@ static void usage(const char *argv0)
        printf("\n");
        printf("Options:\n");
        printf("  -p, --port=<port>         listen on/connect to port <port> (default 18515)\n");
+       printf("  -d, --ib-dev=<dev>        use IB device <device guid> (default first device found)\n");
        printf("  -i, --ib-port=<port>      use port <port> of IB device (default 1)\n");
        printf("  -c, --connection=<RC/UC>  connection type RC/UC (default RC)\n");
        printf("  -m, --mtu=<mtu>           mtu size (default 1024)\n");
@@ -650,7 +673,7 @@ int __cdecl main(int argc, char *argv[])
        struct pingpong_dest     *my_dest;
        struct pingpong_dest     *rem_dest;
        struct user_parameters  user_param;
-       char                            *ib_devname = NULL;
+       char                            *ib_devguid = NULL;
        int                             port = 18515;
        int                             ib_port = 1;
        unsigned                        size = 65536;
@@ -661,6 +684,9 @@ int __cdecl main(int argc, char *argv[])
        int                             duplex = 0;
 
 
+       SYSTEM_INFO si;
+       GetSystemInfo(&si);
+       
        /* init default values to user's parameters */
        memset(&user_param, 0, sizeof(struct user_parameters));
        user_param.mtu = 0;
@@ -705,7 +731,7 @@ int __cdecl main(int argc, char *argv[])
                        break;
 
                case 'd':
-                       ib_devname = _strdup(optarg);
+                       ib_devguid = _strdup(optarg);
                        break;
                case 'c':
                        if (strcmp("UC",optarg)==0)
@@ -814,13 +840,9 @@ int __cdecl main(int argc, char *argv[])
        }
        srand(GetCurrentProcessId() * GetTickCount());
 
-       //TODO: get pagesize from sysinfo
-       page_size = 4096;
-
-       //TODO  get the device names
-
-
-       ctx = pp_init_ctx(size, ib_port, &user_param);
+       page_size = si.dwPageSize;
+       
+       ctx = pp_init_ctx(size, ib_port, &user_param, ib_devguid);
        if (!ctx)
                return 8;
        sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&my_dest,&rem_dest,&user_param);
index 77075732060368e767e70b4119820f37cd31a777..3b7a991f86233481e9211c04cf01c208db8f6b0a 100644 (file)
@@ -11,7 +11,7 @@ SOURCES=write_lat.rc \
        ..\perf_utils.c \\r
        write_lat.c \r
 \r
-INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user\r
+INCLUDES=..;..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\..\hw\mlx4\user\hca;..\..\..\..\inc\complib\r
 \r
 RCOPTIONS=/I..\..\win\include\r
 \r
index 5eb21afff1537142b99f535c4dcb7b1a2463ab4e..cbbef9bf15c86f0d4ba240203953e03f1ee8a315 100644 (file)
@@ -38,6 +38,7 @@
 #include "getopt.h"
 #include "perf_defs.h"
 #include "get_clock.h"
+#include "l2w.h"
 
 
 
@@ -68,7 +69,7 @@ pp_cq_comp_cb(
 }
 
 
-static struct pingpong_context *pp_init_ctx(unsigned size, int port, struct user_parameters *user_parm)
+static struct pingpong_context *pp_init_ctx(unsigned size, int port, struct user_parameters *user_parm, char* ib_devguid)
 {
 
 
@@ -76,6 +77,7 @@ static struct pingpong_context *pp_init_ctx(unsigned size, int port, struct user
        ib_api_status_t                         ib_status = IB_SUCCESS; 
        size_t                                  guid_count;
        ib_net64_t                              *ca_guid_array;
+       int                                             guid_index = 0;
 
        ctx = malloc(sizeof *ctx);
        if (!ctx){
@@ -150,7 +152,28 @@ static struct pingpong_context *pp_init_ctx(unsigned size, int port, struct user
         * Open only the first HCA
         */
        /* Open the CA */
-       ib_status = ib_open_ca(ctx->al ,ca_guid_array[0] ,NULL,
+       if (ib_devguid) 
+       {
+               unsigned int i = 0;
+               guid_index = -1;
+               for (i = 0; i < guid_count; i++)
+               {
+                       char curr_dev[20];
+                       sprintf(curr_dev, "0x%016I64x", ntohll(ca_guid_array[i]));
+                       if (!_stricmp(ib_devguid, curr_dev))
+                       {
+                               guid_index = i;
+                               break;
+                       }
+               }
+               if (guid_index == -1)
+               {
+                       fprintf(stderr,"device with guid %s was not found\n", ib_devguid);
+                       return NULL;
+               }
+       }
+       
+       ib_status = ib_open_ca(ctx->al ,ca_guid_array[guid_index] ,NULL,
                NULL,   //ca_context
                &ctx->ca);
 
@@ -465,6 +488,7 @@ static void usage(const char *argv0)
        printf("\n");
        printf("Options:\n");
        printf("  -p, --port=<port>            listen on/connect to port <port> (default 18515)\n");
+       printf("  -d, --ib-dev=<dev>        use IB device <device guid> (default first device found)\n");
        printf("  -c, --connection=<RC/UC>     connection type RC/UC (default RC)\n");
        printf("  -m, --mtu=<mtu>              mtu size (default 1024)\n");
        printf("  -i, --ib-port=<port>         use port <port> of IB device (default 1)\n");
@@ -647,7 +671,7 @@ int __cdecl main(int argc, char *argv[])
        struct pingpong_dest     *my_dest;
        struct pingpong_dest     *rem_dest;
        struct user_parameters  user_param;
-       char                            *ib_devname = NULL;
+       char                            *ib_devguid = NULL;
        int                             port = 18515;
        int                             ib_port = 1;
        unsigned                        size = 2;
@@ -657,6 +681,8 @@ int __cdecl main(int argc, char *argv[])
        int                             iResult; 
        struct report_options    report = {0};
 
+       SYSTEM_INFO si;
+       GetSystemInfo(&si);
 
        /* init default values to user's parameters */
        memset(&user_param, 0, sizeof(struct user_parameters));
@@ -715,7 +741,7 @@ int __cdecl main(int argc, char *argv[])
                        return 0;
                        break;
                case 'd':
-                       ib_devname = _strdup(optarg);
+                       ib_devguid = _strdup(optarg);
                        break;
 
                case 'i':
@@ -811,13 +837,9 @@ int __cdecl main(int argc, char *argv[])
        }
        srand(GetCurrentProcessId() * GetTickCount());
 
-       //TODO: get pagesize from sysinfo
-       page_size = 4096;
+       page_size = si.dwPageSize;
 
-       //TODO  get the device names
-       
-
-       ctx = pp_init_ctx( size, ib_port,&user_param);
+       ctx = pp_init_ctx( size, ib_port,&user_param, ib_devguid);
        if (!ctx)
                return 8;
        sockfd = pp_open_port(ctx, user_param.servername, ib_port, port,&my_dest,&rem_dest,&user_param);
@@ -846,4 +868,4 @@ int __cdecl main(int argc, char *argv[])
        printf("------------------------------------------------------------------\n");
        free(tstamp);
        return 0;
-}
+}
\ No newline at end of file