]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh
authorSean Hefty <sean.hefty@intel.com>
Fri, 18 Apr 2014 00:30:43 +0000 (17:30 -0700)
committerSean Hefty <sean.hefty@intel.com>
Fri, 18 Apr 2014 00:30:43 +0000 (17:30 -0700)
meta
patches/inline0
patches/refresh-temp [deleted file]

diff --git a/meta b/meta
index c993c244c71bc5bead59868bf59444bb8ad2ca76..702d1d7dc44ab7720b679a52631308253100dd09 100644 (file)
--- a/meta
+++ b/meta
@@ -1,13 +1,12 @@
 Version: 1
-Previous: 14975860ee425357729da235efd0409f6b382e49
-Head: 268143e9f2488536ffad0e2013ba1dd37817a8ca
+Previous: 658d8679c6b7a93a671a6f25b778eea11b976c44
+Head: 6cb7d994c54a43a37190d6f2359294151ef19ead
 Applied:
   lazy-init: f306625fe8cafef70e3d60fddd7e685bc0696047
   rs-inline: 4243da0ad9206c662b3a3c8ba7a9f4b2b7269d3f
   fixed-ctrl: fa7872e54b5ef5a986cdfcc4d2a895c3a0c733c8
   rs-ctrl: 5039c0e317d5507a0df5afc07e3783a650cab8e6
-  inline0: 4bff979b9c63b6350280caec0bdf5bf9ad05c6e9
-  refresh-temp: 268143e9f2488536ffad0e2013ba1dd37817a8ca
+  inline0: 6cb7d994c54a43a37190d6f2359294151ef19ead
 Unapplied:
   old-af-ib: aaa0d9ca917c8c361a978e5a116963c2cceac5ba
   old-seterr: 47eb0c419687c2690292c1910acae83a46e5388c
index 0128ac34296604c2891f9adb4c53d80eb90e7389..1ee9c5fdca2dc8c162c199baaec86e74ece1bd2a 100644 (file)
@@ -1,5 +1,5 @@
 Bottom: cfb4e06d73107deeb818771d285c201b7e0eb692
-Top:    23c0606ee51ef70a8c14fb009810480936ef9d44
+Top:    7f75ab2faf5a23755d593d5c77a94121b8c88a7c
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2014-04-16 22:01:51 -0700
 
@@ -15,7 +15,7 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 ---
 
 diff --git a/src/rsocket.c b/src/rsocket.c
-index 77b3979..09b658b 100644
+index 77b3979..07cd8d3 100644
 --- a/src/rsocket.c
 +++ b/src/rsocket.c
 @@ -61,7 +61,7 @@
@@ -90,17 +90,18 @@ index 77b3979..09b658b 100644
        if (!rs->rmr)
                return -1;
  
-@@ -862,9 +862,6 @@ static int rs_create_ep(struct rsocket *rs)
+@@ -862,8 +862,8 @@ static int rs_create_ep(struct rsocket *rs)
                return ret;
  
        rs->sq_inline = qp_attr.cap.max_inline_data;
 -      if (rs->sq_inline < RS_MIN_INLINE)
 -              return ERR(EINVAL);
