]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh (create temporary patch)
authorSean Hefty <sean.hefty@intel.com>
Wed, 27 Jun 2012 00:47:35 +0000 (17:47 -0700)
committerSean Hefty <sean.hefty@intel.com>
Wed, 27 Jun 2012 00:47:35 +0000 (17:47 -0700)
meta
patches/refresh-temp [new file with mode: 0644]

diff --git a/meta b/meta
index ee064c155dd89989769f9f84bcca619e91544200..2b518b0de60c6885eb2d5104421ff37b2dcaec7b 100644 (file)
--- a/meta
+++ b/meta
@@ -1,10 +1,11 @@
 Version: 1
-Previous: fed3462835b91d164a6f35f82d19f7240041f828
-Head: b2b48ba0a9ade70864e201b41e4cc7214081b452
+Previous: 4efbd0d33d93cd51bb292fb9fa817815acce7bda
+Head: 5a51c2ae068e7c4cfc0ca29ba2c1bbfb76595aa9
 Applied:
   v6only: 3afce107e2baec86c5541ed0acd992e37bcb992a
   rselect: 7d25968d337e976e0e22fdba69c8a2a2f5d35008
   shut_wr: b2b48ba0a9ade70864e201b41e4cc7214081b452
+  refresh-temp: 5a51c2ae068e7c4cfc0ca29ba2c1bbfb76595aa9
 Unapplied:
   rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de
   ip6-opt: 7e43a759255e9890d1e41f1edf71792836f53941
diff --git a/patches/refresh-temp b/patches/refresh-temp
new file mode 100644 (file)
index 0000000..21760ca
--- /dev/null
@@ -0,0 +1,69 @@
+Bottom: 1264339bc4c5c10bfdee4de6e8d685732a67024a
+Top:    1c160ef5df5740a60dc56e2b865de959ae19f00c
+Author: Sean Hefty <sean.hefty@intel.com>
+Date:   2012-06-26 17:47:35 -0700
+
+Refresh of shut_wr
+
+---
+
+diff --git a/src/rsocket.c b/src/rsocket.c
+index 4ed646b..581ecd8 100644
+--- a/src/rsocket.c
++++ b/src/rsocket.c
+@@ -167,7 +167,7 @@ struct rsocket {
+       uint64_t          so_opts;
+       uint64_t          tcp_opts;
+       uint64_t          ipv6_opts;
+-      enum rs_state     state;
++      int               state;
+       int               cq_armed;
+       int               retries;
+       int               err;
+@@ -757,6 +757,14 @@ int rconnect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+       return rs_do_connect(rs);
+ }
++static int rs_shutdown_state(struct rsocket *rs, int state)
++{
++      rs->state &= ~state;
++      if (rs->state == rs_connected)
++              rs->state = rs_disconnected;
++      return rs->state == rs_disconnected;
++}
++
+ static int rs_post_write(struct rsocket *rs, uint64_t wr_id,
+                        struct ibv_sge *sgl, int nsge,
+                        uint32_t imm_data, int flags,
+@@ -889,7 +897,8 @@ static int rs_poll_cq(struct rsocket *rs)
+                                       rs->state = rs_disconnected;
+                                       return ERR(ECONNRESET);
+                               } else if (rs_msg_data(imm_data) == RS_CTRL_SHUTDOWN) {
+-                                      rs->state &= ~rs_connect_rd;
++                                      if (rs_shutdown_state(rs, rs_connect_rd))
++                                              return ERR(ECONNRESET);
+                               }
+                               break;
+                       default:
+@@ -1702,9 +1711,7 @@ int rshutdown(int socket, int how)
+       rs = idm_at(&idm, socket);
+       if (how == SHUT_RD) {
+-              rs->state &= ~rs_connect_rd;
+-              if (rs->state == rs_connected)
+-                      rs->state = rs_disconnected;
++              rs_shutdown_state(rs, rs_connect_rd);
+               return 0;
+       }
+@@ -1716,8 +1723,8 @@ int rshutdown(int socket, int how)
+                       ctrl = RS_CTRL_DISCONNECT;
+                       rs->state = rs_disconnected;
+               } else {
+-                      ctrl = RS_CTRL_SHUTDOWN;
+-                      rs->state &= ~rs_connect_wr;
++                      ctrl = rs_shutdown_state(rs, rs_connect_wr) ?
++                              RS_CTRL_DISCONNECT : RS_CTRL_SHUTDOWN;
+               }
+               if (!rs_can_send_ctrl(rs)) {
+                       ret = rs_process_cq(rs, 0, rs_can_send_ctrl);