]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh (create temporary patch)
authorSean Hefty <sean.hefty@intel.com>
Fri, 18 Apr 2014 01:41:48 +0000 (18:41 -0700)
committerSean Hefty <sean.hefty@intel.com>
Fri, 18 Apr 2014 01:41:48 +0000 (18:41 -0700)
meta
patches/refresh-temp [new file with mode: 0644]

diff --git a/meta b/meta
index d096db3c668b01f2b42a8e0dc142264b536bb656..1d02a86d7a3ef83e1f2d69c541fcbef19a1ff654 100644 (file)
--- a/meta
+++ b/meta
@@ -1,12 +1,13 @@
 Version: 1
-Previous: 8813ba69cb9c0be0e5fd1a0aab6639e8fe74c7a1
-Head: d5564260069c15961bb838a533a8a9143a1a7791
+Previous: f4ca566d7d1c91175d399b59d4815cd1929a4531
+Head: 2aba4d566dac12868869a919a1312f09dfed2925
 Applied:
   lazy-init: f306625fe8cafef70e3d60fddd7e685bc0696047
   rs-inline: 4243da0ad9206c662b3a3c8ba7a9f4b2b7269d3f
   fixed-ctrl: fa7872e54b5ef5a986cdfcc4d2a895c3a0c733c8
   rs-ctrl: 5039c0e317d5507a0df5afc07e3783a650cab8e6
   inline0: d5564260069c15961bb838a533a8a9143a1a7791
+  refresh-temp: 2aba4d566dac12868869a919a1312f09dfed2925
 Unapplied:
   old-af-ib: aaa0d9ca917c8c361a978e5a116963c2cceac5ba
   old-seterr: 47eb0c419687c2690292c1910acae83a46e5388c
diff --git a/patches/refresh-temp b/patches/refresh-temp
new file mode 100644 (file)
index 0000000..da0ea5a
--- /dev/null
@@ -0,0 +1,121 @@
+Bottom: 9e9be02403dd00064b5f95e25a4b658e94df193f
+Top:    b0b290209f74fac22ab4edeb9acc1cfdd6e9cc51
+Author: Sean Hefty <sean.hefty@intel.com>
+Date:   2014-04-17 18:41:48 -0700
+
+Refresh of inline0
+
+---
+
+diff --git a/src/rsocket.c b/src/rsocket.c
+index 86eedd2..beba738 100644
+--- a/src/rsocket.c
++++ b/src/rsocket.c
+@@ -1608,59 +1608,12 @@ int rconnect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+       return ret;
+ }
+-static void *rs_get_ctrl_buf(struct rsocket *rs)
++static struct rs_sge *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_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 = wr_id;
+-//    wr.next = NULL;
+-//    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;
+-//    } 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;
+-//
+-//    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));
+-//}
+-
+ static int rs_post_msg(struct rsocket *rs, uint32_t msg)
+ {
+       struct ibv_send_wr wr, *bad;
+@@ -1821,9 +1774,8 @@ 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_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)
+@@ -1835,7 +1787,8 @@ static uint32_t rs_sbuf_left(struct rsocket *rs)
+ static void rs_send_credits(struct rsocket *rs)
+ {
+       struct ibv_sge ibsge;
+-      struct rs_sge sge;
++      struct rs_sge sge, *sge_buf;
++      int flags;
+       rs->ctrl_seqno++;
+       rs->rseq_comp = rs->rseq_no + (rs->rq_size >> 1);
+@@ -1853,13 +1806,21 @@ static void rs_send_credits(struct rsocket *rs)
+                       sge.length = bswap_32(rs->rbuf_size >> 1);
+               }
+-              ibsge.addr = (uintptr_t) &sge;
+-              ibsge.lkey = 0;
++              if (rs->sq_inline < sizeof sge) {
++                      sge_buf = rs_get_ctrl_buf(rs);
++                      memcpy(sge_buf, &sge, sizeof sge);
++                      ibsge.addr = (uintptr_t) sge_buf;
++                      ibsge.lkey = rs->smr->lkey;
++                      flags = 0;
++              } else {
++                      ibsge.addr = (uintptr_t) &sge;
++                      ibsge.lkey = 0;
++                      flags = IBV_SEND_INLINE;
++              }
+               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_msg_set(RS_OP_SGL, rs->rseq_no + rs->rq_size), flags,
+                       rs->remote_sgl.addr + rs->remote_sge * sizeof(struct rs_sge),
+                       rs->remote_sgl.key);