Bottom: b5df9cc04d6e7629ae937bfe9bbc3c7da5193ea0
-Top: fffced6494cfa5fc5f9da5527d93fb7fe504bd86
+Top: d24dd0fae6823a86b3a40de76ff29ff00831ae09
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2012-07-27 10:46:42 -0700
---
diff --git a/src/rsocket.c b/src/rsocket.c
-index 1e391b3..908b00c 100644
+index 1e391b3..b9105a1 100644
--- a/src/rsocket.c
+++ b/src/rsocket.c
@@ -83,12 +83,12 @@ static uint32_t polling_time = 10;
RS_OP_CTRL
};
#define rs_msg_set(op, data) ((op << 29) | (uint32_t) (data))
-@@ -124,12 +124,11 @@ struct rs_conn_data {
+@@ -124,14 +124,6 @@ struct rs_conn_data {
struct rs_sge data_buf;
};
- uint32_t reserved; /* sqe_count; */
- uint32_t length;
- };
-+enum {
-+ RS_WR_RECV,
-+ RS_WR_DATA,
-+ RS_WR_CTRL,
-+ RS_WR_DISCONNECT
- };
-
+-};
+-
#define RS_RECV_WR_ID (~((uint64_t) 0))
-@@ -264,17 +263,6 @@ out:
+
+ /*
+@@ -264,17 +256,6 @@ out:
pthread_mutex_unlock(&mut);
}
static int rs_insert(struct rsocket *rs)
{
pthread_mutex_lock(&mut);
-@@ -772,21 +760,14 @@ int rconnect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -772,21 +753,14 @@ int rconnect(int socket, const struct sockaddr *addr, socklen_t addrlen)
return rs_do_connect(rs);
}
wr.next = NULL;
wr.sg_list = sgl;
wr.num_sge = nsge;
-@@ -803,29 +784,30 @@ static int rs_post_write(struct rsocket *rs, uint64_t wr_id,
+@@ -803,29 +777,30 @@ static int rs_post_write(struct rsocket *rs, uint64_t wr_id,
* Update target SGE before sending data. Otherwise the remote side may
* update the entry before we do.
*/
}
static uint32_t rs_sbuf_left(struct rsocket *rs)
-@@ -856,7 +838,7 @@ static void rs_send_credits(struct rsocket *rs)
+@@ -856,7 +831,7 @@ static void rs_send_credits(struct rsocket *rs)
ibsge.lkey = 0;
ibsge.length = sizeof(sge);
rs_msg_set(RS_OP_SGL, rs->rseq_no + rs->rq_size),
IBV_SEND_INLINE,
rs->remote_sgl.addr +
-@@ -870,7 +852,7 @@ static void rs_send_credits(struct rsocket *rs)
+@@ -870,7 +845,7 @@ static void rs_send_credits(struct rsocket *rs)
if (++rs->remote_sge == rs->remote_sgl.length)
rs->remote_sge = 0;
} else {
rs_msg_set(RS_OP_SGL, rs->rseq_no + rs->rq_size), 0, 0, 0);
}
}
-@@ -891,7 +873,6 @@ static void rs_update_credits(struct rsocket *rs)
+@@ -891,7 +866,6 @@ static void rs_update_credits(struct rsocket *rs)
static int rs_poll_cq(struct rsocket *rs)
{
struct ibv_wc wc;
uint32_t imm_data;
int ret, rcnt = 0;
-@@ -911,7 +892,7 @@ static int rs_poll_cq(struct rsocket *rs)
+@@ -911,7 +885,7 @@ static int rs_poll_cq(struct rsocket *rs)
rs->state = rs_disconnected;
return 0;
} else if (rs_msg_data(imm_data) == RS_CTRL_SHUTDOWN) {
}
break;
default:
-@@ -922,12 +903,19 @@ static int rs_poll_cq(struct rsocket *rs)
+@@ -922,12 +896,19 @@ static int rs_poll_cq(struct rsocket *rs)
break;
}
} else {
}
if (wc.status != IBV_WC_SUCCESS && (rs->state & rs_connected)) {
rs->state = rs_error;
-@@ -1075,9 +1063,9 @@ static int rs_conn_can_send(struct rsocket *rs)
+@@ -1075,9 +1056,9 @@ static int rs_conn_can_send(struct rsocket *rs)
return rs_can_send(rs) || !(rs->state & rs_connect_wr);
}
}
static int rs_have_rdata(struct rsocket *rs)
-@@ -1090,9 +1078,10 @@ static int rs_conn_have_rdata(struct rsocket *rs)
+@@ -1090,9 +1071,10 @@ static int rs_conn_have_rdata(struct rsocket *rs)
return rs_have_rdata(rs) || !(rs->state & rs_connect_rd);
}
}
static ssize_t rs_peek(struct rsocket *rs, void *buf, size_t len)
-@@ -1281,15 +1270,11 @@ ssize_t rsend(int socket, const void *buf, size_t len, int flags)
+@@ -1281,15 +1263,11 @@ ssize_t rsend(int socket, const void *buf, size_t len, int flags)
sge.addr = (uintptr_t) buf;
sge.length = xfer_size;
sge.lkey = 0;
if (xfer_size < rs_sbuf_left(rs))
rs->ssgl[0].addr += xfer_size;
else
-@@ -1300,9 +1285,7 @@ ssize_t rsend(int socket, const void *buf, size_t len, int flags)
+@@ -1300,9 +1278,7 @@ ssize_t rsend(int socket, const void *buf, size_t len, int flags)
rs->ssgl[0].length);
rs->ssgl[1].length = xfer_size - rs->ssgl[0].length;
memcpy(rs->sbuf, buf + rs->ssgl[0].length, rs->ssgl[1].length);
rs->ssgl[0].addr = (uintptr_t) rs->sbuf + rs->ssgl[1].length;
}
if (ret)
-@@ -1395,9 +1378,7 @@ static ssize_t rsendv(int socket, const struct iovec *iov, int iovcnt, int flags
+@@ -1395,9 +1371,7 @@ static ssize_t rsendv(int socket, const struct iovec *iov, int iovcnt, int flags
rs_copy_iov((void *) (uintptr_t) rs->ssgl[0].addr,
&cur_iov, &offset, xfer_size);
rs->ssgl[0].length = xfer_size;
xfer_size <= rs->sq_inline ? IBV_SEND_INLINE : 0);
if (xfer_size < rs_sbuf_left(rs))
rs->ssgl[0].addr += xfer_size;
-@@ -1409,9 +1390,7 @@ static ssize_t rsendv(int socket, const struct iovec *iov, int iovcnt, int flags
+@@ -1409,9 +1383,7 @@ static ssize_t rsendv(int socket, const struct iovec *iov, int iovcnt, int flags
&offset, rs->ssgl[0].length);
rs->ssgl[1].length = xfer_size - rs->ssgl[0].length;
rs_copy_iov(rs->sbuf, &cur_iov, &offset, rs->ssgl[1].length);
xfer_size <= rs->sq_inline ? IBV_SEND_INLINE : 0);
rs->ssgl[0].addr = (uintptr_t) rs->sbuf + rs->ssgl[1].length;
}
-@@ -1724,7 +1703,7 @@ int rshutdown(int socket, int how)
+@@ -1724,7 +1696,7 @@ int rshutdown(int socket, int how)
rs = idm_at(&idm, socket);
if (how == SHUT_RD) {
return 0;
}
-@@ -1734,26 +1713,27 @@ int rshutdown(int socket, int how)
+@@ -1734,26 +1706,27 @@ int rshutdown(int socket, int how)
if (rs->state & rs_connected) {
if (how == SHUT_RDWR) {
ctrl = RS_CTRL_DISCONNECT;