[dpdk-users] A question about rte_pktmbuf_init() and alike functions

Александр Самойлов cidjey1991 at mail.ru
Tue Nov 3 18:49:19 CET 2015

 Hi all. I'm sorry if the question is naive or stupid, but still I couldn't find the answer in the manual.

The question is: are the element init functions called just once (with the mempool creation) or are they called each time we retrieve a new element from a pool? I'm asking because I use a mempool pool with pkt_mbuf structures for generating new Ethernet frames (with IP and TCP data) and it works just fine for a while (I reckon just as long as I'm getting a new pktmbuf with rte_pktmbuf_alloc and not a recycled one) and at some point my generated frames start to have the wrong TCP ckecksum (even though TCP checksum it totally OK at first). And the strange thing is that if, for instance, mempool has 2048 elements -  my program works for 5 seconds (rough estimate), and if mempool has 4096 elements - my program works for 10 seconds. The connection is obvious. I used to believe that init() functions are called each time we retrieve an element from a mempool, but now I'm not so sure.

Alex Samoylov

More information about the users mailing list