]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh
authorSean Hefty <sean.hefty@intel.com>
Tue, 26 Jun 2012 00:11:41 +0000 (17:11 -0700)
committerSean Hefty <sean.hefty@intel.com>
Tue, 26 Jun 2012 00:11:41 +0000 (17:11 -0700)
meta
patches/refresh-temp [deleted file]
patches/shut_wr

diff --git a/meta b/meta
index f4a806904a6a1d0a9e715edf1bf9f275278d30bb..49dc21851a38bd8bf151cadb6328a256fe727886 100644 (file)
--- a/meta
+++ b/meta
@@ -1,11 +1,10 @@
 Version: 1
-Previous: 0db511ddf21a5fce70b3eab5f7f8d78afa30c375
-Head: d363fe91691a296f6a2253bf1346ea113558b9fd
+Previous: d7a2b3a030db2e35e040656453c50b0895016dc5
+Head: 84bdc5da587b58be831799eac853c7db9886a22d
 Applied:
   v6only: 36dbcc6dd62fc62a0bb8bc3cc82869eb4242fd4f
   rselect: 1fdb8dc1bff60f2748e148a081aae55b7fa80034
-  shut_wr: a77f0e02ab60b1b1746c2a17038d515c6db7500d
-  refresh-temp: d363fe91691a296f6a2253bf1346ea113558b9fd
+  shut_wr: 84bdc5da587b58be831799eac853c7db9886a22d
 Unapplied:
   rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de
   ip6-opt: 7e43a759255e9890d1e41f1edf71792836f53941
