From 9de836c71531afe2443b55f34c9400d7cc889f5d Mon Sep 17 00:00:00 2001 From: Kevin Paul Herbert Date: Tue, 15 Dec 2015 16:56:50 -0800 Subject: dpdk_buffer.c: Honor clone_count even when there isn't a freelist handler The DPDK glue did not support cloned packets which do not have a freelist handler. Add support for this case. Change-Id: I8f17cd4952df97989d90d3f3e39792bc3739705c Signed-off-by: Kevin Paul Herbert --- vlib/vlib/dpdk_buffer.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'vlib') diff --git a/vlib/vlib/dpdk_buffer.c b/vlib/vlib/dpdk_buffer.c index 43612a86..9db84a16 100644 --- a/vlib/vlib/dpdk_buffer.c +++ b/vlib/vlib/dpdk_buffer.c @@ -724,10 +724,13 @@ vlib_buffer_free_inline (vlib_main_t * vm, } else { - mb = ((struct rte_mbuf *)b)-1; - ASSERT(rte_mbuf_refcnt_read(mb) == 1); - rte_pktmbuf_free (mb); - } + if (PREDICT_TRUE (b->clone_count == 0)) + { + mb = ((struct rte_mbuf *)b)-1; + ASSERT(rte_mbuf_refcnt_read(mb) == 1); + rte_pktmbuf_free (mb); + } + } } if (vec_len(bm->announce_list)) { -- cgit 1.2.3-korg