]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
Refresh of dsocket
authorSean Hefty <sean.hefty@intel.com>
Tue, 11 Dec 2012 22:00:12 +0000 (14:00 -0800)
committerSean Hefty <sean.hefty@intel.com>
Tue, 11 Dec 2012 22:00:12 +0000 (14:00 -0800)
src/rsocket.c

index 7dc5409e31171caeb7365076d6cf90945209bc98..c61d68937608504bc394827584010b384658b0e3 100644 (file)
@@ -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;
        }