[v2,1/3] pdump: use rte_pktmbuf_free bulk
Checks
Commit Message
Use rte_pktmbuf_free_bulk instead of loop when freeing
packets.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/pdump/main.c | 8 ++++----
lib/librte_pdump/rte_pdump.c | 6 +++---
2 files changed, 7 insertions(+), 7 deletions(-)
@@ -477,10 +477,10 @@ pdump_rxtx(struct rte_ring *ring, uint16_t vdev_id, struct pdump_stats *stats)
stats->tx_pkts += nb_in_txd;
if (unlikely(nb_in_txd < nb_in_deq)) {
- do {
- rte_pktmbuf_free(rxtx_bufs[nb_in_txd]);
- stats->freed_pkts++;
- } while (++nb_in_txd < nb_in_deq);
+ unsigned int drops = nb_in_deq - nb_in_txd;
+
+ rte_pktmbuf_free_bulk(&rxtx_bufs[nb_in_txd], drops);
+ stats->freed_pkts += drops;
}
}
}
@@ -93,11 +93,11 @@ pdump_copy(struct rte_mbuf **pkts, uint16_t nb_pkts, void *user_params)
ring_enq = rte_ring_enqueue_burst(ring, (void *)dup_bufs, d_pkts, NULL);
if (unlikely(ring_enq < d_pkts)) {
+ unsigned int drops = d_pkts - ring_enq;
+
PDUMP_LOG(DEBUG,
"only %d of packets enqueued to ring\n", ring_enq);
- do {
- rte_pktmbuf_free(dup_bufs[ring_enq]);
- } while (++ring_enq < d_pkts);
+ rte_pktmbuf_free_bulk(&dup_bufs[ring_enq], drops);
}
}