[dpdk-users] Issue in freeing and recreating mempools for Transmission

Karthikraj palanichamy karthikraj.palanichamy at veryxtech.com
Fri Feb 17 11:14:14 CET 2017


Hi!

I am using dpdk to develop a traffic generator (both rx and tx).

At the start, I will create a memory pool for Rx with default data room 
size : RTE_MBUF_DEFAULT_BUF_SIZE.

For Tx, I will dynamically create memory pool based on the frame size to 
be transmitted.

To transmit 80 bytes frames, I configured (80 +/RTE_PKTMBUF_HEADROOM/). 
There was no problem and transmission was successful.

I will do `rte_mempool_free()` once the transmission is over.

I will again create mem pool when transmission is again set ON.

So, my code flow is /: create mempool -> transmit pkts -> free mempool/

When I repeat this for 3 to 5 times, I get segmentation fault in the 
transmission API of the PMD. - 'eth_igb_xmit_pkts' for igb PMD and  
'ixgbe_xmit_pkts_vec()' for ixgbe PMD.

When I do /`rte_eth_dev_close()`/ and `rte_eth_dev_start()` after 
freeing the mem pool, everything works fine.

But I couldn't afford to do `rte_eth_dev_close()` since Rx will be 
running in parallel and Rx shouldn't be stopped.

I tried `rte_eth_dev_tx_queue_stop()` but issue persists.

Thanks in advance for any help.

Regards
Karthik

DISCLAIMER: Privileged and/or Confidential information may be
contained in this message. If you are not the addressee of this message,
you may not copy, use or deliver this message to anyone. In such
event,you should destroy the message and kindly notify the sender by
reply e-mail.
It is understood that opinions or conclusions that do not relate to the
official business of the company are neither given nor endorsed by the
company.



More information about the users mailing list