[dpdk-dev] [PATCH 1/2] mbuf: add rte_pktmbuff_reset_headroom function

Maxime Coquelin maxime.coquelin at redhat.com
Tue Oct 4 13:51:39 CEST 2016



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


More information about the dev mailing list