--- /dev/null
+Bottom: 0a9005e21ff77f266c98c49bb8473c3d295a6c35
+Top: f1822f3bbe2c9b92b5e2ca8b4e5c3cece427c5ff
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-12-11 14:00:12 -0800
+
+Refresh of dsocket
+
+---
+
+diff --git a/src/rsocket.c b/src/rsocket.c
+index 7dc5409..c61d689 100644
+--- a/src/rsocket.c
++++ b/src/rsocket.c
+@@ -386,7 +386,7 @@ static int rs_add_to_svc(struct rsocket *rs)
+
+ pthread_mutex_lock(&mut);
+ if (!svc_cnt) {
+- ret = socketpair(AF_INET, SOCK_STREAM, 0, svc_sock);
++ ret = socketpair(AF_UNIX, SOCK_STREAM, 0, svc_sock);
+ if (ret)
+ goto err1;
+
+@@ -402,7 +402,7 @@ static int rs_add_to_svc(struct rsocket *rs)
+ msg.rs = rs;
+ write(svc_sock[0], &msg, sizeof msg);
+ read(svc_sock[0], &msg, sizeof msg);
+- ret = ERR(msg.status);
++ ret = rdma_seterrno(msg.status);
+ if (ret && !svc_cnt)
+ goto err3;
+
+@@ -1885,8 +1885,7 @@ static void ds_poll_cqs(struct rsocket *rs)
+ struct ibv_wc wc;
+ int ret, cnt;
+
+- qp = rs->qp_list;
+- if (!qp)
++ if (!(qp = rs->qp_list))
+ return;
+
+ do {
+@@ -1935,7 +1934,9 @@ static void ds_req_notify_cqs(struct rsocket *rs)
+ {
+ struct ds_qp *qp;
+
+- qp = rs->qp_list;
++ if (!(qp = rs->qp_list))
++ return;
++
+ do {
+ if (!qp->cq_armed) {
+ ibv_req_notify_cq(qp->cm_id->recv_cq, 0);
+@@ -1953,17 +1954,20 @@ static int ds_get_cq_event(struct rsocket *rs)
+ void *context;
+ int ret;
+
++ printf("%s \n", __func__);
+ if (!rs->cq_armed)
+ return 0;
+
+ ret = epoll_wait(rs->epfd, &event, 1, -1);
++ printf("%s epoll wait ret %d errno %s\n", __func__, ret, strerror(errno));
+ if (ret <= 0)
+ return ret;
+
+ qp = event.data.ptr;
+- ret = ibv_get_cq_event(rs->cm_id->recv_cq_channel, &cq, &context);
++ ret = ibv_get_cq_event(qp->cm_id->recv_cq_channel, &cq, &context);
++ printf("%s get cq event ret %d errno %s\n", __func__, ret, strerror(errno));
+ if (!ret) {
+- ibv_ack_cq_events(rs->cm_id->recv_cq, 1);
++ ibv_ack_cq_events(qp->cm_id->recv_cq, 1);
+ qp->cq_armed = 0;
+ rs->cq_armed = 0;
+ }
+@@ -1979,25 +1983,29 @@ static int ds_process_cqs(struct rsocket *rs, int nonblock, int (*test)(struct r
+ do {
+ ds_poll_cqs(rs);
+ if (test(rs)) {
++ printf("%s test succeeded\n", __func__);
+ ret = 0;
+ break;
+ } else if (nonblock) {
+ ret = ERR(EWOULDBLOCK);
++ printf("%s nonblocking \n", __func__);
+ } else if (!rs->cq_armed) {
++ printf("%s req notify \n", __func__);
+ ds_req_notify_cqs(rs);
+ rs->cq_armed = 1;
+ } else {
+- rs_update_credits(rs);
+ fastlock_acquire(&rs->cq_wait_lock);
+ fastlock_release(&rs->cq_lock);
+
+ ret = ds_get_cq_event(rs);
++ printf("%s get event ret %d %s\n", __func__, ret, strerror(errno));
+ fastlock_release(&rs->cq_wait_lock);
+ fastlock_acquire(&rs->cq_lock);
+ }
+ } while (!ret);
+
+ fastlock_release(&rs->cq_lock);
++ printf("%s ret %d errno %s\n", __func__, ret, strerror(errno));
+ return ret;
+ }
+
+@@ -2009,6 +2017,7 @@ static int ds_get_comp(struct rsocket *rs, int nonblock, int (*test)(struct rsoc
+
+ do {
+ ret = ds_process_cqs(rs, 1, test);
++ printf("%s ret %d errno %s\n", __func__, ret, strerror(errno));
+ if (!ret || nonblock || errno != EWOULDBLOCK)
+ return ret;
+
+@@ -2123,12 +2132,16 @@ static ssize_t ds_recvfrom(struct rsocket *rs, void *buf, size_t len, int flags,
+ struct ds_header *hdr;
+ int ret;
+
++ret = 0;
++ printf("%s \n", __func__);
+ if (!(rs->state & rs_readable))
+ return ERR(EINVAL);
+
+ if (!rs_have_rdata(rs)) {
++ printf("%s need rdata \n", __func__);
+ ret = ds_get_comp(rs, rs_nonblocking(rs, flags),
+ rs_have_rdata);
++ printf("%s ds_get_comp ret %d errno %s\n", __func__, ret, strerror(errno));
+ if (ret)
+ return ret;
+ }