--
++      if ((rs->opts & RS_OPT_MSG_SEND) && (rs->sq_inline < RS_MSG_SIZE))
++              return ERR(ENOTSUP);
        for (i = 0; i < rs->rq_size; i++) {
                ret = rs_post_recv(rs);
-               if (ret)
-@@ -1497,11 +1494,6 @@ static int ds_create_qp(struct rsocket *rs, union socket_addr *src_addr,
+@@ -1497,11 +1497,6 @@ static int ds_create_qp(struct rsocket *rs, union socket_addr *src_addr,
                goto err;
  
        rs->sq_inline = qp_attr.cap.max_inline_data;
@@ -112,45 +113,149 @@ index 77b3979..09b658b 100644
        ret = ds_add_qp_dest(qp, src_addr, addrlen);
        if (ret)
                goto err;
-@@ -1613,6 +1605,12 @@ int rconnect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -1613,28 +1608,55 @@ int rconnect(int socket, const struct sockaddr *addr, socklen_t addrlen)
        return ret;
  }
  
+-static int rs_post_msg(struct rsocket *rs, uint32_t msg)
 +static void *rs_get_ctrl_buf(struct rsocket *rs)
 +{
 +      return rs->sbuf + rs->sbuf_size +
 +              RS_MAX_CTRL_MSG * (rs->ctrl_seqno & (RS_QP_CTRL_SIZE - 1));
 +}
 +
- static int rs_post_msg(struct rsocket *rs, uint32_t msg)
++static int rs_post_send_msg(struct rsocket *rs, uint64_t wr_id, uint32_t msg)
  {
        struct ibv_send_wr wr, *bad;
-@@ -1627,13 +1625,20 @@ static int rs_post_msg(struct rsocket *rs, uint32_t msg)
+       struct ibv_sge sge;
++      void *ctrl_buf;
+-      wr.wr_id = rs_send_wr_id(msg);
++      wr.wr_id = wr_id;
+       wr.next = NULL;
+-      if (!(rs->opts & RS_OPT_MSG_SEND)) {
+-              wr.sg_list = NULL;
+-              wr.num_sge = 0;
+-              wr.opcode = IBV_WR_RDMA_WRITE_WITH_IMM;
++      if (rs->sq_inline < sizeof msg) {
++              ctrl_buf = rs_get_ctrl_buf(rs);
++              memcpy(ctrl_buf, &msg, sizeof msg);
++              sge.addr = (uintptr_t) ctrl_buf;
++              sge.lkey = rs->smr->lkey;
++              sge.length = sizeof msg;
                wr.send_flags = 0;
-               wr.imm_data = htonl(msg);
+-              wr.imm_data = htonl(msg);
        } else {
--              sge.addr = (uintptr_t) &msg;
--              sge.lkey = 0;
--              sge.length = sizeof msg;
-+              if (rs->sq_inline < sizeof msg) {
-+                      sge.addr = (uintptr_t) rs_get_ctrl_buf(rs);
-+                      sge.lkey = rs->smr->lkey;
-+                      sge.length = sizeof msg;
-+                      wr.send_flags = 0;
-+              } else {
-+                      sge.addr = (uintptr_t) &msg;
-+                      sge.lkey = 0;
-+                      sge.length = sizeof msg;
-+                      wr.send_flags = IBV_SEND_INLINE;
-+              }
-               wr.sg_list = &sge;
-               wr.num_sge = 1;
-               wr.opcode = IBV_WR_SEND;
--              wr.send_flags = IBV_SEND_INLINE;
+               sge.addr = (uintptr_t) &msg;
+               sge.lkey = 0;
+               sge.length = sizeof msg;
+-              wr.sg_list = &sge;
+-              wr.num_sge = 1;
+-              wr.opcode = IBV_WR_SEND;
+               wr.send_flags = IBV_SEND_INLINE;
        }
++      wr.sg_list = &sge;
++      wr.num_sge = 1;
++      wr.opcode = IBV_WR_SEND;
++
++      return rdma_seterrno(ibv_post_send(rs->cm_id->qp, &wr, &bad));
++}
++
++static int rs_post_msg(struct rsocket *rs, uint32_t msg)
++{
++      struct ibv_send_wr wr, *bad;
++      struct ibv_sge sge;
++
++      if (rs->opts & RS_OPT_MSG_SEND)
++              return rs_post_send_msg(rs, rs_send_wr_id(msg), msg);
++
++      wr.wr_id = rs_send_wr_id(msg);
++      wr.next = NULL;
++      wr.sg_list = NULL;
++      wr.num_sge = 0;
++      wr.opcode = IBV_WR_RDMA_WRITE_WITH_IMM;
++      wr.send_flags = 0;
++      wr.imm_data = htonl(msg);
  
        return rdma_seterrno(ibv_post_send(rs->cm_id->qp, &wr, &bad));
-@@ -3456,8 +3461,6 @@ int rsetsockopt(int socket, int level, int optname,
+ }
+@@ -1658,10 +1680,9 @@ static int rs_post_write(struct rsocket *rs,
+       return rdma_seterrno(ibv_post_send(rs->cm_id->qp, &wr, &bad));
+ }
+-static int rs_post_write_msg(struct rsocket *rs,
+-                       struct ibv_sge *sgl, int nsge,
+-                       uint32_t msg, int flags,
+-                       uint64_t addr, uint32_t rkey)
++static int
++rs_post_write_with_msg(struct rsocket *rs, struct ibv_sge *sgl, int nsge,
++                     uint32_t msg, int flags, uint64_t addr, uint32_t rkey)
+ {
+       struct ibv_send_wr wr, *bad;
+       struct ibv_sge sge;
+@@ -1682,17 +1703,9 @@ static int rs_post_write_msg(struct rsocket *rs,
+       } else {
+               ret = rs_post_write(rs, sgl, nsge, msg, flags, addr, rkey);
+               if (!ret) {
+-                      wr.wr_id = rs_send_wr_id(rs_msg_set(rs_msg_op(msg), 0)) |
+-                                 RS_WR_ID_FLAG_MSG_SEND;
+-                      sge.addr = (uintptr_t) &msg;
+-                      sge.lkey = 0;
+-                      sge.length = sizeof msg;
+-                      wr.sg_list = &sge;
+-                      wr.num_sge = 1;
+-                      wr.opcode = IBV_WR_SEND;
+-                      wr.send_flags = IBV_SEND_INLINE;
+-
+-                      ret = rdma_seterrno(ibv_post_send(rs->cm_id->qp, &wr, &bad));
++                      ret = rs_post_send_msg(rs,
++                              rs_send_wr_id(rs_msg_set(rs_msg_op(msg), 0)) |
++                              RS_WR_ID_FLAG_MSG_SEND, msg);
+               }
+               return ret;
+       }
+@@ -1744,8 +1757,8 @@ static int rs_write_data(struct rsocket *rs,
+                       rs->target_sge = 0;
+       }
+-      return rs_post_write_msg(rs, sgl, nsge, rs_msg_set(RS_OP_DATA, length),
+-                               flags, addr, rkey);
++      return rs_post_write_with_msg(rs, sgl, nsge, rs_msg_set(RS_OP_DATA, length),
++                                    flags, addr, rkey);
+ }
+ static int rs_write_direct(struct rsocket *rs, struct rs_iomap *iom, uint64_t offset,
+@@ -1773,8 +1786,9 @@ static int rs_write_iomap(struct rsocket *rs, struct rs_iomap_mr *iomr,
+       rs->sbuf_bytes_avail -= sizeof(struct rs_iomap);
+       addr = rs->remote_iomap.addr + iomr->index * sizeof(struct rs_iomap);
+-      return rs_post_write_msg(rs, sgl, nsge, rs_msg_set(RS_OP_IOMAP_SGL, iomr->index),
+-                               flags, addr, rs->remote_iomap.key);
++      return rs_post_write_with_msg(rs, sgl, nsge,
++              rs_msg_set(RS_OP_IOMAP_SGL, iomr->index), flags, addr,
++              rs->remote_iomap.key);
+ }
+ static uint32_t rs_sbuf_left(struct rsocket *rs)
+@@ -1808,12 +1822,11 @@ static void rs_send_credits(struct rsocket *rs)
+               ibsge.lkey = 0;
+               ibsge.length = sizeof(sge);
+-              rs_post_write_msg(rs, &ibsge, 1,
+-                                rs_msg_set(RS_OP_SGL, rs->rseq_no + rs->rq_size),
+-                                IBV_SEND_INLINE,
+-                                rs->remote_sgl.addr +
+-                                rs->remote_sge * sizeof(struct rs_sge),
+-                                rs->remote_sgl.key);
++              rs_post_write_with_msg(rs, &ibsge, 1,
++                      rs_msg_set(RS_OP_SGL, rs->rseq_no + rs->rq_size),
++                      IBV_SEND_INLINE,
++                      rs->remote_sgl.addr + rs->remote_sge * sizeof(struct rs_sge),
++                      rs->remote_sgl.key);
+               rs->rbuf_bytes_avail -= rs->rbuf_size >> 1;
+               rs->rbuf_free_offset += rs->rbuf_size >> 1;
+@@ -3456,8 +3469,6 @@ int rsetsockopt(int socket, int level, int optname,
                        break;
                case RDMA_INLINE:
                        rs->sq_inline = min(*(uint32_t *) optval, RS_QP_MAX_SIZE);
diff --git a/patches/refresh-temp b/patches/refresh-temp
deleted file mode 100644 (file)
index 6c1058c..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-Bottom: 23c0606ee51ef70a8c14fb009810480936ef9d44
-Top:    7f75ab2faf5a23755d593d5c77a94121b8c88a7c
-Author: Sean Hefty <sean.hefty@intel.com>
-Date:   2014-04-17 17:30:43 -0700
-
-Refresh of inline0
-
----
-
-diff --git a/src/rsocket.c b/src/rsocket.c
-index 09b658b..07cd8d3 100644
---- a/src/rsocket.c
-+++ b/src/rsocket.c
-@@ -862,6 +862,9 @@ static int rs_create_ep(struct rsocket *rs)
-               return ret;
-       rs->sq_inline = qp_attr.cap.max_inline_data;
-+      if ((rs->opts & RS_OPT_MSG_SEND) && (rs->sq_inline < RS_MSG_SIZE))
-+              return ERR(ENOTSUP);
-+
-       for (i = 0; i < rs->rq_size; i++) {
-               ret = rs_post_recv(rs);
-               if (ret)
-@@ -1611,35 +1614,49 @@ static void *rs_get_ctrl_buf(struct rsocket *rs)
-               RS_MAX_CTRL_MSG * (rs->ctrl_seqno & (RS_QP_CTRL_SIZE - 1));
- }
--static int rs_post_msg(struct rsocket *rs, uint32_t msg)
-+static int rs_post_send_msg(struct rsocket *rs, uint64_t wr_id, uint32_t msg)
- {
-       struct ibv_send_wr wr, *bad;
-       struct ibv_sge sge;
-+      void *ctrl_buf;
--      wr.wr_id = rs_send_wr_id(msg);
-+      wr.wr_id = wr_id;
-       wr.next = NULL;
--      if (!(rs->opts & RS_OPT_MSG_SEND)) {
--              wr.sg_list = NULL;
--              wr.num_sge = 0;
--              wr.opcode = IBV_WR_RDMA_WRITE_WITH_IMM;
-+      if (rs->sq_inline < sizeof msg) {
-+              ctrl_buf = rs_get_ctrl_buf(rs);
-+              memcpy(ctrl_buf, &msg, sizeof msg);
-+              sge.addr = (uintptr_t) ctrl_buf;
-+              sge.lkey = rs->smr->lkey;
-+              sge.length = sizeof msg;
-               wr.send_flags = 0;
--              wr.imm_data = htonl(msg);
-       } else {
--              if (rs->sq_inline < sizeof msg) {
--                      sge.addr = (uintptr_t) rs_get_ctrl_buf(rs);
--                      sge.lkey = rs->smr->lkey;
--                      sge.length = sizeof msg;
--                      wr.send_flags = 0;
--              } else {
--                      sge.addr = (uintptr_t) &msg;
--                      sge.lkey = 0;
--                      sge.length = sizeof msg;
--                      wr.send_flags = IBV_SEND_INLINE;
--              }
--              wr.sg_list = &sge;
--              wr.num_sge = 1;
--              wr.opcode = IBV_WR_SEND;
-+              sge.addr = (uintptr_t) &msg;
-+              sge.lkey = 0;
-+              sge.length = sizeof msg;
-+              wr.send_flags = IBV_SEND_INLINE;
-       }
-+      wr.sg_list = &sge;
-+      wr.num_sge = 1;
-+      wr.opcode = IBV_WR_SEND;
-+
-+      return rdma_seterrno(ibv_post_send(rs->cm_id->qp, &wr, &bad));
-+}
-+
-+static int rs_post_msg(struct rsocket *rs, uint32_t msg)
-+{
-+      struct ibv_send_wr wr, *bad;
-+      struct ibv_sge sge;
-+
-+      if (rs->opts & RS_OPT_MSG_SEND)
-+              return rs_post_send_msg(rs, rs_send_wr_id(msg), msg);
-+
-+      wr.wr_id = rs_send_wr_id(msg);
-+      wr.next = NULL;
-+      wr.sg_list = NULL;
-+      wr.num_sge = 0;
-+      wr.opcode = IBV_WR_RDMA_WRITE_WITH_IMM;
-+      wr.send_flags = 0;
-+      wr.imm_data = htonl(msg);
-       return rdma_seterrno(ibv_post_send(rs->cm_id->qp, &wr, &bad));
- }
-@@ -1663,10 +1680,9 @@ static int rs_post_write(struct rsocket *rs,
-       return rdma_seterrno(ibv_post_send(rs->cm_id->qp, &wr, &bad));
- }
--static int rs_post_write_msg(struct rsocket *rs,
--                       struct ibv_sge *sgl, int nsge,
--                       uint32_t msg, int flags,
--                       uint64_t addr, uint32_t rkey)
-+static int
-+rs_post_write_with_msg(struct rsocket *rs, struct ibv_sge *sgl, int nsge,
-+                     uint32_t msg, int flags, uint64_t addr, uint32_t rkey)
- {
-       struct ibv_send_wr wr, *bad;
-       struct ibv_sge sge;
-@@ -1687,17 +1703,9 @@ static int rs_post_write_msg(struct rsocket *rs,
-       } else {
-               ret = rs_post_write(rs, sgl, nsge, msg, flags, addr, rkey);
-               if (!ret) {
--                      wr.wr_id = rs_send_wr_id(rs_msg_set(rs_msg_op(msg), 0)) |
--                                 RS_WR_ID_FLAG_MSG_SEND;
--                      sge.addr = (uintptr_t) &msg;
--                      sge.lkey = 0;
--                      sge.length = sizeof msg;
--                      wr.sg_list = &sge;
--                      wr.num_sge = 1;
--                      wr.opcode = IBV_WR_SEND;
--                      wr.send_flags = IBV_SEND_INLINE;
--
--                      ret = rdma_seterrno(ibv_post_send(rs->cm_id->qp, &wr, &bad));
-+                      ret = rs_post_send_msg(rs,
-+                              rs_send_wr_id(rs_msg_set(rs_msg_op(msg), 0)) |
-+                              RS_WR_ID_FLAG_MSG_SEND, msg);
-               }
-               return ret;
-       }
-@@ -1749,8 +1757,8 @@ static int rs_write_data(struct rsocket *rs,
-                       rs->target_sge = 0;
-       }
--      return rs_post_write_msg(rs, sgl, nsge, rs_msg_set(RS_OP_DATA, length),
--                               flags, addr, rkey);
-+      return rs_post_write_with_msg(rs, sgl, nsge, rs_msg_set(RS_OP_DATA, length),
-+                                    flags, addr, rkey);
- }
- static int rs_write_direct(struct rsocket *rs, struct rs_iomap *iom, uint64_t offset,
-@@ -1778,8 +1786,9 @@ static int rs_write_iomap(struct rsocket *rs, struct rs_iomap_mr *iomr,
-       rs->sbuf_bytes_avail -= sizeof(struct rs_iomap);
-       addr = rs->remote_iomap.addr + iomr->index * sizeof(struct rs_iomap);
--      return rs_post_write_msg(rs, sgl, nsge, rs_msg_set(RS_OP_IOMAP_SGL, iomr->index),
--                               flags, addr, rs->remote_iomap.key);
-+      return rs_post_write_with_msg(rs, sgl, nsge,
-+              rs_msg_set(RS_OP_IOMAP_SGL, iomr->index), flags, addr,
-+              rs->remote_iomap.key);
- }
- static uint32_t rs_sbuf_left(struct rsocket *rs)
-@@ -1813,12 +1822,11 @@ static void rs_send_credits(struct rsocket *rs)
-               ibsge.lkey = 0;
-               ibsge.length = sizeof(sge);
--              rs_post_write_msg(rs, &ibsge, 1,
--                                rs_msg_set(RS_OP_SGL, rs->rseq_no + rs->rq_size),
--                                IBV_SEND_INLINE,
--                                rs->remote_sgl.addr +
--                                rs->remote_sge * sizeof(struct rs_sge),
--                                rs->remote_sgl.key);
-+              rs_post_write_with_msg(rs, &ibsge, 1,
-+                      rs_msg_set(RS_OP_SGL, rs->rseq_no + rs->rq_size),
-+                      IBV_SEND_INLINE,
-+                      rs->remote_sgl.addr + rs->remote_sge * sizeof(struct rs_sge),
-+                      rs->remote_sgl.key);
-               rs->rbuf_bytes_avail -= rs->rbuf_size >> 1;
-               rs->rbuf_free_offset += rs->rbuf_size >> 1;