From ed4b6c34f7d993b7f72ec819736fefadbccf58e9 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Fri, 8 Jun 2012 17:28:03 -0700 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 +-- patches/refresh-temp | 76 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index 791cfcf2..0b551eeb 100644 --- a/meta +++ b/meta @@ -1,8 +1,9 @@ Version: 1 -Previous: 0f3862662437dca805d1063715e3b7c79359f68e -Head: b0b25c1578855bfa6eb245bf9c5cb605401fce9c +Previous: b6159767868f2e0a27f904a68bde20578c8d5c64 +Head: c3445b79938fed96641eeefa24b0584bbc68590d Applied: rs-1sge: b0b25c1578855bfa6eb245bf9c5cb605401fce9c + refresh-temp: c3445b79938fed96641eeefa24b0584bbc68590d Unapplied: ip6-opt: 7e43a759255e9890d1e41f1edf71792836f53941 Hidden: diff --git a/patches/refresh-temp b/patches/refresh-temp new file mode 100644 index 00000000..2f754141 --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,76 @@ +Bottom: 5e3e6b71c501cb8ea673381a8c35aabaa2c3c924 +Top: 5d8567651b8275bf1758541671b1945c62afa5d7 +Author: Sean Hefty +Date: 2012-06-08 17:28:03 -0700 + +Refresh of rs-1sge + +--- + +diff --git a/src/rsocket.c b/src/rsocket.c +index 4781e81..0f3bc91 100644 +--- a/src/rsocket.c ++++ b/src/rsocket.c +@@ -765,6 +765,7 @@ static int rs_write_data(struct rsocket *rs, struct ibv_sge *sge, int flags) + uint64_t addr; + uint32_t rkey; + uint32_t len = sge->length; ++ int ret; + + rs->sseq_no++; + rs->sqe_avail--; +@@ -781,8 +782,13 @@ static int rs_write_data(struct rsocket *rs, struct ibv_sge *sge, int flags) + rs->target_sge = 0; + } + +- return rs_post_write(rs, rs_wrid_set(1, len), sge, 1, +- rs_msg_set(RS_OP_DATA, len), flags, addr, rkey); ++ ret = rs_post_write(rs, rs_wrid_set(1, len), sge, 1, ++ rs_msg_set(RS_OP_DATA, len), flags, addr, rkey); ++ if (len < rs_sbuf_left(rs)) ++ rs->ssge.addr += len; ++ else ++ rs->ssge.addr = (uintptr_t) rs->sbuf; ++ return ret; + } + + static uint32_t rs_sbuf_left(struct rsocket *rs) +@@ -1237,16 +1243,10 @@ ssize_t rsend(int socket, const void *buf, size_t len, int flags) + sge.length = xfer_size; + sge.lkey = 0; + ret = rs_write_data(rs, &sge, IBV_SEND_INLINE); +- if (xfer_size == rs_sbuf_left(rs)) +- rs->ssge.addr = (uintptr_t) rs->sbuf; + } else { + memcpy((void *) (uintptr_t) rs->ssge.addr, buf, xfer_size); + rs->ssge.length = xfer_size; + ret = rs_write_data(rs, &rs->ssge, 0); +- if (xfer_size < rs_sbuf_left(rs)) +- rs->ssge.addr += xfer_size; +- else +- rs->ssge.addr = (uintptr_t) rs->sbuf; + } + if (ret) + break; +@@ -1309,7 +1309,7 @@ static ssize_t rsendv(int socket, const struct iovec *iov, int iovcnt, int flags + len += iov[i].iov_len; + + fastlock_acquire(&rs->slock); +- for (left = len; left; left -= xfer_size) { ++ for (left = len; left && !ret; left -= xfer_size) { + if (!rs_can_send(rs)) { + ret = rs_get_comp(rs, rs_nonblocking(rs, flags), + rs_conn_can_send); +@@ -1341,13 +1341,6 @@ static ssize_t rsendv(int socket, const struct iovec *iov, int iovcnt, int flags + rs->ssge.length = xfer_size; + ret = rs_write_data(rs, &rs->ssge, xfer_size <= rs->sq_inline ? + IBV_SEND_INLINE : 0); +- if (ret) +- break; +- +- if (xfer_size < rs_sbuf_left(rs)) +- rs->ssge.addr += xfer_size; +- else +- rs->ssge.addr = (uintptr_t) rs->sbuf; + } + fastlock_release(&rs->slock); -- 2.41.0