On 10/03/2016 06:11 PM, Olivier Matz wrote: > Hi Maxime, > > On 09/29/2016 02:20 PM, Maxime Coquelin wrote: >> Some application use rte_mbuf_raw_alloc() function to improve >> performance by not resetting mbuf's fields to their default state. >> >> This can be however problematic for mbuf consumers that need some >> headroom, meaning that data_off field gets decremented after >> allocation. When the mbuf is re-used afterwards, there might not >> be enough room for the consumer to prepend anything, if the data_off >> field is not reset to its default value. >> >> This patch adds a new rte_pktmbuf_reset_headroom() function that >> applications can call to reset the data_off field. >> This patch also replaces current data_off affectations in the mbuf >> lib with a call to this function. >> >> Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com> > > Sounds like a good idea. Just one small comment below. > >> >> /** >> + * Reset the data_off field of a packet mbuf to its default value. >> + * >> + * The given mbuf must have only one segment. >> + * >> + * @param m >> + * The packet mbuf's data_off field has to be reset. >> + */ >> +static inline void rte_pktmbuf_reset_headroom(struct rte_mbuf *m) >> +{ >> + m->data_off = RTE_MIN(RTE_PKTMBUF_HEADROOM, (uint16_t)m->buf_len); >> +} > > Maybe we should also highlight in the API comment that the segment > should be empty.
Good point. I'll change to: The given mbuf must have only one segment, which should be empty. Thanks, Maxime