mbufs could be chained (by the "next" field of rte_mbuf struct), when an mbuf is not big enough to hold a big packet, say when TSO is enabled.
rte_pktmbuf_free_seg() frees the head mbuf only, leading mbuf leaks. This patch fix it by invoking the right API rte_pktmbuf_free(), to free all mbufs in the chain. Signed-off-by: Yuanhan Liu <yuanhan....@linux.intel.com> --- lib/netdev-dpdk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 0233b3c..f402354 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -396,7 +396,7 @@ free_dpdk_buf(struct dp_packet *p) { struct rte_mbuf *pkt = (struct rte_mbuf *) p; - rte_pktmbuf_free_seg(pkt); + rte_pktmbuf_free(pkt); } static void @@ -1089,7 +1089,7 @@ dpdk_queue_flush__(struct netdev_dpdk *dev, int qid) int i; for (i = nb_tx; i < txq->count; i++) { - rte_pktmbuf_free_seg(txq->burst_pkts[i]); + rte_pktmbuf_free(txq->burst_pkts[i]); } rte_spinlock_lock(&dev->stats_lock); dev->stats.tx_dropped += txq->count-nb_tx; -- 1.9.0 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev