From 68797e8d10975cdf2052c29feacce483954ed418 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Thu, 17 Apr 2014 18:41:48 -0700 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 +- patches/refresh-temp | 121 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index d096db3c..1d02a86d 100644 --- 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 index 00000000..da0ea5a2 --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,121 @@ +Bottom: 9e9be02403dd00064b5f95e25a4b658e94df193f +Top: b0b290209f74fac22ab4edeb9acc1cfdd6e9cc51 +Author: Sean Hefty +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); -- 2.46.0