[PATCH 17/20] test: use rte_pktmbuf_free_bulk

Stephen Hemminger stephen at networkplumber.org
Fri May 8 22:33:38 CEST 2026


Replace open-coded loop with rte_pktmbuf_free_bulk().

Generated by devtools/cocci/free_bulk.cocci.

Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
 app/test/sample_packet_forward.c |  5 +----
 app/test/test_distributor.c      |  4 +---
 app/test/test_dmadev.c           |  6 ++----
 app/test/test_ipfrag.c           |  4 +---
 app/test/test_link_bonding.c     | 13 ++++---------
 app/test/test_pmd_perf.c         |  3 +--
 app/test/test_pmd_tap.c          |  3 +--
 app/test/test_reorder.c          | 12 ++++--------
 app/test/test_table_ports.c      | 12 ++++--------
 app/test/test_table_tables.c     | 21 +++++++--------------
 10 files changed, 26 insertions(+), 57 deletions(-)

diff --git a/app/test/sample_packet_forward.c b/app/test/sample_packet_forward.c
index aa897274d8..70bb75e321 100644
--- a/app/test/sample_packet_forward.c
+++ b/app/test/sample_packet_forward.c
@@ -115,10 +115,7 @@ test_get_mbuf_from_pool(struct rte_mempool **mp, struct rte_mbuf **pbuf,
 void
 test_put_mbuf_to_pool(struct rte_mempool *mp, struct rte_mbuf **pbuf)
 {
-	int itr = 0;
-
-	for (itr = 0; itr < NUM_PACKETS; itr++)
-		rte_pktmbuf_free(pbuf[itr]);
+	rte_pktmbuf_free_bulk(pbuf, NUM_PACKETS);
 	rte_mempool_free(mp);
 }
 
diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c
index da0a21ea83..ed37ca80f1 100644
--- a/app/test/test_distributor.c
+++ b/app/test/test_distributor.c
@@ -309,7 +309,6 @@ handle_work_with_free_mbufs(void *arg)
 	alignas(RTE_CACHE_LINE_SIZE) struct rte_mbuf *buf[8];
 	struct worker_params *wp = arg;
 	struct rte_distributor *d = wp->dist;
-	unsigned int i;
 	unsigned int num;
 	unsigned int id = rte_atomic_fetch_add_explicit(&worker_idx, 1, rte_memory_order_relaxed);
 
@@ -317,8 +316,7 @@ handle_work_with_free_mbufs(void *arg)
 	while (!quit) {
 		rte_atomic_fetch_add_explicit(&worker_stats[id].handled_packets, num,
 				rte_memory_order_relaxed);
-		for (i = 0; i < num; i++)
-			rte_pktmbuf_free(buf[i]);
+		rte_pktmbuf_free_bulk(buf, num);
 		num = rte_distributor_get_pkt(d, id, buf, NULL, 0);
 	}
 	rte_atomic_fetch_add_explicit(&worker_stats[id].handled_packets, num,
diff --git a/app/test/test_dmadev.c b/app/test/test_dmadev.c
index 5488a1af33..a5772cc843 100644
--- a/app/test/test_dmadev.c
+++ b/app/test/test_dmadev.c
@@ -499,10 +499,8 @@ test_enqueue_sg_copies(int16_t dev_id, uint16_t vchan)
 				ERR_RETURN("Error:incorrect job id received when no job done, %u [expected %u]\n",
 						id, 0);
 
-			for (i = 0; i < n_src; i++)
-				rte_pktmbuf_free(src[i]);
-			for (i = 0; i < n_dst; i++)
-				rte_pktmbuf_free(dst[i]);
+			rte_pktmbuf_free_bulk(src, n_src);
+			rte_pktmbuf_free_bulk(dst, n_dst);
 
 			/* Verify that completion returns nothing more */
 			if (rte_dma_completed(dev_id, 0, 1, NULL, NULL) != 0)
diff --git a/app/test/test_ipfrag.c b/app/test/test_ipfrag.c
index 247575d6c5..2c553222c2 100644
--- a/app/test/test_ipfrag.c
+++ b/app/test/test_ipfrag.c
@@ -240,9 +240,7 @@ v6_allocate_packet_of(struct rte_mbuf *b, int fill, size_t s, uint8_t ttl,
 static inline void
 test_free_fragments(struct rte_mbuf *mb[], uint32_t num)
 {
-	uint32_t i;
-	for (i = 0; i < num; i++)
-		rte_pktmbuf_free(mb[i]);
+	rte_pktmbuf_free_bulk(mb, num);
 }
 
 static inline void
diff --git a/app/test/test_link_bonding.c b/app/test/test_link_bonding.c
index 19b064771a..eac785610a 100644
--- a/app/test/test_link_bonding.c
+++ b/app/test/test_link_bonding.c
@@ -1476,10 +1476,7 @@ verify_mbufs_ref_count(struct rte_mbuf **mbufs, int nb_mbufs, int val)
 static void
 free_mbufs(struct rte_mbuf **mbufs, int nb_mbufs)
 {
-	int i;
-
-	for (i = 0; i < nb_mbufs; i++)
-		rte_pktmbuf_free(mbufs[i]);
+	rte_pktmbuf_free_bulk(mbufs, nb_mbufs);
 }
 
 #define TEST_RR_MEMBER_TX_FAIL_MEMBER_COUNT		(2)
@@ -4193,7 +4190,7 @@ testsuite_teardown(void)
 static void
 free_virtualpmd_tx_queue(void)
 {
-	int i, member_port, to_free_cnt;
+	int member_port, to_free_cnt;
 	struct rte_mbuf *pkts_to_free[MAX_PKT_BURST];
 
 	/* Free tx queue of virtual pmd */
@@ -4202,8 +4199,7 @@ free_virtualpmd_tx_queue(void)
 		to_free_cnt = virtual_ethdev_get_mbufs_from_tx_queue(
 				test_params->member_port_ids[member_port],
 				pkts_to_free, MAX_PKT_BURST);
-		for (i = 0; i < to_free_cnt; i++)
-			rte_pktmbuf_free(pkts_to_free[i]);
+		rte_pktmbuf_free_bulk(pkts_to_free, to_free_cnt);
 	}
 }
 
@@ -4381,8 +4377,7 @@ test_tlb_rx_burst(void)
 		}
 
 		/* free mbufs */
-		for (i = 0; i < burst_size; i++)
-			rte_pktmbuf_free(rx_pkt_burst[i]);
+		rte_pktmbuf_free_bulk(rx_pkt_burst, burst_size);
 
 		/* reset bonding device stats */
 		rte_eth_stats_reset(test_params->bonding_port_id);
diff --git a/app/test/test_pmd_perf.c b/app/test/test_pmd_perf.c
index 995b0a6f20..dab1751b9a 100644
--- a/app/test/test_pmd_perf.c
+++ b/app/test/test_pmd_perf.c
@@ -602,8 +602,7 @@ poll_burst(void *args)
 	       total, MAX_IDLE - timeout);
 	/* clean up */
 	total = pkt_per_port * conf->nb_ports - total;
