]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
Refresh of udpong
authorSean Hefty <sean.hefty@intel.com>
Mon, 10 Dec 2012 18:59:43 +0000 (10:59 -0800)
committerSean Hefty <sean.hefty@intel.com>
Mon, 10 Dec 2012 18:59:43 +0000 (10:59 -0800)
examples/udpong.c

index d4f43ac1416020f05824477002b9aeca68e7f0b7..99bcadeffba3d9507a7cf6626a7da5290171eae2 100644 (file)
@@ -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 {