[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