Thanks for the patch! Were you able to hit this bug in your setup or did you just find this by code inspection?
I'm asking because I'm wondering whether we should backport the fix. In any case I've applied this to master and added your name to the AUTHORS file, thanks! On 07/03/2016 17:50, "dev on behalf of Yuanhan Liu" <dev-boun...@openvswitch.org on behalf of yuanhan....@linux.intel.com> wrote: >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 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev