From dbc8d57d51749055a13d8a8efdbeaf22f4023bf2 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Thu, 17 Apr 2014 18:41:48 -0700 Subject: [PATCH] refresh --- meta | 7 ++- patches/inline0 | 97 +++++++++++++--------------------- patches/refresh-temp | 121 ------------------------------------------- 3 files changed, 39 insertions(+), 186 deletions(-) delete mode 100644 patches/refresh-temp diff --git a/meta b/meta index 1d02a86d..ab5af029 100644 --- a/meta +++ b/meta @@ -1,13 +1,12 @@ Version: 1 -Previous: f4ca566d7d1c91175d399b59d4815cd1929a4531 -Head: 2aba4d566dac12868869a919a1312f09dfed2925 +Previous: ec8d125ed38b7d600c6ae5386c8300046f7d3bf5 +Head: 8613c886f927ce4e2f26e9bf2852021bbc589763 Applied: lazy-init: f306625fe8cafef70e3d60fddd7e685bc0696047 rs-inline: 4243da0ad9206c662b3a3c8ba7a9f4b2b7269d3f fixed-ctrl: fa7872e54b5ef5a986cdfcc4d2a895c3a0c733c8 rs-ctrl: 5039c0e317d5507a0df5afc07e3783a650cab8e6 - inline0: d5564260069c15961bb838a533a8a9143a1a7791 - refresh-temp: 2aba4d566dac12868869a919a1312f09dfed2925 + inline0: 8613c886f927ce4e2f26e9bf2852021bbc589763 Unapplied: old-af-ib: aaa0d9ca917c8c361a978e5a116963c2cceac5ba old-seterr: 47eb0c419687c2690292c1910acae83a46e5388c diff --git a/patches/inline0 b/patches/inline0 index 2604c194..cd6e9e44 100644 --- a/patches/inline0 +++ b/patches/inline0 @@ -1,5 +1,5 @@ Bottom: cfb4e06d73107deeb818771d285c201b7e0eb692 -Top: 9e9be02403dd00064b5f95e25a4b658e94df193f +Top: b0b290209f74fac22ab4edeb9acc1cfdd6e9cc51 Author: Sean Hefty Date: 2014-04-16 22:01:51 -0700 @@ -16,7 +16,7 @@ Signed-off-by: Sean Hefty --- diff --git a/src/rsocket.c b/src/rsocket.c -index 77b3979..86eedd2 100644 +index 77b3979..beba738 100644 --- a/src/rsocket.c +++ b/src/rsocket.c @@ -61,7 +61,7 @@ @@ -114,79 +114,55 @@ index 77b3979..86eedd2 100644 ret = ds_add_qp_dest(qp, src_addr, addrlen); if (ret) goto err; -@@ -1613,6 +1608,59 @@ int rconnect(int socket, const struct sockaddr *addr, socklen_t addrlen) +@@ -1613,6 +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; -@@ -1773,8 +1821,9 @@ static int rs_write_iomap(struct rsocket *rs, struct rs_iomap_mr *iomr, - rs->sbuf_bytes_avail -= sizeof(struct rs_iomap); +@@ -1774,7 +1775,7 @@ static int rs_write_iomap(struct rsocket *rs, struct rs_iomap_mr *iomr, 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), + 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); ++ flags, addr, rs->remote_iomap.key); } static uint32_t rs_sbuf_left(struct rsocket *rs) -@@ -1809,11 +1858,10 @@ static void rs_send_credits(struct rsocket *rs) +@@ -1786,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); +@@ -1804,16 +1806,23 @@ 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, @@ -195,14 +171,13 @@ index 77b3979..86eedd2 100644 - rs->remote_sgl.addr + - rs->remote_sge * sizeof(struct rs_sge), - rs->remote_sgl.key); -+ 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); rs->rbuf_bytes_avail -= rs->rbuf_size >> 1; rs->rbuf_free_offset += rs->rbuf_size >> 1; -@@ -3456,8 +3504,6 @@ int rsetsockopt(int socket, int level, int optname, +@@ -3456,8 +3465,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 index da0ea5a2..00000000 --- a/patches/refresh-temp +++ /dev/null @@ -1,121 +0,0 @@ -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.41.0