From ed0b75e1e9bd4b9764c60a55f256ba9881d3ea9d Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Wed, 9 Jul 2014 08:51:29 +0200 Subject: [PATCH] packet recycle: do most clean up on packet reuse Call PACKET_RELEASE_REFS from PacketPoolGetPacket() so that we only access the large packet structure just before actually using it. Should give better cache behaviour. --- src/tmqh-packetpool.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tmqh-packetpool.c b/src/tmqh-packetpool.c index 9b84f55b45..b26d6b09d9 100644 --- a/src/tmqh-packetpool.c +++ b/src/tmqh-packetpool.c @@ -187,6 +187,7 @@ Packet *PacketPoolGetPacket(void) Packet *p = pool->head; pool->head = p->next; p->pool = pool; + PACKET_REINIT(p); return p; } @@ -202,6 +203,7 @@ Packet *PacketPoolGetPacket(void) Packet *p = pool->head; pool->head = p->next; p->pool = pool; + PACKET_REINIT(p); return p; } @@ -217,14 +219,14 @@ void PacketPoolReturnPacket(Packet *p) { PktPool *my_pool = GetThreadPacketPool(); + PACKET_RELEASE_REFS(p); + PktPool *pool = p->pool; if (pool == NULL) { free(p); return; } - PACKET_RECYCLE(p); - if (pool == my_pool) { /* Push back onto this thread's own stack, so no locking. */ p->next = my_pool->head;