-	for (i = 0; i < total; i++)
-		rte_pktmbuf_free(pkts_burst[i]);
+	rte_pktmbuf_free_bulk(pkts_burst, total);
 
 	rte_free(pkts_burst);
 
diff --git a/app/test/test_pmd_tap.c b/app/test/test_pmd_tap.c
index 6d0e8b4f54..f48b69de3b 100644
--- a/app/test/test_pmd_tap.c
+++ b/app/test/test_pmd_tap.c
@@ -192,8 +192,7 @@ test_tap_send_receive(void)
 	printf("Received %u packets on port %d\n", nb_rx, tap_port0);
 
 	/* Free received packets */
-	for (i = 0; i < nb_rx; i++)
-		rte_pktmbuf_free(rx_mbufs[i]);
+	rte_pktmbuf_free_bulk(rx_mbufs, nb_rx);
 
 	return TEST_SUCCESS;
 }
diff --git a/app/test/test_reorder.c b/app/test/test_reorder.c
index 8c68e00869..fc922650d6 100644
--- a/app/test/test_reorder.c
+++ b/app/test/test_reorder.c
@@ -208,8 +208,7 @@ test_reorder_insert(void)
 	ret = 0;
 exit:
 	rte_reorder_free(b);
-	for (i = 0; i < INSERT_NUM_BUFS; i++)
-		rte_pktmbuf_free(bufs[i]);
+	rte_pktmbuf_free_bulk(bufs, INSERT_NUM_BUFS);
 
 	return ret;
 }
@@ -382,8 +381,7 @@ test_reorder_drain_up_to_seqn(void)
 		ret = -1;
 		goto exit;
 	}
