From c0960d118516d4bf43bd0f9a0993abdc5d996847 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 14 Dec 2018 10:59:15 +0100 Subject: [PATCH] MINOR: mux_h1/h2: simplify the zero-copy Rx alignment The transpory layer now respects buffer alignment, so we don't need to cheat anymore pretending we have some data at the head, adjusting the buffer's head is enough. --- src/mux_h1.c | 8 +------- src/mux_h2.c | 11 +---------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/src/mux_h1.c b/src/mux_h1.c index 7031d533f..a20e29a32 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -1664,7 +1664,6 @@ static int h1_recv(struct h1c *h1c) max = buf_room_for_htx_data(&h1c->ibuf); if (max) { - int aligned = 0; h1c->flags &= ~H1C_F_IN_FULL; b_realign_if_empty(&h1c->ibuf); @@ -1672,14 +1671,9 @@ static int h1_recv(struct h1c *h1c) /* try to pre-align the buffer like the rxbufs will be * to optimize memory copies. */ - h1c->ibuf.data = sizeof(struct htx); - aligned = 1; - } - ret = conn->xprt->rcv_buf(conn, &h1c->ibuf, max, 0); - if (aligned) { - h1c->ibuf.data -= sizeof(struct htx); h1c->ibuf.head = sizeof(struct htx); } + ret = conn->xprt->rcv_buf(conn, &h1c->ibuf, max, 0); } if (ret > 0) { rcvd = 1; diff --git a/src/mux_h2.c b/src/mux_h2.c index 2e3753d7c..4ca0907b6 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -2444,8 +2444,6 @@ static int h2_recv(struct h2c *h2c) } do { - int aligned = 0; - b_realign_if_empty(buf); if (!b_data(buf) && (h2c->proxy->options2 & PR_O2_USE_HTX)) { /* HTX in use : try to pre-align the buffer like the @@ -2457,9 +2455,7 @@ static int h2_recv(struct h2c *h2c) * have a few bytes there. */ max = buf_room_for_htx_data(buf) + 9; - buf->head = 0; - buf->data = sizeof(struct htx) - 9; - aligned = 1; + buf->head = sizeof(struct htx) - 9; } else max = b_room(buf); @@ -2468,11 +2464,6 @@ static int h2_recv(struct h2c *h2c) ret = conn->xprt->rcv_buf(conn, buf, max, 0); else ret = 0; - - if (aligned) { - buf->data -= sizeof(struct htx) - 9; - buf->head = sizeof(struct htx) - 9; - } } while (ret > 0); if (h2_recv_allowed(h2c) && (b_data(buf) < buf->size))