From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zoltan Kiss Subject: [PATCH] mbuf: optimize refcnt handling during free Date: Thu, 26 Mar 2015 18:10:57 +0000 Message-ID: <1427393457-7080-1-git-send-email-zoltan.kiss@linaro.org> Cc: Zoltan Kiss To: dev-VfR2kkLFssw@public.gmane.org Return-path: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" The current way is not the most efficient: if m->refcnt is 1, the second condition never evaluates, and we set it to 0. If refcnt > 1, the 2nd condition fails again, although the code suggest otherwise to branch prediction. Instead we should keep the second condition only, and remove the duplicate set to zero. Signed-off-by: Zoltan Kiss --- lib/librte_mbuf/rte_mbuf.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index 17ba791..3ec4024 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -764,10 +764,7 @@ __rte_pktmbuf_prefree_seg(struct rte_mbuf *m) { __rte_mbuf_sanity_check(m, 0); - if (likely (rte_mbuf_refcnt_read(m) == 1) || - likely (rte_mbuf_refcnt_update(m, -1) == 0)) { - - rte_mbuf_refcnt_set(m, 0); + if (likely (rte_mbuf_refcnt_update(m, -1) == 0)) { /* if this is an indirect mbuf, then * - detach mbuf -- 1.9.1