mbuf: make raw free function public

Rename __rte_mbuf_raw_free() as rte_mbuf_raw_free() and make
it public. The old function is kept for compat but is marked as
deprecated.

The next commit changes the behavior of rte_mbuf_raw_free() to
make it more consistent with rte_mbuf_raw_alloc().

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
Olivier Matz 2017-04-04 18:28:01 +02:00 committed by Thomas Monjalon
parent 54e9290269
commit 1f88c0a22b
3 changed files with 20 additions and 10 deletions

View File

@ -680,7 +680,7 @@ static void ena_rx_queue_release_bufs(struct ena_ring *ring)
ring->rx_buffer_info[ring->next_to_clean & ring_mask];
if (m)
__rte_mbuf_raw_free(m);
rte_mbuf_raw_free(m);
ring->next_to_clean++;
}

View File

@ -2000,7 +2000,7 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
assert(pkt != (*rxq->elts)[idx]);
rep = NEXT(pkt);
rte_mbuf_refcnt_set(pkt, 0);
__rte_mbuf_raw_free(pkt);
rte_mbuf_raw_free(pkt);
pkt = rep;
}
break;
@ -2011,13 +2011,13 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
&rss_hash_res);
if (!len) {
rte_mbuf_refcnt_set(rep, 0);
__rte_mbuf_raw_free(rep);
rte_mbuf_raw_free(rep);
break;
}
if (unlikely(len == -1)) {
/* RX error, packet is likely too large. */
rte_mbuf_refcnt_set(rep, 0);
__rte_mbuf_raw_free(rep);
rte_mbuf_raw_free(rep);
++rxq->stats.idropped;
goto skip;
}

View File

@ -797,20 +797,30 @@ static inline struct rte_mbuf *rte_mbuf_raw_alloc(struct rte_mempool *mp)
}
/**
* @internal Put mbuf back into its original mempool.
* The use of that function is reserved for RTE internal needs.
* Please use rte_pktmbuf_free().
* Put mbuf back into its original mempool.
*
* The caller must ensure that the mbuf is direct and that the
* reference counter is 0.
*
* @param m
* The mbuf to be freed.
*/
static inline void __attribute__((always_inline))
__rte_mbuf_raw_free(struct rte_mbuf *m)
rte_mbuf_raw_free(struct rte_mbuf *m)
{
RTE_ASSERT(RTE_MBUF_DIRECT(m));
RTE_ASSERT(rte_mbuf_refcnt_read(m) == 0);
rte_mempool_put(m->pool, m);
}
/* compat with older versions */
__rte_deprecated
static inline void __attribute__((always_inline))
__rte_mbuf_raw_free(struct rte_mbuf *m)
{
rte_mbuf_raw_free(m);
}
/* Operations on ctrl mbuf */
/**
@ -1217,7 +1227,7 @@ static inline void rte_pktmbuf_detach(struct rte_mbuf *m)
m->ol_flags = 0;
if (rte_mbuf_refcnt_update(md, -1) == 0)
__rte_mbuf_raw_free(md);
rte_mbuf_raw_free(md);
}
/**
@ -1272,7 +1282,7 @@ rte_pktmbuf_free_seg(struct rte_mbuf *m)
m = rte_pktmbuf_prefree_seg(m);
if (likely(m != NULL)) {
m->next = NULL;
__rte_mbuf_raw_free(m);
rte_mbuf_raw_free(m);
}
}