hitchhike! solution: put the pf stuff directly into the pkthdr no more malloc, little memory wasted if the stuff is not used saved a bit by removing a few things that were used in a cache-style - but recalculating (CPU cycles) is cheaper than memory access! struct pkthdr_pf { void *hdr; /* saved hdr pos in mbuf for ECN */ u_int rtableid; /* alternate routing table id */ u_int32_t qid; /* queue id */ u_int16_t tag; /* tag id */ u_int8_t flags; u_int8_t routed; };