[dpdk-users] How to free a rte_mempool buffer

宋捷 songj at zctt.com
Thu Mar 21 09:48:08 CET 2019


Hi All,

 

I test my DPDK program in VM Ubuntu (in VMware) with the two virtual
NICs(VMXNET3 and e1000).

 

I create a rte_mempool buffer by rte_pktmbuf_pool_create, and load some
packets from a pcap file into this buffer. I can sending these packets by
rte_eth_tx_burst successfully.

 

Now I want to load another pcap file, then I free the previous rte_mempool
buffer by rte_mempool_free, and create a new rte_mempool buffer,

But a crash will be occurred at rte_eth_tx_burst Both in VMXNET3 and e1000.

 

I traced the code and found the crash point as below: 

The VMXNET3 driver: crash at:

vmxnet3_xmit_pkts->vmxnet3_tq_tx_complete->vmxnet3_unmap_pkt->rte_pktmbuf_fr
ee(mbuf);  (mbuf = txq->cmd_ring.buf_info[eop_idx].m;)

 

The e1000 driver: crash at:

eth_em_xmit_pkts->rte_pktmbuf_free_seg(txe->mbuf); 

 

 

I think rte_mempool_free side effects the driver’s TX ring, but don’t know
how to fix this issue?

 

How can we free a rte_mempool buffer safely?

 

 

Thanks

 

Jie

 



More information about the users mailing list