8f094a9ac5
Set the value of m->refcnt to 1, m->nb_segs to 1 and m->next to NULL when the mbuf is stored inside the mempool (unused). This is done in rte_pktmbuf_prefree_seg(), before freeing or recycling a mbuf. Before this patch, the value of m->refcnt was expected to be 0 while in pool. The objectives are: - to avoid drivers to set m->next to NULL in the early Rx path, since this field is in the second 64B of the mbuf and its access could trigger a cache miss - rationalize the behavior of raw_alloc/raw_free: one is now the symmetric of the other, and refcnt is never changed in these functions. To optimize the freeing of the segments, we try try to only update m->refcnt, m->next, and m->nb_segs when it's required (idea from Konstantin Ananyev <konstantin.ananyev@intel.com>). Signed-off-by: Olivier Matz <olivier.matz@6wind.com>