Hi Mario,

Are you passing rte_pktmbuf_init as the obj_init argument to rte_mempool_create?
It is called when the mbuf if freed and it will reset the fields. I vaguely 
remember I had the same issue at some point and resolved it somehow. This comes 
to mind.

Cheers,
Periklis

On 18 Feb, 2014, at 6:27 pm, Mario Gianni <m.gianni at engineer.com> wrote:

> Hi all, I'm experimenting some code with DPDK v1.5.0 and I have the following 
> problem:
> 
> I have a thread that receives packets from NIC, once I received a packet I 
> want to prepend some data to it and I try to do so through the function 
> rte_pktmbuf_prepend()
> then the packet is enqueued in a ring buffer where it will be used by a 
> client thread before being dropped through the function rte_pktmbuf_free() 
> called by the client thread.
> 
> Now, if I try to send packets to this program I have the following behaviour:
> In a first time it seems to work correctly, then after a certain number of 
> received packets (approximately the same number as the number of mbufs 
> present in the mempool) if I call the rte_pktmbuf_headroom it returns that 
> the headroom is shrinking more than the expected, until after a certain 
> number of packets the headroom goes to zero.
> 
> It seems like that when I call the rte_pktmbuf_free() function it doesn't 
> reset the data position inside the mbuf, so when I call for a second time the 
> mbuf the headroom continues to shrink until it finishes.
> 
> 
> Do you have any idea of this strange behaviour?Could it be a bug in the 
> prepend/free function?
> 
> 
> Thank you,
> 
> Mario

Reply via email to