src/dpdk/lib/librte_mbuf/rte_mbuf.h
static inline void
__rte_pktmbuf_free_direct(struct rte_mbuf *m)
{
	struct rte_mbuf *md;

	RTE_ASSERT(RTE_MBUF_CLONED(m));

	md = rte_mbuf_from_indirect(m);

	if (rte_mbuf_refcnt_update(md, -1) == 0) {
		md->next = NULL;
		md->nb_segs = 1;
		rte_mbuf_refcnt_set(md, 1);
		rte_mbuf_raw_free(md);
	}
}
/**
 * @internal used by rte_pktmbuf_detach().
 *
 * Decrement the direct mbuf's reference counter. When the reference
 * counter becomes 0, the direct mbuf is freed.
 */
@internal used by rte_pktmbuf_detach().
Decrement the direct mbuf's reference counter. When the reference
counter becomes 0, the direct mbuf is freed.
@internal used by rte_pktmbuf_detach () . Decrement the direct mbuf ' s reference counter . When the reference counter becomes 0 the direct mbuf is freed .
static inline void
__rte_pktmbuf_free_direct(struct rte_mbuf *m)
{
	struct rte_mbuf *md;
	RTE_ASSERT(RTE_MBUF_CLONED(m));
	md = rte_mbuf_from_indirect(m);
	if (rte_mbuf_refcnt_update(md, -1) == 0) {
		md->next = NULL;
		md->nb_segs = 1;
		rte_mbuf_refcnt_set(md, 1);
		rte_mbuf_raw_free(md);
	}
}
static inline void __rte_pktmbuf_free_direct ( struct rte_mbuf * m ) { struct rte_mbuf * md ; RTE_ASSERT ( RTE_MBUF_CLONED ( m ) ) ; md = rte_mbuf_from_indirect ( m ) ; if ( rte_mbuf_refcnt_update ( md , -1 ) == 0 ) { md -> next = NULL ; md -> nb_segs = 1 ; rte_mbuf_refcnt_set ( md , 1 ) ; rte_mbuf_raw_free ( md ) ; } }
@internal used by rte_pktmbuf_detach().
@internal used by rte_pktmbuf_detach () .