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.
pull/1104/head
Victor Julien 12 years ago
parent 231b993f1f
commit ed0b75e1e9

@ -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;

Loading…
Cancel
Save