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 <zoltan.kiss at linaro.org> --- 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