diff --git a/patches/refresh-temp b/patches/refresh-temp
deleted file mode 100644 (file)
index 46e5bef..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-Bottom: 938168c7141b54196d5a134aca1fe7c88dcfb3b5
-Top:    1ae738a42c25e6d2f1c92e4e79e5653b620de2c4
-Author: Sean Hefty <sean.hefty@intel.com>
-Date:   2012-06-25 17:11:41 -0700
-
-Refresh of shut_wr
-
----
-
-diff --git a/src/rsocket.c b/src/rsocket.c
-index ed994fe..63bf03e 100644
---- a/src/rsocket.c
-+++ b/src/rsocket.c
-@@ -96,7 +96,8 @@ enum {
- #define rs_msg_data(imm_data) (imm_data & 0x1FFFFFFF)
- enum {
--      RS_CTRL_DISCONNECT
-+      RS_CTRL_DISCONNECT,
-+      RS_CTRL_SHUTDOWN
- };
- struct rs_msg {
-@@ -321,7 +322,7 @@ static int rs_set_nonblocking(struct rsocket *rs, long arg)
-       if (rs->cm_id->recv_cq_channel)
-               ret = fcntl(rs->cm_id->recv_cq_channel->fd, F_SETFL, arg);
--      if (!ret && rs->state != rs_connected)
-+      if (!ret && rs->state < rs_connected)
-               ret = fcntl(rs->cm_id->channel->fd, F_SETFL, arg);
-       return ret;
-@@ -883,6 +884,8 @@ static int rs_poll_cq(struct rsocket *rs)
-                               if (rs_msg_data(imm_data) == RS_CTRL_DISCONNECT) {
-                                       rs->state = rs_disconnected;
-                                       return ERR(ECONNRESET);
-+                              } else if (rs_msg_data(imm_data) == RS_CTRL_SHUTDOWN) {
-+                                      rs->state = rs_shutdown_rd;
-                               }
-                               break;
-                       default:
-@@ -907,7 +910,7 @@ static int rs_poll_cq(struct rsocket *rs)
-               }
-       }
--      if (rs->state == rs_connected) {
-+      if (rs->state != rs_error) {
-               while (!ret && rcnt--)
-                       ret = rdma_post_recvv(rs->cm_id, NULL, NULL, 0);
-@@ -932,7 +935,7 @@ static int rs_get_cq_event(struct rsocket *rs)
-       if (!ret) {
-               ibv_ack_cq_events(rs->cm_id->recv_cq, 1);
-               rs->cq_armed = 0;
--      } else if (errno != EAGAIN && rs->state == rs_connected) {
-+      } else if (errno != EAGAIN) {
-               rs->state = rs_error;
-       }
-@@ -1457,6 +1460,8 @@ static int rs_poll_rs(struct rsocket *rs, int events,
-               }
-               /* fall through */
-       case rs_connected:
-+      case rs_shutdown_rd:
-+      case rs_shutdown_wr:
-       case rs_disconnected:
-       case rs_error:
-               rs_process_cq(rs, nonblock, test);
-@@ -1466,10 +1471,12 @@ static int rs_poll_rs(struct rsocket *rs, int events,
-                       revents |= POLLIN;
-               if ((events & POLLOUT) && rs_can_send(rs))
-                       revents |= POLLOUT;
--              if (rs->state == rs_disconnected)
--                      revents |= POLLHUP;
--              else if (rs->state == rs_error)
--                      revents |= POLLERR;
-+              if (rs->state > rs_connected) {
-+                      if (rs->state == rs_error)
-+                              revents |= POLLERR;
-+                      else
-+                              revents |= POLLHUP;
-+              }
-               return revents;
-       case rs_connect_error:
-@@ -1690,12 +1697,16 @@ int rshutdown(int socket, int how)
-       struct rsocket *rs;
-       int ret = 0;
-+      if (how == SHUT_RD)
-+              return 0;
-+
-       rs = idm_at(&idm, socket);
-       if (rs->fd_flags & O_NONBLOCK)
-               rs_set_nonblocking(rs, 0);
-       if (rs->state == rs_connected) {
--              rs->state = rs_disconnected;
-+              if (how == SHUT_RDWR)
-+                      rs->state = rs_disconnected;
-               if (!rs_can_send_ctrl(rs)) {
-                       ret = rs_process_cq(rs, 0, rs_can_send_ctrl);
-                       if (ret)
-@@ -1711,6 +1722,9 @@ int rshutdown(int socket, int how)
-       if (!rs_all_sends_done(rs) && rs->state != rs_error)
-               rs_process_cq(rs, 0, rs_all_sends_done);
-+      if ((rs->fd_flags & O_NONBLOCK) && (how == SHUT_WR))
-+              rs_set_nonblocking(rs, 1);
-+
-       return 0;
- }
index 49f3ab9e6272b3346281bdb1ffd66719c272fc2a..0ff742d562e3ce96473d9ff49cb7ff57810c6f54 100644 (file)
@@ -1,5 +1,5 @@
 Bottom: 938168c7141b54196d5a134aca1fe7c88dcfb3b5
-Top:    938168c7141b54196d5a134aca1fe7c88dcfb3b5
+Top:    1ae738a42c25e6d2f1c92e4e79e5653b620de2c4
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2012-06-25 14:19:54 -0700
 
@@ -10,4 +10,106 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 
 ---
 
-
+diff --git a/src/rsocket.c b/src/rsocket.c
+index ed994fe..63bf03e 100644
+--- a/src/rsocket.c
++++ b/src/rsocket.c
+@@ -96,7 +96,8 @@ enum {
+ #define rs_msg_data(imm_data) (imm_data & 0x1FFFFFFF)
+ enum {
+-      RS_CTRL_DISCONNECT
++      RS_CTRL_DISCONNECT,
++      RS_CTRL_SHUTDOWN
+ };
+ struct rs_msg {
+@@ -321,7 +322,7 @@ static int rs_set_nonblocking(struct rsocket *rs, long arg)
+       if (rs->cm_id->recv_cq_channel)
+               ret = fcntl(rs->cm_id->recv_cq_channel->fd, F_SETFL, arg);
+-      if (!ret && rs->state != rs_connected)
++      if (!ret && rs->state < rs_connected)
+               ret = fcntl(rs->cm_id->channel->fd, F_SETFL, arg);
+       return ret;
+@@ -883,6 +884,8 @@ static int rs_poll_cq(struct rsocket *rs)
+                               if (rs_msg_data(imm_data) == RS_CTRL_DISCONNECT) {
+                                       rs->state = rs_disconnected;
+                                       return ERR(ECONNRESET);
++                              } else if (rs_msg_data(imm_data) == RS_CTRL_SHUTDOWN) {
++                                      rs->state = rs_shutdown_rd;
+                               }
+                               break;
+                       default:
+@@ -907,7 +910,7 @@ static int rs_poll_cq(struct rsocket *rs)
+               }
+       }
+-      if (rs->state == rs_connected) {
++      if (rs->state != rs_error) {
+               while (!ret && rcnt--)
+                       ret = rdma_post_recvv(rs->cm_id, NULL, NULL, 0);
+@@ -932,7 +935,7 @@ static int rs_get_cq_event(struct rsocket *rs)
+       if (!ret) {
+               ibv_ack_cq_events(rs->cm_id->recv_cq, 1);
+               rs->cq_armed = 0;
+-      } else if (errno != EAGAIN && rs->state == rs_connected) {
++      } else if (errno != EAGAIN) {
+               rs->state = rs_error;
+       }
+@@ -1457,6 +1460,8 @@ static int rs_poll_rs(struct rsocket *rs, int events,
+               }
+               /* fall through */
+       case rs_connected:
++      case rs_shutdown_rd:
++      case rs_shutdown_wr:
+       case rs_disconnected:
+       case rs_error:
+               rs_process_cq(rs, nonblock, test);
+@@ -1466,10 +1471,12 @@ static int rs_poll_rs(struct rsocket *rs, int events,
+                       revents |= POLLIN;
+               if ((events & POLLOUT) && rs_can_send(rs))
+                       revents |= POLLOUT;
+-              if (rs->state == rs_disconnected)
+-                      revents |= POLLHUP;
+-              else if (rs->state == rs_error)
+-                      revents |= POLLERR;
++              if (rs->state > rs_connected) {
++                      if (rs->state == rs_error)
++                              revents |= POLLERR;
++                      else
++                              revents |= POLLHUP;
++              }
+               return revents;
+       case rs_connect_error:
+@@ -1690,12 +1697,16 @@ int rshutdown(int socket, int how)
+       struct rsocket *rs;
+       int ret = 0;
++      if (how == SHUT_RD)
++              return 0;
++
+       rs = idm_at(&idm, socket);
+       if (rs->fd_flags & O_NONBLOCK)
+               rs_set_nonblocking(rs, 0);
+       if (rs->state == rs_connected) {
+-              rs->state = rs_disconnected;
++              if (how == SHUT_RDWR)
++                      rs->state = rs_disconnected;
+               if (!rs_can_send_ctrl(rs)) {
+                       ret = rs_process_cq(rs, 0, rs_can_send_ctrl);
+                       if (ret)
+@@ -1711,6 +1722,9 @@ int rshutdown(int socket, int how)
+       if (!rs_all_sends_done(rs) && rs->state != rs_error)
+               rs_process_cq(rs, 0, rs_all_sends_done);
++      if ((rs->fd_flags & O_NONBLOCK) && (how == SHUT_WR))
++              rs_set_nonblocking(rs, 1);
++
+       return 0;
+ }