Version: 1
-Previous: afafba732859f940882daad1986be06baf671abd
-Head: c9080416cc1467c3f9a40cb084770427dc2e42c2
+Previous: ca6defd93e432d1a5b4ddb8a9ca70856c6693805
+Head: 5d9c00f61b6a333df3df627ab2c76ad514d6e1d8
Applied:
dsocket: 320986faa492c17e8858885798b9da8afaad7551
- udpong: a075a129f6df8781dd567e78229790071bc86139
- refresh-temp: c9080416cc1467c3f9a40cb084770427dc2e42c2
+ udpong: 5d9c00f61b6a333df3df627ab2c76ad514d6e1d8
Unapplied:
test-udp: f6c78ad2a26f452cf166aff1baa7b76160bd8bf7
iom-dbg: 88434072d07f8edc58f454ac954d78bd39441eed
+++ /dev/null
-Bottom: 3855a3afdaa94a3f44bd0f049eea2e89afa14c9a
-Top: 3140a37a0a670a0494c2686793288c824d2df113
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2012-12-10 10:59:43 -0800
-
-Refresh of udpong
-
----
-
-diff --git a/examples/udpong.c b/examples/udpong.c
-index d4f43ac..99bcade 100644
---- a/examples/udpong.c
-+++ b/examples/udpong.c
-@@ -66,7 +66,8 @@ enum {
- struct message {
- uint8_t op;
- uint8_t id;
-- uint16_t reserved;
-+ uint8_t seqno;
-+ uint8_t reserved;
- uint32_t data;
- uint8_t buf[2048];
- };
-@@ -263,6 +264,8 @@ static int svr_bind(void)
- }
-
- set_options(rs);
-+printf("svr bind af %d type %d prot %d port %d\n", res->ai_family, res->ai_socktype, res->ai_protocol,
-+ ((struct sockaddr_in *) res->ai_addr)->sin_port);
- ret = rs_bind(rs, res->ai_addr, res->ai_addrlen);
- if (ret) {
- perror("rbind");
-@@ -331,7 +334,7 @@ static ssize_t client_recv(struct message *msg, size_t size, int timeout)
- return ret;
- }
-
-- ret = rs_recv(rs, msg, size, flags);
-+ ret = rs_recv(rs, msg, size, flags | MSG_DONTWAIT);
- if (ret < 0 && (errno == EWOULDBLOCK || errno == EAGAIN))
- perror("rrecv");
-
-@@ -340,16 +343,19 @@ static ssize_t client_recv(struct message *msg, size_t size, int timeout)
-
- static int client_send_recv(struct message *msg, size_t size)
- {
-+ static uint8_t seqno;
- int ret;
-
-+ msg->seqno = seqno;
- do {
- ret = client_send(msg, size);
- if (ret != size)
- return ret;
-
- ret = client_recv(msg, size, 1);
-- } while (ret <= 0);
-+ } while (ret <= 0 && msg->seqno != seqno);
-
-+ seqno++;
- return ret;
- }
-
-@@ -405,6 +411,8 @@ static int client_connect(void)
- }
-
- set_options(rs);
-+printf("client connect af %d type %d prot %d port %d\n", res->ai_family, res->ai_socktype, res->ai_protocol,
-+ ((struct sockaddr_in *) res->ai_addr)->sin_port);
- ret = rs_connect(rs, res->ai_addr, res->ai_addrlen);
- if (ret) {
- perror("rconnect");
-@@ -430,10 +438,12 @@ static int client_run(void)
- if (!custom) {
- for (i = 0; i < TEST_CNT; i++) {
- init_latency_test(test_size[i]);
-+transfer_count = 10;
- run_test();
- }
- for (i = 0; i < TEST_CNT; i++) {
- init_bandwidth_test(test_size[i]);
-+transfer_count = 10;
- run_test();
- }
- } else {
Bottom: d58bea7ff66215f5a1631dca9de9254822217783
-Top: 3855a3afdaa94a3f44bd0f049eea2e89afa14c9a
+Top: 3140a37a0a670a0494c2686793288c824d2df113
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2012-12-05 15:58:03 -0800
diff --git a/examples/udpong.c b/examples/udpong.c
new file mode 100644
-index 0000000..d4f43ac
+index 0000000..99bcade
--- /dev/null
+++ b/examples/udpong.c
-@@ -0,0 +1,545 @@
+@@ -0,0 +1,555 @@
+/*
+ * Copyright (c) 2012 Intel Corporation. All rights reserved.
+ *
+struct message {
+ uint8_t op;
+ uint8_t id;
-+ uint16_t reserved;
++ uint8_t seqno;
++ uint8_t reserved;
+ uint32_t data;
+ uint8_t buf[2048];
+};
+ }
+
+ set_options(rs);
++printf("svr bind af %d type %d prot %d port %d\n", res->ai_family, res->ai_socktype, res->ai_protocol,
++ ((struct sockaddr_in *) res->ai_addr)->sin_port);
+ ret = rs_bind(rs, res->ai_addr, res->ai_addrlen);
+ if (ret) {
+ perror("rbind");
+ return ret;
+ }
+
-+ ret = rs_recv(rs, msg, size, flags);
++ ret = rs_recv(rs, msg, size, flags | MSG_DONTWAIT);
+ if (ret < 0 && (errno == EWOULDBLOCK || errno == EAGAIN))
+ perror("rrecv");
+
+
+static int client_send_recv(struct message *msg, size_t size)
+{
++ static uint8_t seqno;
+ int ret;
+
++ msg->seqno = seqno;
+ do {
+ ret = client_send(msg, size);
+ if (ret != size)
+ return ret;
+
+ ret = client_recv(msg, size, 1);
-+ } while (ret <= 0);
++ } while (ret <= 0 && msg->seqno != seqno);
+
++ seqno++;
+ return ret;
+}
+
+ }
+
+ set_options(rs);
++printf("client connect af %d type %d prot %d port %d\n", res->ai_family, res->ai_socktype, res->ai_protocol,
++ ((struct sockaddr_in *) res->ai_addr)->sin_port);
+ ret = rs_connect(rs, res->ai_addr, res->ai_addrlen);
+ if (ret) {
+ perror("rconnect");
+ if (!custom) {
+ for (i = 0; i < TEST_CNT; i++) {
+ init_latency_test(test_size[i]);
++transfer_count = 10;
+ run_test();
+ }
+ for (i = 0; i < TEST_CNT; i++) {
+ init_bandwidth_test(test_size[i]);
++transfer_count = 10;
+ run_test();
+ }
+ } else {