-	for (i = 0; i < 2; i++)
-		rte_pktmbuf_free(robufs[i]);
+	rte_pktmbuf_free_bulk(robufs, 2);
 	memset(robufs, 0, sizeof(robufs));
 
 	/* Insert more packets
@@ -406,8 +404,7 @@ test_reorder_drain_up_to_seqn(void)
 		ret = -1;
 		goto exit;
 	}
-	for (i = 0; i < 2; i++)
-		rte_pktmbuf_free(robufs[i]);
+	rte_pktmbuf_free_bulk(robufs, 2);
 	memset(robufs, 0, sizeof(robufs));
 
 	ret = 0;
@@ -483,8 +480,7 @@ test_reorder_set_seqn(void)
 	ret = 0;
 exit:
 	rte_reorder_free(b);
-	for (i = 0; i < SET_SEQN_NUM_BUFS; i++)
-		rte_pktmbuf_free(bufs[i]);
+	rte_pktmbuf_free_bulk(bufs, SET_SEQN_NUM_BUFS);
 
 	return ret;
 }
diff --git a/app/test/test_table_ports.c b/app/test/test_table_ports.c
index 282ec2a3d2..d617e73810 100644
--- a/app/test/test_table_ports.c
+++ b/app/test/test_table_ports.c
@@ -73,8 +73,7 @@ test_port_ring_reader(void)
 	if (received_pkts < expected_pkts)
 		return -6;
 
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(res_mbuf[i]);
+	rte_pktmbuf_free_bulk(res_mbuf, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	return 0;
 }
@@ -156,8 +155,7 @@ test_port_ring_writer(void)
 	if (received_pkts < expected_pkts)
 		return -8;
 
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(res_mbuf[i]);
+	rte_pktmbuf_free_bulk(res_mbuf, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	/* TX Bulk */
 	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
@@ -171,8 +169,7 @@ test_port_ring_writer(void)
 	if (received_pkts < expected_pkts)
 		return -8;
 
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(res_mbuf[i]);
+	rte_pktmbuf_free_bulk(res_mbuf, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
 		mbuf[i] = rte_pktmbuf_alloc(pool);
@@ -186,8 +183,7 @@ test_port_ring_writer(void)
 	if (received_pkts < expected_pkts)
 		return -9;
 
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(res_mbuf[i]);
+	rte_pktmbuf_free_bulk(res_mbuf, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	return 0;
 }
diff --git a/app/test/test_table_tables.c b/app/test/test_table_tables.c
index 920aa555cb..d2c09c360f 100644
--- a/app/test/test_table_tables.c
+++ b/app/test/test_table_tables.c
@@ -162,8 +162,7 @@ test_table_stub(void)
 		return -2;
 
 	/* Free resources */
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(mbufs[i]);
+	rte_pktmbuf_free_bulk(mbufs, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	return 0;
 }
@@ -276,8 +275,7 @@ test_table_array(void)
 				return -13;
 
 	/* Free resources */
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(mbufs[i]);
+	rte_pktmbuf_free_bulk(mbufs, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	status = rte_table_array_ops.f_free(table);
 
@@ -442,8 +440,7 @@ test_table_lpm(void)
 		return -23;
 
 	/* Free resources */
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(mbufs[i]);
+	rte_pktmbuf_free_bulk(mbufs, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	status = rte_table_lpm_ops.f_free(table);
 
@@ -620,8 +617,7 @@ test_table_lpm_ipv6(void)
 		return -24;
 
 	/* Free resources */
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(mbufs[i]);
+	rte_pktmbuf_free_bulk(mbufs, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	status = rte_table_lpm_ipv6_ops.f_free(table);
 
@@ -723,8 +719,7 @@ test_table_hash_lru_generic(struct rte_table_ops *ops, uint32_t key_size)
 		return -13;
 
 	/* Free resources */
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(mbufs[i]);
+	rte_pktmbuf_free_bulk(mbufs, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	status = ops->f_free(table);
 
@@ -833,8 +828,7 @@ test_table_hash_ext_generic(struct rte_table_ops *ops, uint32_t key_size)
 		return -13;
 
 	/* Free resources */
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(mbufs[i]);
+	rte_pktmbuf_free_bulk(mbufs, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	status = ops->f_free(table);
 
@@ -1047,8 +1041,7 @@ test_table_hash_cuckoo(void)
 		return -20;
 
 	/* Free resources */
-	for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
-		rte_pktmbuf_free(mbufs[i]);
+	rte_pktmbuf_free_bulk(mbufs, RTE_PORT_IN_BURST_SIZE_MAX);
 
 	status = rte_table_hash_cuckoo_ops.f_free(table);
 
-- 
2.53.0



More information about the dev mailing list