aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDotan Barak <dotanb@dev.mellanox.co.il>2007-10-23 14:39:25 +0200
committerRoland Dreier <rolandd@cisco.com>2008-03-19 15:13:37 -0700
commitc606c293e6bbb9ddeb7b6942e5d8b4e461ba133a (patch)
treef036bb79e714d469ad8220f6adb2190d5d73b327
parentbb1ee83169d535a0059a9bf83fedd161e13762f2 (diff)
downloadlibibverbs-c606c293e6bbb9ddeb7b6942e5d8b4e461ba133a.tar.gz
Add command line parameter to set SL for pingpong examples
Add a --sl/-l command line parameter for the pingpong examples to set the SL of the QP/AH. This can be used to test a QoS setup. Signed-off-by: Dotan Barak <dotanb@dev.mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r--examples/rc_pingpong.c23
-rw-r--r--examples/srq_pingpong.c22
-rw-r--r--examples/uc_pingpong.c23
-rw-r--r--examples/ud_pingpong.c20
-rw-r--r--man/ibv_rc_pingpong.19
-rw-r--r--man/ibv_srq_pingpong.17
-rw-r--r--man/ibv_uc_pingpong.17
-rw-r--r--man/ibv_ud_pingpong.17
8 files changed, 81 insertions, 37 deletions
diff --git a/examples/rc_pingpong.c b/examples/rc_pingpong.c
index 81fd4a6..7181914 100644
--- a/examples/rc_pingpong.c
+++ b/examples/rc_pingpong.c
@@ -76,7 +76,8 @@ struct pingpong_dest {
};
static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
- enum ibv_mtu mtu, struct pingpong_dest *dest)
+ enum ibv_mtu mtu, int sl,
+ struct pingpong_dest *dest)
{
struct ibv_qp_attr attr = {
.qp_state = IBV_QPS_RTR,
@@ -88,7 +89,7 @@ static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
.ah_attr = {
.is_global = 0,
.dlid = dest->lid,
- .sl = 0,
+ .sl = sl,
.src_path_bits = 0,
.port_num = port
}
@@ -194,7 +195,8 @@ out:
}
static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
- int ib_port, enum ibv_mtu mtu, int port,
+ int ib_port, enum ibv_mtu mtu,
+ int port, int sl,
const struct pingpong_dest *my_dest)
{
struct addrinfo *res, *t;
@@ -263,7 +265,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
sscanf(msg, "%x:%x:%x", &rem_dest->lid, &rem_dest->qpn, &rem_dest->psn);
- if (pp_connect_ctx(ctx, ib_port, my_dest->psn, mtu, rem_dest)) {
+ if (pp_connect_ctx(ctx, ib_port, my_dest->psn, mtu, sl, rem_dest)) {
fprintf(stderr, "Couldn't connect to remote QP\n");
free(rem_dest);
rem_dest = NULL;
@@ -477,6 +479,7 @@ static void usage(const char *argv0)
printf(" -m, --mtu=<size> path MTU (default 1024)\n");
printf(" -r, --rx-depth=<dep> number of receives to post at a time (default 500)\n");
printf(" -n, --iters=<iters> number of exchanges (default 1000)\n");
+ printf(" -l, --sl=<sl> service level value\n");
printf(" -e, --events sleep on CQ events (default poll)\n");
}
@@ -500,6 +503,7 @@ int main(int argc, char *argv[])
int routs;
int rcnt, scnt;
int num_cq_events = 0;
+ int sl = 0;
srand48(getpid() * time(NULL));
@@ -514,11 +518,12 @@ int main(int argc, char *argv[])
{ .name = "mtu", .has_arg = 1, .val = 'm' },
{ .name = "rx-depth", .has_arg = 1, .val = 'r' },
{ .name = "iters", .has_arg = 1, .val = 'n' },
+ { .name = "sl", .has_arg = 1, .val = 'l' },
{ .name = "events", .has_arg = 0, .val = 'e' },
{ 0 }
};
- c = getopt_long(argc, argv, "p:d:i:s:m:r:n:e", long_options, NULL);
+ c = getopt_long(argc, argv, "p:d:i:s:m:r:n:l:e", long_options, NULL);
if (c == -1)
break;
@@ -562,6 +567,10 @@ int main(int argc, char *argv[])
iters = strtol(optarg, NULL, 0);
break;
+ case 'l':
+ sl = strtol(optarg, NULL, 0);
+ break;
+
case 'e':
++use_event;
break;
@@ -635,7 +644,7 @@ int main(int argc, char *argv[])
if (servername)
rem_dest = pp_client_exch_dest(servername, port, &my_dest);
else
- rem_dest = pp_server_exch_dest(ctx, ib_port, mtu, port, &my_dest);
+ rem_dest = pp_server_exch_dest(ctx, ib_port, mtu, port, sl, &my_dest);
if (!rem_dest)
return 1;
@@ -644,7 +653,7 @@ int main(int argc, char *argv[])
rem_dest->lid, rem_dest->qpn, rem_dest->psn);
if (servername)
- if (pp_connect_ctx(ctx, ib_port, my_dest.psn, mtu, rem_dest))
+ if (pp_connect_ctx(ctx, ib_port, my_dest.psn, mtu, sl, rem_dest))
return 1;
ctx->pending = PINGPONG_RECV_WRID;
diff --git a/examples/srq_pingpong.c b/examples/srq_pingpong.c
index 91fd566..bc869c9 100644
--- a/examples/srq_pingpong.c
+++ b/examples/srq_pingpong.c
@@ -80,7 +80,7 @@ struct pingpong_dest {
};
static int pp_connect_ctx(struct pingpong_context *ctx, int port, enum ibv_mtu mtu,
- const struct pingpong_dest *my_dest,
+ int sl, const struct pingpong_dest *my_dest,
const struct pingpong_dest *dest)
{
int i;
@@ -96,7 +96,7 @@ static int pp_connect_ctx(struct pingpong_context *ctx, int port, enum ibv_mtu m
.ah_attr = {
.is_global = 0,
.dlid = dest[i].lid,
- .sl = 0,
+ .sl = sl,
.src_path_bits = 0,
.port_num = port
}
@@ -216,7 +216,8 @@ out:
}
static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
- int ib_port, enum ibv_mtu mtu, int port,
+ int ib_port, enum ibv_mtu mtu,
+ int port, int sl,
const struct pingpong_dest *my_dest)
{
struct addrinfo *res, *t;
@@ -295,7 +296,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
&rem_dest[i].lid, &rem_dest[i].qpn, &rem_dest[i].psn);
}
- if (pp_connect_ctx(ctx, ib_port, mtu, my_dest, rem_dest)) {
+ if (pp_connect_ctx(ctx, ib_port, mtu, sl, my_dest, rem_dest)) {
fprintf(stderr, "Couldn't connect to remote QP\n");
free(rem_dest);
rem_dest = NULL;
@@ -548,6 +549,7 @@ static void usage(const char *argv0)
printf(" -q, --num-qp=<num> number of QPs to use (default 16)\n");
printf(" -r, --rx-depth=<dep> number of receives to post at a time (default 500)\n");
printf(" -n, --iters=<iters> number of exchanges per QP(default 1000)\n");
+ printf(" -l, --sl=<sl> service level value\n");
printf(" -e, --events sleep on CQ events (default poll)\n");
}
@@ -575,6 +577,7 @@ int main(int argc, char *argv[])
int num_wc;
int i;
int num_cq_events = 0;
+ int sl = 0;
srand48(getpid() * time(NULL));
@@ -590,11 +593,12 @@ int main(int argc, char *argv[])
{ .name = "num-qp", .has_arg = 1, .val = 'q' },
{ .name = "rx-depth", .has_arg = 1, .val = 'r' },
{ .name = "iters", .has_arg = 1, .val = 'n' },
+ { .name = "sl", .has_arg = 1, .val = 'l' },
{ .name = "events", .has_arg = 0, .val = 'e' },
{ 0 }
};
- c = getopt_long(argc, argv, "p:d:i:s:m:q:r:n:e", long_options, NULL);
+ c = getopt_long(argc, argv, "p:d:i:s:m:q:r:n:l:e", long_options, NULL);
if (c == -1)
break;
@@ -643,6 +647,10 @@ int main(int argc, char *argv[])
iters = strtol(optarg, NULL, 0);
break;
+ case 'l':
+ sl = strtol(optarg, NULL, 0);
+ break;
+
case 'e':
++use_event;
break;
@@ -730,7 +738,7 @@ int main(int argc, char *argv[])
if (servername)
rem_dest = pp_client_exch_dest(servername, port, my_dest);
else
- rem_dest = pp_server_exch_dest(ctx, ib_port, mtu, port, my_dest);
+ rem_dest = pp_server_exch_dest(ctx, ib_port, mtu, port, sl, my_dest);
if (!rem_dest)
return 1;
@@ -740,7 +748,7 @@ int main(int argc, char *argv[])
rem_dest[i].lid, rem_dest[i].qpn, rem_dest[i].psn);
if (servername)
- if (pp_connect_ctx(ctx, ib_port, mtu, my_dest, rem_dest))
+ if (pp_connect_ctx(ctx, ib_port, mtu, sl, my_dest, rem_dest))
return 1;
if (servername)
diff --git a/examples/uc_pingpong.c b/examples/uc_pingpong.c
index 32652f5..6135030 100644
--- a/examples/uc_pingpong.c
+++ b/examples/uc_pingpong.c
@@ -76,7 +76,8 @@ struct pingpong_dest {
};
static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
- enum ibv_mtu mtu, struct pingpong_dest *dest)
+ enum ibv_mtu mtu, int sl,
+ struct pingpong_dest *dest)
{
struct ibv_qp_attr attr = {
.qp_state = IBV_QPS_RTR,
@@ -86,7 +87,7 @@ static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
.ah_attr = {
.is_global = 0,
.dlid = dest->lid,
- .sl = 0,
+ .sl = sl,
.src_path_bits = 0,
.port_num = port
}
@@ -182,7 +183,8 @@ out:
}
static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
- int ib_port, enum ibv_mtu mtu, int port,
+ int ib_port, enum ibv_mtu mtu,
+ int port, int sl,
const struct pingpong_dest *my_dest)
{
struct addrinfo *res, *t;
@@ -251,7 +253,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
sscanf(msg, "%x:%x:%x", &rem_dest->lid, &rem_dest->qpn, &rem_dest->psn);
- if (pp_connect_ctx(ctx, ib_port, my_dest->psn, mtu, rem_dest)) {
+ if (pp_connect_ctx(ctx, ib_port, my_dest->psn, mtu, sl, rem_dest)) {
fprintf(stderr, "Couldn't connect to remote QP\n");
free(rem_dest);
rem_dest = NULL;
@@ -465,6 +467,7 @@ static void usage(const char *argv0)
printf(" -m, --mtu=<size> path MTU (default 1024)\n");
printf(" -r, --rx-depth=<dep> number of receives to post at a time (default 500)\n");
printf(" -n, --iters=<iters> number of exchanges (default 1000)\n");
+ printf(" -l, --sl=<sl> service level value\n");
printf(" -e, --events sleep on CQ events (default poll)\n");
}
@@ -488,6 +491,7 @@ int main(int argc, char *argv[])
int routs;
int rcnt, scnt;
int num_cq_events = 0;
+ int sl = 0;
srand48(getpid() * time(NULL));
@@ -502,11 +506,12 @@ int main(int argc, char *argv[])
{ .name = "mtu", .has_arg = 1, .val = 'm' },
{ .name = "rx-depth", .has_arg = 1, .val = 'r' },
{ .name = "iters", .has_arg = 1, .val = 'n' },
+ { .name = "sl", .has_arg = 1, .val = 'l' },
{ .name = "events", .has_arg = 0, .val = 'e' },
{ 0 }
};
- c = getopt_long(argc, argv, "p:d:i:s:m:r:n:e", long_options, NULL);
+ c = getopt_long(argc, argv, "p:d:i:s:m:r:n:l:e", long_options, NULL);
if (c == -1)
break;
@@ -550,6 +555,10 @@ int main(int argc, char *argv[])
iters = strtol(optarg, NULL, 0);
break;
+ case 'l':
+ sl = strtol(optarg, NULL, 0);
+ break;
+
case 'e':
++use_event;
break;
@@ -623,7 +632,7 @@ int main(int argc, char *argv[])
if (servername)
rem_dest = pp_client_exch_dest(servername, port, &my_dest);
else
- rem_dest = pp_server_exch_dest(ctx, ib_port, mtu, port, &my_dest);
+ rem_dest = pp_server_exch_dest(ctx, ib_port, mtu, port, sl, &my_dest);
if (!rem_dest)
return 1;
@@ -632,7 +641,7 @@ int main(int argc, char *argv[])
rem_dest->lid, rem_dest->qpn, rem_dest->psn);
if (servername)
- if (pp_connect_ctx(ctx, ib_port, my_dest.psn, mtu, rem_dest))
+ if (pp_connect_ctx(ctx, ib_port, my_dest.psn, mtu, sl, rem_dest))
return 1;
ctx->pending = PINGPONG_RECV_WRID;
diff --git a/examples/ud_pingpong.c b/examples/ud_pingpong.c
index baf69b7..aaee26c 100644
--- a/examples/ud_pingpong.c
+++ b/examples/ud_pingpong.c
@@ -77,12 +77,12 @@ struct pingpong_dest {
};
static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,
- struct pingpong_dest *dest)
+ int sl, struct pingpong_dest *dest)
{
struct ibv_ah_attr ah_attr = {
.is_global = 0,
.dlid = dest->lid,
- .sl = 0,
+ .sl = sl,
.src_path_bits = 0,
.port_num = port
};
@@ -183,7 +183,7 @@ out:
}
static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
- int ib_port, int port,
+ int ib_port, int port, int sl,
const struct pingpong_dest *my_dest)
{
struct addrinfo *res, *t;
@@ -252,7 +252,7 @@ static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,
sscanf(msg, "%x:%x:%x", &rem_dest->lid, &rem_dest->qpn, &rem_dest->psn);
- if (pp_connect_ctx(ctx, ib_port, my_dest->psn, rem_dest)) {
+ if (pp_connect_ctx(ctx, ib_port, my_dest->psn, sl, rem_dest)) {
fprintf(stderr, "Couldn't connect to remote QP\n");
free(rem_dest);
rem_dest = NULL;
@@ -499,6 +499,7 @@ int main(int argc, char *argv[])
int routs;
int rcnt, scnt;
int num_cq_events = 0;
+ int sl = 0;
srand48(getpid() * time(NULL));
@@ -512,11 +513,12 @@ int main(int argc, char *argv[])
{ .name = "size", .has_arg = 1, .val = 's' },
{ .name = "rx-depth", .has_arg = 1, .val = 'r' },
{ .name = "iters", .has_arg = 1, .val = 'n' },
+ { .name = "sl", .has_arg = 1, .val = 'l' },
{ .name = "events", .has_arg = 0, .val = 'e' },
{ 0 }
};
- c = getopt_long(argc, argv, "p:d:i:s:r:n:e", long_options, NULL);
+ c = getopt_long(argc, argv, "p:d:i:s:r:n:l:e", long_options, NULL);
if (c == -1)
break;
@@ -553,6 +555,10 @@ int main(int argc, char *argv[])
iters = strtol(optarg, NULL, 0);
break;
+ case 'l':
+ sl = strtol(optarg, NULL, 0);
+ break;
+
case 'e':
++use_event;
break;
@@ -626,7 +632,7 @@ int main(int argc, char *argv[])
if (servername)
rem_dest = pp_client_exch_dest(servername, port, &my_dest);
else
- rem_dest = pp_server_exch_dest(ctx, ib_port, port, &my_dest);
+ rem_dest = pp_server_exch_dest(ctx, ib_port, port, sl, &my_dest);
if (!rem_dest)
return 1;
@@ -635,7 +641,7 @@ int main(int argc, char *argv[])
rem_dest->lid, rem_dest->qpn, rem_dest->psn);
if (servername)
- if (pp_connect_ctx(ctx, ib_port, my_dest.psn, rem_dest))
+ if (pp_connect_ctx(ctx, ib_port, my_dest.psn, sl, rem_dest))
return 1;
ctx->pending = PINGPONG_RECV_WRID;
diff --git a/man/ibv_rc_pingpong.1 b/man/ibv_rc_pingpong.1
index e83d635..d213c6f 100644
--- a/man/ibv_rc_pingpong.1
+++ b/man/ibv_rc_pingpong.1
@@ -6,11 +6,11 @@ ibv_rc_pingpong \- simple InfiniBand RC transport test
.SH SYNOPSIS
.B ibv_rc_pingpong
[\-p port] [\-d device] [\-i ib port] [\-s size] [\-r rx depth]
-[\-n iters] [\-e] \fBHOSTNAME\fR
+[\-n iters] [\-l sl] [\-e] \fBHOSTNAME\fR
.B ibv_rc_pingpong
[\-p port] [\-d device] [\-i ib port] [\-s size] [\-r rx depth]
-[\-n iters] [\-e]
+[\-n iters] [\-l sl] [\-e]
.SH DESCRIPTION
.PP
@@ -38,7 +38,10 @@ post \fIDEPTH\fR receives at a time (default 1000)
.TP
\fB\-n\fR, \fB\-\-iters\fR=\fIITERS\fR
perform \fIITERS\fR message exchanges (default 1000)
-.Tp
+.TP
+\fB\-l\fR, \fB\-\-sl\fR=\fISL\fR
+use \fISL\fR as the service level value of the QP (default 0)
+.TP
\fB\-e\fR, \fB\-\-events\fR
sleep while waiting for work completion events (default is to poll for
completions)
diff --git a/man/ibv_srq_pingpong.1 b/man/ibv_srq_pingpong.1
index 3624c6b..d50f70e 100644
--- a/man/ibv_srq_pingpong.1
+++ b/man/ibv_srq_pingpong.1
@@ -6,11 +6,11 @@ ibv_srq_pingpong \- simple InfiniBand shared receive queue test
.SH SYNOPSIS
.B ibv_srq_pingpong
[\-p port] [\-d device] [\-i ib port] [\-s size] [\-q num QPs] [\-r rx depth]
-[\-n iters] [\-e] \fBHOSTNAME\fR
+[\-n iters] [\-l sl] [\-e] \fBHOSTNAME\fR
.B ibv_srq_pingpong
[\-p port] [\-d device] [\-i ib port] [\-s size] [\-q num QPs] [\-r rx depth]
-[\-n iters] [\-e]
+[\-n iters] [\-l sl] [\-e]
.SH DESCRIPTION
.PP
@@ -43,6 +43,9 @@ post \fIDEPTH\fR receives at a time (default 1000)
\fB\-n\fR, \fB\-\-iters\fR=\fIITERS\fR
perform \fIITERS\fR message exchanges (default 1000)
.TP
+\fB\-l\fR, \fB\-\-sl\fR=\fISL\fR
+use \fISL\fR as the service level value of the QPs (default 0)
+.TP
\fB\-e\fR, \fB\-\-events\fR
sleep while waiting for work completion events (default is to poll for
completions)
diff --git a/man/ibv_uc_pingpong.1 b/man/ibv_uc_pingpong.1
index 6b535dc..ec97eb0 100644
--- a/man/ibv_uc_pingpong.1
+++ b/man/ibv_uc_pingpong.1
@@ -6,11 +6,11 @@ ibv_uc_pingpong \- simple InfiniBand UC transport test
.SH SYNOPSIS
.B ibv_uc_pingpong
[\-p port] [\-d device] [\-i ib port] [\-s size] [\-r rx depth]
-[\-n iters] [\-e] \fBHOSTNAME\fR
+[\-n iters] [\-l sl] [\-e] \fBHOSTNAME\fR
.B ibv_uc_pingpong
[\-p port] [\-d device] [\-i ib port] [\-s size] [\-r rx depth]
-[\-n iters] [\-e]
+[\-n iters] [\-l sl] [\-e]
.SH DESCRIPTION
.PP
@@ -39,6 +39,9 @@ post \fIDEPTH\fR receives at a time (default 1000)
\fB\-n\fR, \fB\-\-iters\fR=\fIITERS\fR
perform \fIITERS\fR message exchanges (default 1000)
.TP
+\fB\-l\fR, \fB\-\-sl\fR=\fISL\fR
+use \fISL\fR as the service level value of the QP (default 0)
+.TP
\fB\-e\fR, \fB\-\-events\fR
sleep while waiting for work completion events (default is to poll for
completions)
diff --git a/man/ibv_ud_pingpong.1 b/man/ibv_ud_pingpong.1
index e5c0faa..a05af8d 100644
--- a/man/ibv_ud_pingpong.1
+++ b/man/ibv_ud_pingpong.1
@@ -6,11 +6,11 @@ ibv_ud_pingpong \- simple InfiniBand UD transport test
.SH SYNOPSIS
.B ibv_ud_pingpong
[\-p port] [\-d device] [\-i ib port] [\-s size] [\-r rx depth]
-[\-n iters] [\-e] \fBHOSTNAME\fR
+[\-n iters] [\-l sl] [\-e] \fBHOSTNAME\fR
.B ibv_ud_pingpong
[\-p port] [\-d device] [\-i ib port] [\-s size] [\-r rx depth]
-[\-n iters] [\-e]
+[\-n iters] [\-l sl] [\-e]
.SH DESCRIPTION
.PP
@@ -39,6 +39,9 @@ post \fIDEPTH\fR receives at a time (default 500)
\fB\-n\fR, \fB\-\-iters\fR=\fIITERS\fR
perform \fIITERS\fR message exchanges (default 1000)
.TP
+\fB\-l\fR, \fB\-\-sl\fR=\fISL\fR
+send messages with service level \fISL\fR (default 0)
+.TP
\fB\-e\fR, \fB\-\-events\fR
sleep while waiting for work completion events (default is to poll for
completions)