[PATCH v2 09/68] app/testpmd: replace rte_memcpy with memcpy

Stephen Hemminger stephen at networkplumber.org
Fri Aug 21 21:24:04 CEST 2026


The standard C library memcpy is as fast and has more
checking by analysis tools than DPDK rte_memcpy.

Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
 app/test-pmd/cmdline.c      | 28 ++++++++++++++--------------
 app/test-pmd/cmdline_flow.c | 34 +++++++++++++++++-----------------
 app/test-pmd/config.c       | 13 ++++++-------
 app/test-pmd/csumonly.c     |  1 -
 app/test-pmd/flowgen.c      |  1 -
 app/test-pmd/iofwd.c        |  1 -
 app/test-pmd/macfwd.c       |  1 -
 app/test-pmd/macswap.c      |  1 -
 app/test-pmd/noisy_vnf.c    |  1 -
 app/test-pmd/rxonly.c       |  1 -
 app/test-pmd/testpmd.c      |  1 -
 app/test-pmd/txonly.c       |  7 +++----
 12 files changed, 40 insertions(+), 50 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 10ee7c5179..40aad7effa 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -10516,7 +10516,7 @@ static void cmd_set_vxlan_parsed(void *parsed_result,
 		vxlan_encap_conf.select_ipv4 = 0;
 	else
 		return;
-	rte_memcpy(vxlan_encap_conf.vni, &id.vni[1], 3);
+	memcpy(vxlan_encap_conf.vni, &id.vni[1], 3);
 	vxlan_encap_conf.udp_src = rte_cpu_to_be_16(res->udp_src);
 	vxlan_encap_conf.udp_dst = rte_cpu_to_be_16(res->udp_dst);
 	vxlan_encap_conf.ip_tos = res->tos;
@@ -10530,9 +10530,9 @@ static void cmd_set_vxlan_parsed(void *parsed_result,
 	}
 	if (vxlan_encap_conf.select_vlan)
 		vxlan_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(vxlan_encap_conf.eth_src, res->eth_src.addr_bytes,
+	memcpy(vxlan_encap_conf.eth_src, res->eth_src.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(vxlan_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+	memcpy(vxlan_encap_conf.eth_dst, res->eth_dst.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
 }
 
@@ -10711,7 +10711,7 @@ static void cmd_set_nvgre_parsed(void *parsed_result,
 		nvgre_encap_conf.select_ipv4 = 0;
 	else
 		return;
-	rte_memcpy(nvgre_encap_conf.tni, &id.tni[1], 3);
+	memcpy(nvgre_encap_conf.tni, &id.tni[1], 3);
 	if (nvgre_encap_conf.select_ipv4) {
 		IPV4_ADDR_TO_UINT(res->ip_src, nvgre_encap_conf.ipv4_src);
 		IPV4_ADDR_TO_UINT(res->ip_dst, nvgre_encap_conf.ipv4_dst);
@@ -10721,9 +10721,9 @@ static void cmd_set_nvgre_parsed(void *parsed_result,
 	}
 	if (nvgre_encap_conf.select_vlan)
 		nvgre_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(nvgre_encap_conf.eth_src, res->eth_src.addr_bytes,
+	memcpy(nvgre_encap_conf.eth_src, res->eth_src.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(nvgre_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+	memcpy(nvgre_encap_conf.eth_dst, res->eth_dst.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
 }
 
@@ -10838,9 +10838,9 @@ static void cmd_set_l2_encap_parsed(void *parsed_result,
 		return;
 	if (l2_encap_conf.select_vlan)
 		l2_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(l2_encap_conf.eth_src, res->eth_src.addr_bytes,
+	memcpy(l2_encap_conf.eth_src, res->eth_src.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(l2_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+	memcpy(l2_encap_conf.eth_dst, res->eth_dst.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
 }
 
@@ -11020,7 +11020,7 @@ static void cmd_set_mplsogre_encap_parsed(void *parsed_result,
 		mplsogre_encap_conf.select_ipv4 = 0;
 	else
 		return;
-	rte_memcpy(mplsogre_encap_conf.label, &id.label, 3);
+	memcpy(mplsogre_encap_conf.label, &id.label, 3);
 	if (mplsogre_encap_conf.select_ipv4) {
 		IPV4_ADDR_TO_UINT(res->ip_src, mplsogre_encap_conf.ipv4_src);
 		IPV4_ADDR_TO_UINT(res->ip_dst, mplsogre_encap_conf.ipv4_dst);
@@ -11030,9 +11030,9 @@ static void cmd_set_mplsogre_encap_parsed(void *parsed_result,
 	}
 	if (mplsogre_encap_conf.select_vlan)
 		mplsogre_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(mplsogre_encap_conf.eth_src, res->eth_src.addr_bytes,
+	memcpy(mplsogre_encap_conf.eth_src, res->eth_src.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(mplsogre_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+	memcpy(mplsogre_encap_conf.eth_dst, res->eth_dst.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
 }
 
@@ -11256,7 +11256,7 @@ static void cmd_set_mplsoudp_encap_parsed(void *parsed_result,
 		mplsoudp_encap_conf.select_ipv4 = 0;
 	else
 		return;
-	rte_memcpy(mplsoudp_encap_conf.label, &id.label, 3);
+	memcpy(mplsoudp_encap_conf.label, &id.label, 3);
 	mplsoudp_encap_conf.udp_src = rte_cpu_to_be_16(res->udp_src);
 	mplsoudp_encap_conf.udp_dst = rte_cpu_to_be_16(res->udp_dst);
 	if (mplsoudp_encap_conf.select_ipv4) {
@@ -11268,9 +11268,9 @@ static void cmd_set_mplsoudp_encap_parsed(void *parsed_result,
 	}
 	if (mplsoudp_encap_conf.select_vlan)
 		mplsoudp_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(mplsoudp_encap_conf.eth_src, res->eth_src.addr_bytes,
+	memcpy(mplsoudp_encap_conf.eth_src, res->eth_src.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(mplsoudp_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+	memcpy(mplsoudp_encap_conf.eth_dst, res->eth_dst.addr_bytes,
 		   RTE_ETHER_ADDR_LEN);
 }
 
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index fbbe36233b..fc98c42c61 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -13967,31 +13967,31 @@ cmd_set_raw_parsed_sample(const struct buffer *in)
 		switch (action->type) {
 		case RTE_FLOW_ACTION_TYPE_MARK:
 			size = sizeof(struct rte_flow_action_mark);
-			rte_memcpy(&sample_mark[idx],
+			memcpy(&sample_mark[idx],
 				(const void *)action->conf, size);
 			action->conf = &sample_mark[idx];
 			break;
 		case RTE_FLOW_ACTION_TYPE_COUNT:
 			size = sizeof(struct rte_flow_action_count);
-			rte_memcpy(&sample_count[idx],
+			memcpy(&sample_count[idx],
 				(const void *)action->conf, size);
 			action->conf = &sample_count[idx];
 			break;
 		case RTE_FLOW_ACTION_TYPE_QUEUE:
 			size = sizeof(struct rte_flow_action_queue);
-			rte_memcpy(&sample_queue[idx],
+			memcpy(&sample_queue[idx],
 				(const void *)action->conf, size);
 			action->conf = &sample_queue[idx];
 			break;
 		case RTE_FLOW_ACTION_TYPE_RSS:
 			size = sizeof(struct rte_flow_action_rss);
 			rss = action->conf;
-			rte_memcpy(&sample_rss_data[idx].conf,
+			memcpy(&sample_rss_data[idx].conf,
 				   (const void *)rss, size);
 			if (rss->key_len && rss->key) {
 				sample_rss_data[idx].conf.key =
 						sample_rss_data[idx].key;
-				rte_memcpy((void *)((uintptr_t)
+				memcpy((void *)((uintptr_t)
 					   sample_rss_data[idx].conf.key),
 					   (const void *)rss->key,
 					   sizeof(uint8_t) * rss->key_len);
@@ -13999,7 +13999,7 @@ cmd_set_raw_parsed_sample(const struct buffer *in)
 			if (rss->queue_num && rss->queue) {
 				sample_rss_data[idx].conf.queue =
 						sample_rss_data[idx].queue;
-				rte_memcpy((void *)((uintptr_t)
+				memcpy((void *)((uintptr_t)
 					   sample_rss_data[idx].conf.queue),
 					   (const void *)rss->queue,
 					   sizeof(uint16_t) * rss->queue_num);
@@ -14008,13 +14008,13 @@ cmd_set_raw_parsed_sample(const struct buffer *in)
 			break;
 		case RTE_FLOW_ACTION_TYPE_RAW_ENCAP:
 			size = sizeof(struct rte_flow_action_raw_encap);
-			rte_memcpy(&sample_encap[idx],
+			memcpy(&sample_encap[idx],
 				(const void *)action->conf, size);
 			action->conf = &sample_encap[idx];
 			break;
 		case RTE_FLOW_ACTION_TYPE_PORT_ID:
 			size = sizeof(struct rte_flow_action_port_id);
-			rte_memcpy(&sample_port_id[idx],
+			memcpy(&sample_port_id[idx],
 				(const void *)action->conf, size);
 			action->conf = &sample_port_id[idx];
 			break;
@@ -14022,7 +14022,7 @@ cmd_set_raw_parsed_sample(const struct buffer *in)
 			break;
 		case RTE_FLOW_ACTION_TYPE_VF:
 			size = sizeof(struct rte_flow_action_vf);
-			rte_memcpy(&sample_vf[idx],
+			memcpy(&sample_vf[idx],
 					(const void *)action->conf, size);
 			action->conf = &sample_vf[idx];
 			break;
@@ -14038,13 +14038,13 @@ cmd_set_raw_parsed_sample(const struct buffer *in)
 			break;
 		case RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR:
 			size = sizeof(struct rte_flow_action_ethdev);
-			rte_memcpy(&sample_port_representor[idx],
+			memcpy(&sample_port_representor[idx],
 					(const void *)action->conf, size);
 			action->conf = &sample_port_representor[idx];
 			break;
 		case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT:
 			size = sizeof(struct rte_flow_action_ethdev);
-			rte_memcpy(&sample_represented_port[idx],
+			memcpy(&sample_represented_port[idx],
 					(const void *)action->conf, size);
 			action->conf = &sample_represented_port[idx];
 			break;
@@ -14177,7 +14177,7 @@ cmd_set_raw_parsed(const struct buffer *in)
 			if (geneve_opt->option_len && geneve_opt->data) {
 				*total_size += geneve_opt->option_len *
 					       sizeof(uint32_t);
-				rte_memcpy(data_tail - (*total_size),
+				memcpy(data_tail - (*total_size),
 					   geneve_opt->data,
 					   geneve_opt->option_len * sizeof(uint32_t));
 			}
@@ -14217,7 +14217,7 @@ cmd_set_raw_parsed(const struct buffer *in)
 
 				/* We have to add GTP header extra word. */
 				*total_size += sizeof(ext_word);
-				rte_memcpy(data_tail - (*total_size),
+				memcpy(data_tail - (*total_size),
 					   &ext_word, sizeof(ext_word));
 			}
 			size = sizeof(struct rte_gtp_hdr);
@@ -14263,19 +14263,19 @@ cmd_set_raw_parsed(const struct buffer *in)
 				if (gre_opt->checksum_rsvd.checksum) {
 					*total_size +=
 						sizeof(gre_opt->checksum_rsvd);
-					rte_memcpy(data_tail - (*total_size),
+					memcpy(data_tail - (*total_size),
 						   &gre_opt->checksum_rsvd,
 						   sizeof(gre_opt->checksum_rsvd));
 				}
 				if (gre_opt->key.key) {
 					*total_size += sizeof(gre_opt->key.key);
-					rte_memcpy(data_tail - (*total_size),
+					memcpy(data_tail - (*total_size),
 						   &gre_opt->key.key,
 						   sizeof(gre_opt->key.key));
 				}
 				if (gre_opt->sequence.sequence) {
 					*total_size += sizeof(gre_opt->sequence.sequence);
-					rte_memcpy(data_tail - (*total_size),
+					memcpy(data_tail - (*total_size),
 						   &gre_opt->sequence.sequence,
 						   sizeof(gre_opt->sequence.sequence));
 				}
@@ -14288,7 +14288,7 @@ cmd_set_raw_parsed(const struct buffer *in)
 		}
 		if (size) {
 			*total_size += size;
-			rte_memcpy(data_tail - (*total_size), src_spec, size);
+			memcpy(data_tail - (*total_size), src_spec, size);
 			/* update some fields which cannot be set by cmdline */
 			update_fields((data_tail - (*total_size)), item,
 				      upper_layer);
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index aa03eb99cc..7810143383 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -24,7 +24,6 @@
 #include <rte_debug.h>
 #include <rte_log.h>
 #include <rte_memory.h>
-#include <rte_memcpy.h>
 #include <rte_memzone.h>
 #include <rte_launch.h>
 #include <rte_bus.h>
@@ -2263,9 +2262,9 @@ port_flow_tunnel_offload_cmd_prep(portid_t port_id,
 					pft->num_pmd_actions, &error);
 			return NULL;
 		}
-		rte_memcpy(pft->actions, pft->pmd_actions,
+		memcpy(pft->actions, pft->pmd_actions,
 			   pft->num_pmd_actions * sizeof(actions[0]));
-		rte_memcpy(pft->actions + pft->num_pmd_actions, actions,
+		memcpy(pft->actions + pft->num_pmd_actions, actions,
 			   num_actions * sizeof(actions[0]));
 	}
 	if (tunnel_ops->items) {
@@ -2291,9 +2290,9 @@ port_flow_tunnel_offload_cmd_prep(portid_t port_id,
 					pft->num_pmd_items, &error);
 			return NULL;
 		}
-		rte_memcpy(pft->items, pft->pmd_items,
+		memcpy(pft->items, pft->pmd_items,
 			   pft->num_pmd_items * sizeof(pattern[0]));
-		rte_memcpy(pft->items + pft->num_pmd_items, pattern,
+		memcpy(pft->items + pft->num_pmd_items, pattern,
 			   num_items * sizeof(pattern[0]));
 	}
 
@@ -2731,7 +2730,7 @@ port_flow_template_table_create(portid_t port_id, uint32_t id,
 	}
 	pt->nb_pattern_templates = nb_pattern_templates;
 	pt->nb_actions_templates = nb_actions_templates;
-	rte_memcpy(&pt->attr, table_attr,
+	memcpy(&pt->attr, table_attr,
 		   sizeof(struct rte_flow_template_table_attr));
 	printf("Template table #%u created\n", pt->id);
 	return 0;
@@ -3367,7 +3366,7 @@ port_queue_action_handle_update(portid_t port_id,
 		update = action->conf;
 		break;
 	case RTE_FLOW_ACTION_TYPE_METER_MARK:
-		rte_memcpy(&mtr_update.meter_mark, action->conf,
+		memcpy(&mtr_update.meter_mark, action->conf,
 			sizeof(struct rte_flow_action_meter_mark));
 		if (mtr_update.meter_mark.profile)
 			mtr_update.profile_valid = 1;
diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
index c841651756..7de2cf3b08 100644
--- a/app/test-pmd/csumonly.c
+++ b/app/test-pmd/csumonly.c
@@ -19,7 +19,6 @@
 #include <rte_debug.h>
 #include <rte_cycles.h>
 #include <rte_memory.h>
-#include <rte_memcpy.h>
 #include <rte_launch.h>
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
diff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c
index 8dac7b9209..1ec5b30071 100644
--- a/app/test-pmd/flowgen.c
+++ b/app/test-pmd/flowgen.c
@@ -19,7 +19,6 @@
 #include <rte_debug.h>
 #include <rte_cycles.h>
 #include <rte_memory.h>
-#include <rte_memcpy.h>
 #include <rte_launch.h>
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
diff --git a/app/test-pmd/iofwd.c b/app/test-pmd/iofwd.c
index ba06fae4a6..c9727d2856 100644
--- a/app/test-pmd/iofwd.c
+++ b/app/test-pmd/iofwd.c
@@ -24,7 +24,6 @@
 #include <rte_per_lcore.h>
 #include <rte_lcore.h>
 #include <rte_branch_prediction.h>
-#include <rte_memcpy.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_interrupts.h>
diff --git a/app/test-pmd/macfwd.c b/app/test-pmd/macfwd.c
index d19ace7395..ba63aedd79 100644
--- a/app/test-pmd/macfwd.c
+++ b/app/test-pmd/macfwd.c
@@ -19,7 +19,6 @@
 #include <rte_debug.h>
 #include <rte_cycles.h>
 #include <rte_memory.h>
-#include <rte_memcpy.h>
 #include <rte_launch.h>
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
diff --git a/app/test-pmd/macswap.c b/app/test-pmd/macswap.c
index 57f77003fe..e1f9be4901 100644
--- a/app/test-pmd/macswap.c
+++ b/app/test-pmd/macswap.c
@@ -19,7 +19,6 @@
 #include <rte_debug.h>
 #include <rte_cycles.h>
 #include <rte_memory.h>
-#include <rte_memcpy.h>
 #include <rte_launch.h>
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
diff --git a/app/test-pmd/noisy_vnf.c b/app/test-pmd/noisy_vnf.c
index 81d1187cfe..cf951e9532 100644
--- a/app/test-pmd/noisy_vnf.c
+++ b/app/test-pmd/noisy_vnf.c
@@ -24,7 +24,6 @@
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
 #include <rte_lcore.h>
-#include <rte_memcpy.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_ethdev.h>
diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c
index 315f9286cd..cc73cf4ebf 100644
--- a/app/test-pmd/rxonly.c
+++ b/app/test-pmd/rxonly.c
@@ -19,7 +19,6 @@
 #include <rte_debug.h>
 #include <rte_cycles.h>
 #include <rte_memory.h>
-#include <rte_memcpy.h>
 #include <rte_launch.h>
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index cab2fa1556..138f167caf 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -30,7 +30,6 @@
 #include <rte_debug.h>
 #include <rte_cycles.h>
 #include <rte_memory.h>
-#include <rte_memcpy.h>
 #include <rte_launch.h>
 #include <rte_bus.h>
 #include <rte_eal.h>
diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c
index a4acb85d29..5b8b3befa5 100644
--- a/app/test-pmd/txonly.c
+++ b/app/test-pmd/txonly.c
@@ -19,7 +19,6 @@
 #include <rte_debug.h>
 #include <rte_cycles.h>
 #include <rte_memory.h>
-#include <rte_memcpy.h>
 #include <rte_launch.h>
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
@@ -80,21 +79,21 @@ copy_buf_to_pkt_segs(void* buf, unsigned len, struct rte_mbuf *pkt,
 	copy_len = seg->data_len - offset;
 	seg_buf = rte_pktmbuf_mtod_offset(seg, char *, offset);
 	while (len > copy_len) {
-		rte_memcpy(seg_buf, buf, (size_t) copy_len);
+		memcpy(seg_buf, buf, (size_t) copy_len);
 		len -= copy_len;
 		buf = ((char*) buf + copy_len);
 		seg = seg->next;
 		seg_buf = rte_pktmbuf_mtod(seg, char *);
 		copy_len = seg->data_len;
 	}
-	rte_memcpy(seg_buf, buf, (size_t) len);
+	memcpy(seg_buf, buf, (size_t) len);
 }
 
 static inline void
 copy_buf_to_pkt(void* buf, unsigned len, struct rte_mbuf *pkt, unsigned offset)
 {
 	if (offset + len <= pkt->data_len) {
-		rte_memcpy(rte_pktmbuf_mtod_offset(pkt, char *, offset),
+		memcpy(rte_pktmbuf_mtod_offset(pkt, char *, offset),
 			buf, (size_t) len);
 		return;
 	}
-- 
2.53.0



More information about the dev mailing list