From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Junlong Wang <wang.junlong1@zte.com.cn>,
Ming Ran <ran.ming@zte.com.cn>
Subject: [PATCH v2 52/68] net/zxdh: replace use of rte_memcpy
Date: Fri, 21 Aug 2026 12:24:47 -0700 [thread overview]
Message-ID: <20260821192646.146382-53-stephen@networkplumber.org> (raw)
In-Reply-To: <20260821192646.146382-1-stephen@networkplumber.org>
The uses of rte_memcpy() in the control path of the zxdh driver
have no performance benefit over regular memcpy(), and regular
memcpy() gets more compile time checking of the arguments.
The only remaining rte_memcpy() is in zxdh_xmit_fill_net_hdr()
which is on the transmit fast path.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/zxdh/zxdh_common.c | 7 ++--
drivers/net/zxdh/zxdh_flow.c | 67 +++++++++++++++++++---------------
drivers/net/zxdh/zxdh_msg.c | 15 ++++----
drivers/net/zxdh/zxdh_mtr.c | 10 ++---
drivers/net/zxdh/zxdh_np.c | 1 -
drivers/net/zxdh/zxdh_queue.c | 8 ++--
drivers/net/zxdh/zxdh_tables.c | 21 ++++++-----
7 files changed, 70 insertions(+), 59 deletions(-)
diff --git a/drivers/net/zxdh/zxdh_common.c b/drivers/net/zxdh/zxdh_common.c
index 2b821b1dc8..1dff77aee8 100644
--- a/drivers/net/zxdh/zxdh_common.c
+++ b/drivers/net/zxdh/zxdh_common.c
@@ -7,7 +7,6 @@
#include <ethdev_driver.h>
#include <rte_malloc.h>
-#include <rte_memcpy.h>
#include "zxdh_ethdev.h"
#include "zxdh_logs.h"
@@ -79,7 +78,7 @@ zxdh_fill_common_msg(struct zxdh_hw *hw, struct zxdh_pci_bar_msg *desc,
msg_data->pcie_id = hw->pcie_id;
msg_data->slen = buff_size;
if (buff_size != 0)
- rte_memcpy(msg_data + 1, buff, buff_size);
+ memcpy(msg_data + 1, buff, buff_size);
return 0;
}
@@ -123,7 +122,7 @@ zxdh_common_rsp_check(struct zxdh_msg_recviver_mem *msg_rsp,
return -1;
}
if (len != 0)
- rte_memcpy(buff, rsp_hdr + 1, len);
+ memcpy(buff, rsp_hdr + 1, len);
return 0;
}
@@ -228,7 +227,7 @@ zxdh_get_res_info(struct zxdh_res_para *dev, uint8_t field, uint8_t *res, uint16
return ret;
}
*len = tbl_reps->len;
- rte_memcpy(res, (recv_buf + ZXDH_REPS_HEADER_OFFSET +
+ memcpy(res, (recv_buf + ZXDH_REPS_HEADER_OFFSET +
sizeof(struct zxdh_tbl_msg_reps_header)), *len);
return ret;
}
diff --git a/drivers/net/zxdh/zxdh_flow.c b/drivers/net/zxdh/zxdh_flow.c
index 56ac34c6e3..ee6275c337 100644
--- a/drivers/net/zxdh/zxdh_flow.c
+++ b/drivers/net/zxdh/zxdh_flow.c
@@ -94,9 +94,9 @@ static void
zxdh_adjust_flow_op_rsp_memory_layout(void *old_data,
size_t old_size, void *new_data)
{
- rte_memcpy(new_data, old_data, sizeof(struct zxdh_flow));
+ memcpy(new_data, old_data, sizeof(struct zxdh_flow));
memset((char *)new_data + sizeof(struct zxdh_flow), 0, 4);
- rte_memcpy((char *)new_data + sizeof(struct zxdh_flow) + 4,
+ memcpy((char *)new_data + sizeof(struct zxdh_flow) + 4,
(char *)old_data + sizeof(struct zxdh_flow),
old_size - sizeof(struct zxdh_flow));
}
@@ -1328,14 +1328,14 @@ static int fd_flow_parse_pattern(struct rte_eth_dev *dev, const struct rte_flow_
ipv4_mask->hdr.type_of_service;
key->frag_flag = (ipv4_spec->hdr.fragment_offset != 0) ? 1 : 0;
key_mask->frag_flag = (ipv4_mask->hdr.fragment_offset != 0) ? 1 : 0;
- rte_memcpy((uint32_t *)key->src_ip + 3,
- &ipv4_spec->hdr.src_addr, 4);
- rte_memcpy((uint32_t *)key->dst_ip + 3,
- &ipv4_spec->hdr.dst_addr, 4);
- rte_memcpy((uint32_t *)key_mask->src_ip + 3,
- &ipv4_mask->hdr.src_addr, 4);
- rte_memcpy((uint32_t *)key_mask->dst_ip + 3,
- &ipv4_mask->hdr.dst_addr, 4);
+ memcpy((uint32_t *)key->src_ip + 3,
+ &ipv4_spec->hdr.src_addr, 4);
+ memcpy((uint32_t *)key->dst_ip + 3,
+ &ipv4_spec->hdr.dst_addr, 4);
+ memcpy((uint32_t *)key_mask->src_ip + 3,
+ &ipv4_mask->hdr.src_addr, 4);
+ memcpy((uint32_t *)key_mask->dst_ip + 3,
+ &ipv4_mask->hdr.dst_addr, 4);
}
break;
case RTE_FLOW_ITEM_TYPE_IPV6:
@@ -1364,14 +1364,14 @@ static int fd_flow_parse_pattern(struct rte_eth_dev *dev, const struct rte_flow_
key->nw_proto = ipv6_spec->hdr.proto;
key_mask->nw_proto = ipv6_mask->hdr.proto;
- rte_memcpy(key->src_ip,
- &ipv6_spec->hdr.src_addr, 16);
- rte_memcpy(key->dst_ip,
- &ipv6_spec->hdr.dst_addr, 16);
- rte_memcpy(key_mask->src_ip,
- &ipv6_mask->hdr.src_addr, 16);
- rte_memcpy(key_mask->dst_ip,
- &ipv6_mask->hdr.dst_addr, 16);
+ memcpy(key->src_ip, &ipv6_spec->hdr.src_addr,
+ 16);
+ memcpy(key->dst_ip, &ipv6_spec->hdr.dst_addr,
+ 16);
+ memcpy(key_mask->src_ip,
+ &ipv6_mask->hdr.src_addr, 16);
+ memcpy(key_mask->dst_ip,
+ &ipv6_mask->hdr.dst_addr, 16);
}
break;
case RTE_FLOW_ITEM_TYPE_TCP:
@@ -1477,8 +1477,8 @@ static int fd_flow_parse_pattern(struct rte_eth_dev *dev, const struct rte_flow_
"Invalid vxlan mask");
return -rte_errno;
}
- rte_memcpy(key->vni, vxlan_spec->vni, 3);
- rte_memcpy(key_mask->vni, vxlan_mask->vni, 3);
+ memcpy(key->vni, vxlan_spec->vni, 3);
+ memcpy(key_mask->vni, vxlan_mask->vni, 3);
break;
}
case RTE_FLOW_ACTION_TYPE_VOID:
@@ -1573,10 +1573,14 @@ fd_flow_parse_vxlan_encap(struct rte_eth_dev *dev __rte_unused,
switch (items->type) {
case RTE_FLOW_ITEM_TYPE_ETH:
item_eth = items->spec;
- rte_memcpy(&dh_flow->encap0.dst_mac1, item_eth->dst.addr_bytes, 2);
- rte_memcpy(&dh_flow->encap1.src_mac1, item_eth->src.addr_bytes, 2);
- rte_memcpy(&dh_flow->encap0.dst_mac2, &item_eth->dst.addr_bytes[2], 4);
- rte_memcpy(&dh_flow->encap1.src_mac2, &item_eth->src.addr_bytes[2], 4);
+ memcpy(&dh_flow->encap0.dst_mac1,
+ item_eth->dst.addr_bytes, 2);
+ memcpy(&dh_flow->encap1.src_mac1,
+ item_eth->src.addr_bytes, 2);
+ memcpy(&dh_flow->encap0.dst_mac2,
+ &item_eth->dst.addr_bytes[2], 4);
+ memcpy(&dh_flow->encap1.src_mac2,
+ &item_eth->src.addr_bytes[2], 4);
dh_flow->encap0.dst_mac1 = rte_bswap16(dh_flow->encap0.dst_mac1);
dh_flow->encap1.src_mac1 = rte_bswap16(dh_flow->encap1.src_mac1);
dh_flow->encap0.dst_mac2 = rte_bswap32(dh_flow->encap0.dst_mac2);
@@ -1592,9 +1596,11 @@ fd_flow_parse_vxlan_encap(struct rte_eth_dev *dev __rte_unused,
dh_flow->encap0.tos = item_ipv4->hdr.type_of_service;
dh_flow->encap0.ttl = item_ipv4->hdr.time_to_live;
addr = rte_bswap32(item_ipv4->hdr.src_addr);
- rte_memcpy((uint32_t *)dh_flow->encap1.sip.ip_addr + 3, &addr, 4);
+ memcpy((uint32_t *)dh_flow->encap1.sip.ip_addr + 3,
+ &addr, 4);
addr = rte_bswap32(item_ipv4->hdr.dst_addr);
- rte_memcpy((uint32_t *)dh_flow->encap0.dip.ip_addr + 3, &addr, 4);
+ memcpy((uint32_t *)dh_flow->encap0.dip.ip_addr + 3,
+ &addr, 4);
break;
case RTE_FLOW_ITEM_TYPE_IPV6:
item_ipv6 = items->spec;
@@ -1603,7 +1609,8 @@ fd_flow_parse_vxlan_encap(struct rte_eth_dev *dev __rte_unused,
(item_ipv6->hdr.vtc_flow & RTE_IPV6_HDR_TC_MASK) >>
RTE_IPV6_HDR_TC_SHIFT;
dh_flow->encap0.ttl = item_ipv6->hdr.hop_limits;
- rte_memcpy(dh_flow->encap1.sip.ip_addr, &item_ipv6->hdr.src_addr, 16);
+ memcpy(dh_flow->encap1.sip.ip_addr,
+ &item_ipv6->hdr.src_addr, 16);
dh_flow->encap1.sip.ip_addr[0] =
rte_bswap32(dh_flow->encap1.sip.ip_addr[0]);
dh_flow->encap1.sip.ip_addr[1] =
@@ -1612,7 +1619,8 @@ fd_flow_parse_vxlan_encap(struct rte_eth_dev *dev __rte_unused,
rte_bswap32(dh_flow->encap1.sip.ip_addr[2]);
dh_flow->encap1.sip.ip_addr[3] =
rte_bswap32(dh_flow->encap1.sip.ip_addr[3]);
- rte_memcpy(dh_flow->encap0.dip.ip_addr, &item_ipv6->hdr.dst_addr, 16);
+ memcpy(dh_flow->encap0.dip.ip_addr,
+ &item_ipv6->hdr.dst_addr, 16);
dh_flow->encap0.dip.ip_addr[0] =
rte_bswap32(dh_flow->encap0.dip.ip_addr[0]);
dh_flow->encap0.dip.ip_addr[1] =
@@ -1909,7 +1917,8 @@ vf_flow_msg_process(enum zxdh_msg_type msg_type, struct rte_eth_dev *dev,
if (msg_type == ZXDH_FLOW_HW_ADD)
dh_flow->flowentry.hw_idx = flow_rsp->dh_flow.flowentry.hw_idx;
if (count)
- rte_memcpy((void *)count, &flow_rsp->count, sizeof(flow_rsp->count));
+ memcpy((void *)count, &flow_rsp->count,
+ sizeof(flow_rsp->count));
return ret;
}
diff --git a/drivers/net/zxdh/zxdh_msg.c b/drivers/net/zxdh/zxdh_msg.c
index 4b01daf37a..64aa0ac5f9 100644
--- a/drivers/net/zxdh/zxdh_msg.c
+++ b/drivers/net/zxdh/zxdh_msg.c
@@ -3,9 +3,9 @@
*/
#include <stdbool.h>
+#include <string.h>
#include <rte_common.h>
-#include <rte_memcpy.h>
#include <rte_spinlock.h>
#include <rte_cycles.h>
#include <inttypes.h>
@@ -899,7 +899,7 @@ zxdh_bar_msg_ack_async_msg_proc(struct zxdh_bar_msg_header *msg_header,
}
uint8_t *reps_buffer = (uint8_t *)reps_info->reps_addr;
- rte_memcpy(reps_buffer + 4, receiver_buff, msg_header->len);
+ memcpy(reps_buffer + 4, receiver_buff, msg_header->len);
*(uint16_t *)(reps_buffer + 1) = msg_header->len;
*(uint8_t *)(reps_info->reps_addr) = ZXDH_REPS_HEADER_REPLYED;
@@ -1406,13 +1406,13 @@ zxdh_vf_port_uninit(struct zxdh_hw *pf_hw, uint16_t vport,
}
*res_len += strlen(str);
- rte_memcpy(reply_data_addr, str, strlen(str) + 1);
+ memcpy(reply_data_addr, str, strlen(str) + 1);
ZXDH_SET(msg_reply_body, res_info, flag, ZXDH_REPS_SUCC);
return ret;
proc_end:
*res_len += strlen(str);
- rte_memcpy(reply_data_addr, str, strlen(str) + 1);
+ memcpy(reply_data_addr, str, strlen(str) + 1);
ZXDH_SET(msg_reply_body, res_info, flag, ZXDH_REPS_FAIL);
return ret;
}
@@ -1458,7 +1458,7 @@ zxdh_add_vf_mac_table(struct zxdh_hw *hw, uint16_t vport,
success:
sprintf(str, " vport 0x%x set mac ret 0x%x\n", port.vport, ret);
*reply_len = strlen(str) + ZXDH_MSG_REPLYBODY_HEAD;
- rte_memcpy(reply_data_addr, str, strlen(str) + 1);
+ memcpy(reply_data_addr, str, strlen(str) + 1);
ZXDH_SET(msg_reply_body, reply_body, flag, ZXDH_REPS_SUCC);
PMD_DRV_LOG(DEBUG, " reply len %d", *reply_len);
return ret;
@@ -1499,7 +1499,7 @@ zxdh_del_vf_mac_table(struct zxdh_hw *hw, uint16_t vport,
sprintf(str, "vport 0x%x del mac ret 0x%x\n", port.vport, ret);
*res_len = strlen(str) + ZXDH_MSG_REPLYBODY_HEAD;
- rte_memcpy(reply_data_addr, str, strlen(str) + 1);
+ memcpy(reply_data_addr, str, strlen(str) + 1);
ZXDH_SET(msg_reply_body, res_info, flag, ZXDH_REPS_SUCC);
return ret;
@@ -2331,7 +2331,8 @@ zxdh_vf_flow_hw_get(struct zxdh_hw *pf_hw, uint16_t vport,
}
PMD_DRV_LOG(INFO, " res len :%d", *res_len);
dh_flow = flow_rsp_addr;
- rte_memcpy(&dh_flow->flowentry, &flow_entry->dh_flow.flowentry, sizeof(dh_flow->flowentry));
+ memcpy(&dh_flow->flowentry, &flow_entry->dh_flow.flowentry,
+ sizeof(dh_flow->flowentry));
ZXDH_SET(msg_reply_body, res_info, flag, ZXDH_REPS_SUCC);
return 0;
}
diff --git a/drivers/net/zxdh/zxdh_mtr.c b/drivers/net/zxdh/zxdh_mtr.c
index b23f6535a8..48318a6941 100644
--- a/drivers/net/zxdh/zxdh_mtr.c
+++ b/drivers/net/zxdh/zxdh_mtr.c
@@ -590,9 +590,8 @@ static int zxdh_hw_profile_config(struct rte_eth_dev *dev, uint16_t hw_profile_i
zxdh_plcr_profile_cfg->car_type = CAR_A;
zxdh_plcr_profile_cfg->packet_mode = mp->profile.packet_mode;
zxdh_plcr_profile_cfg->hw_profile_id = hw_profile_id;
- rte_memcpy(&zxdh_plcr_profile_cfg->plcr_param,
- &mp->plcr_param,
- sizeof(zxdh_plcr_profile_cfg->plcr_param));
+ memcpy(&zxdh_plcr_profile_cfg->plcr_param, &mp->plcr_param,
+ sizeof(zxdh_plcr_profile_cfg->plcr_param));
zxdh_msg_head_build(hw, ZXDH_PLCR_CAR_PROFILE_CFG_SET, &msg_info);
ret = zxdh_vf_send_msg_to_pf(dev,
@@ -685,7 +684,7 @@ zxdh_meter_profile_add(struct rte_eth_dev *dev,
mp->meter_profile_id = meter_profile_id;
mp->dpdk_port_id = dev->data->port_id;
mp->hw_profile_id = UINT16_MAX;
- rte_memcpy(&mp->profile, profile, sizeof(struct rte_mtr_meter_profile));
+ memcpy(&mp->profile, profile, sizeof(struct rte_mtr_meter_profile));
ret = zxdh_mtr_profile_offload(dev, mp, profile, error);
if (ret) {
@@ -772,7 +771,8 @@ zxdh_meter_policy_add(struct rte_eth_dev *dev,
memset(mtr_policy, 0, sizeof(struct zxdh_meter_policy));
mtr_policy->policy_id = policy_id;
mtr_policy->dpdk_port_id = dev->data->port_id;
- rte_memcpy(&mtr_policy->policy, policy, sizeof(struct rte_mtr_meter_policy_params));
+ memcpy(&mtr_policy->policy, policy,
+ sizeof(struct rte_mtr_meter_policy_params));
/* Add to list. */
TAILQ_INSERT_TAIL(&zxdh_shared_data->mtr_policy_list, mtr_policy, next);
mtr_policy->ref_cnt++;
diff --git a/drivers/net/zxdh/zxdh_np.c b/drivers/net/zxdh/zxdh_np.c
index b078ec5b6c..41542a89d8 100644
--- a/drivers/net/zxdh/zxdh_np.c
+++ b/drivers/net/zxdh/zxdh_np.c
@@ -9,7 +9,6 @@
#include <rte_log.h>
#include <rte_debug.h>
#include <rte_malloc.h>
-#include <rte_memcpy.h>
#include "zxdh_np.h"
#include "zxdh_logs.h"
diff --git a/drivers/net/zxdh/zxdh_queue.c b/drivers/net/zxdh/zxdh_queue.c
index 7162593b16..c47bc44710 100644
--- a/drivers/net/zxdh/zxdh_queue.c
+++ b/drivers/net/zxdh/zxdh_queue.c
@@ -244,8 +244,8 @@ zxdh_dev_rx_queue_setup(struct rte_eth_dev *dev,
hw->queue_conf->queue_changed = 1;
}
- rte_memcpy(&hw->queue_conf->conf[queue_idx].zxdh_rx_conf,
- rx_conf, sizeof(struct rte_eth_rxconf));
+ memcpy(&hw->queue_conf->conf[queue_idx].zxdh_rx_conf, rx_conf,
+ sizeof(struct rte_eth_rxconf));
hw->queue_conf->conf[queue_idx].rx_nb_desc = valid_nb_desc;
hw->queue_conf->conf[queue_idx].queue_mp = mp;
@@ -336,8 +336,8 @@ zxdh_dev_tx_queue_setup(struct rte_eth_dev *dev,
hw->queue_conf->queue_changed = 1;
}
- rte_memcpy(&hw->queue_conf->conf[queue_idx].zxdh_tx_conf,
- tx_conf, sizeof(struct rte_eth_txconf));
+ memcpy(&hw->queue_conf->conf[queue_idx].zxdh_tx_conf, tx_conf,
+ sizeof(struct rte_eth_txconf));
hw->queue_conf->conf[queue_idx].tx_nb_desc = valid_nb_desc;
return 0;
diff --git a/drivers/net/zxdh/zxdh_tables.c b/drivers/net/zxdh/zxdh_tables.c
index 233d53a7e8..5ee1a7dea8 100644
--- a/drivers/net/zxdh/zxdh_tables.c
+++ b/drivers/net/zxdh/zxdh_tables.c
@@ -248,7 +248,8 @@ zxdh_add_mac_table(struct zxdh_hw *hw, uint16_t vport, struct rte_ether_addr *ad
int32_t ret;
if (rte_is_unicast_ether_addr(addr)) {
- rte_memcpy(unicast_table.key.dmac_addr, addr, sizeof(struct rte_ether_addr));
+ memcpy(unicast_table.key.dmac_addr, addr,
+ sizeof(struct rte_ether_addr));
unicast_table.key.sriov_vlan_tpid = srv_tpid;
unicast_table.key.sriov_vlan_id = srv_vlanid;
@@ -286,8 +287,8 @@ zxdh_add_mac_table(struct zxdh_hw *hw, uint16_t vport, struct rte_ether_addr *ad
} else {
for (group_id = 0; group_id < 4; group_id++) {
multicast_table.key.vf_group_id = group_id;
- rte_memcpy(multicast_table.key.mac_addr,
- addr, sizeof(struct rte_ether_addr));
+ memcpy(multicast_table.key.mac_addr, addr,
+ sizeof(struct rte_ether_addr));
ZXDH_DTB_HASH_ENTRY_INFO_T dtb_hash_entry = {
.p_actu_key = (uint8_t *)&multicast_table.key,
.p_rst = (uint8_t *)&multicast_table.entry
@@ -353,7 +354,8 @@ zxdh_del_mac_table(struct zxdh_hw *hw, uint16_t vport, struct rte_ether_addr *ad
int32_t ret = 0;
if (rte_is_unicast_ether_addr(addr)) {
- rte_memcpy(unicast_table.key.dmac_addr, addr, sizeof(struct rte_ether_addr));
+ memcpy(unicast_table.key.dmac_addr, addr,
+ sizeof(struct rte_ether_addr));
unicast_table.key.sriov_vlan_id = srv_vlanid;
unicast_table.key.sriov_vlan_tpid = srv_tpid;
unicast_table.entry.hit_flag = 0;
@@ -385,7 +387,8 @@ zxdh_del_mac_table(struct zxdh_hw *hw, uint16_t vport, struct rte_ether_addr *ad
}
} else {
multicast_table.key.vf_group_id = vport_num.vfid / 64;
- rte_memcpy(multicast_table.key.mac_addr, addr, sizeof(struct rte_ether_addr));
+ memcpy(multicast_table.key.mac_addr, addr,
+ sizeof(struct rte_ether_addr));
ZXDH_DTB_HASH_ENTRY_INFO_T dtb_hash_entry = {
.p_actu_key = (uint8_t *)&multicast_table.key,
@@ -416,8 +419,8 @@ zxdh_del_mac_table(struct zxdh_hw *hw, uint16_t vport, struct rte_ether_addr *ad
for (group_id = 0; group_id < ZXDH_MC_GROUP_NUM; group_id++) {
multicast_table.key.vf_group_id = group_id;
- rte_memcpy(multicast_table.key.mac_addr, addr,
- sizeof(struct rte_ether_addr));
+ memcpy(multicast_table.key.mac_addr, addr,
+ sizeof(struct rte_ether_addr));
ZXDH_DTB_HASH_ENTRY_INFO_T dtb_hash_entry = {
.p_actu_key = (uint8_t *)&multicast_table.key,
.p_rst = (uint8_t *)&multicast_table.entry
@@ -441,8 +444,8 @@ zxdh_del_mac_table(struct zxdh_hw *hw, uint16_t vport, struct rte_ether_addr *ad
if (del_flag) {
for (group_id = 0; group_id < ZXDH_MC_GROUP_NUM; group_id++) {
multicast_table.key.vf_group_id = group_id;
- rte_memcpy(multicast_table.key.mac_addr, addr,
- sizeof(struct rte_ether_addr));
+ memcpy(multicast_table.key.mac_addr, addr,
+ sizeof(struct rte_ether_addr));
ZXDH_DTB_HASH_ENTRY_INFO_T dtb_hash_entry = {
.p_actu_key = (uint8_t *)&multicast_table.key,
.p_rst = (uint8_t *)&multicast_table.entry
--
2.53.0
next prev parent reply other threads:[~2026-08-21 19:32 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-20 5:11 [PATCH 00/61] reduce use of rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 01/61] devtools/cocci: add script to replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 02/61] app/testpmd: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 03/61] test: use memcpy instead of rte_memcpy Stephen Hemminger
2026-08-20 6:22 ` Morten Brørup
2026-08-20 16:22 ` Stephen Hemminger
2026-08-21 6:37 ` Morten Brørup
2026-08-20 5:11 ` [PATCH 04/61] app/graph: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 05/61] lpm: remove unnecessary include of rte_memcpy.h Stephen Hemminger
2026-08-20 5:11 ` [PATCH 06/61] acl: " Stephen Hemminger
2026-08-20 5:11 ` [PATCH 07/61] drivers/bus: " Stephen Hemminger
2026-08-20 5:11 ` [PATCH 08/61] security: replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 09/61] ethdev: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 10/61] net: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 11/61] pdcp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 12/61] eventdev: replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 13/61] eal: replace rte_memcpy of cpuset Stephen Hemminger
2026-08-20 5:12 ` [PATCH 14/61] cryptodev: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 15/61] drivers/raw: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 16/61] test-pipeline: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 17/61] net/af_xdp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 18/61] net/avp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 19/61] net/axgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 20/61] net/bnx2x: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 21/61] net/bnxt: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 22/61] net/bonding: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 23/61] net/cnxk: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 24/61] net/cxgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 25/61] net/dpaa2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 26/61] net/enic: " Stephen Hemminger
2026-08-20 9:05 ` Hyong Youb Kim (hyonkim)
2026-08-20 5:12 ` [PATCH 27/61] net/failsafe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 28/61] net/gve: " Stephen Hemminger
2026-08-20 20:42 ` Joshua Washington
2026-08-20 5:12 ` [PATCH 29/61] net/hinic: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 30/61] net/hns3: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 31/61] net/mlx5: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 32/61] net/mvpp2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 33/61] net/netvsc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 34/61] net/nfp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 35/61] net/ngbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 36/61] net/ntnic: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 37/61] net/null: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 38/61] net/qede: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 39/61] net/ring: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 40/61] net/sfc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 41/61] net/txgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 42/61] net/vhost: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 43/61] net/virtio: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 44/61] net/sxe2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 45/61] net/zxdh: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 46/61] net/memif: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 47/61] net/ice: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 48/61] test-bbdev: remove unnecessary include rte_memcpy.h Stephen Hemminger
2026-08-20 5:12 ` [PATCH 49/61] drivers/mempool: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 50/61] ml/cnxk: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 51/61] drivers/event: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 52/61] baseband/la12xx: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 53/61] baseband/acc: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 54/61] drivers/*/qat: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 55/61] hash: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 56/61] rib: remove rte_memcpy include Stephen Hemminger
2026-08-20 5:12 ` [PATCH 57/61] pcapng: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 58/61] efd: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 59/61] net/xsc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 60/61] net/pcap: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 61/61] power: " Stephen Hemminger
2026-08-20 7:31 ` [PATCH 00/61] reduce " Morten Brørup
2026-08-20 8:16 ` Bruce Richardson
2026-08-20 8:46 ` Konstantin Ananyev
2026-08-20 9:03 ` Morten Brørup
2026-08-20 13:07 ` Konstantin Ananyev
2026-08-20 14:00 ` Morten Brørup
2026-08-20 20:13 ` Stephen Hemminger
2026-08-20 20:16 ` Stephen Hemminger
2026-08-20 20:18 ` Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 00/68] " Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 01/68] devtools/cocci: add script to replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 02/68] lib: add missing include of rte_memcpy.h Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 03/68] net: " Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 04/68] crypto: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 05/68] drivers: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 06/68] app: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 07/68] examples: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 08/68] eal: document when to use rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 09/68] app/testpmd: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 10/68] test: use memcpy instead of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 11/68] app/graph: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 12/68] lpm: remove unnecessary include of rte_memcpy.h Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 13/68] acl: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 14/68] drivers/bus: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 15/68] security: replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 16/68] ethdev: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 17/68] net: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 18/68] pdcp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 19/68] eventdev: replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 20/68] eal: replace rte_memcpy of cpuset Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 21/68] cryptodev: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 22/68] drivers/raw: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 23/68] test-pipeline: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 24/68] net/af_xdp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 25/68] net/avp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 26/68] net/axgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 27/68] net/bnx2x: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 28/68] net/bnxt: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 29/68] net/bonding: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 30/68] net/cnxk: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 31/68] net/cxgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 32/68] net/dpaa2: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 33/68] net/enic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 34/68] net/failsafe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 35/68] net/gve: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 36/68] net/hinic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 37/68] net/hns3: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 38/68] net/mlx5: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 39/68] net/mvpp2: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 40/68] net/netvsc: " Stephen Hemminger
2026-08-21 20:08 ` [EXTERNAL] " Long Li
2026-08-21 19:24 ` [PATCH v2 41/68] net/nfp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 42/68] net/ngbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 43/68] net/ntnic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 44/68] net/null: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 45/68] net/qede: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 46/68] net/ring: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 47/68] net/sfc: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 48/68] net/txgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 49/68] net/vhost: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 50/68] net/virtio: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 51/68] net/sxe2: " Stephen Hemminger
2026-08-21 19:24 ` Stephen Hemminger [this message]
2026-08-21 19:24 ` [PATCH v2 53/68] net/memif: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 54/68] net/ice: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 55/68] test-bbdev: remove unnecessary include rte_memcpy.h Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 56/68] drivers/mempool: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 57/68] ml/cnxk: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 58/68] drivers/event: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 59/68] baseband/la12xx: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 60/68] baseband/acc: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 61/68] drivers/*/qat: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 62/68] hash: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 63/68] rib: remove rte_memcpy include Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 64/68] pcapng: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 65/68] efd: " Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 66/68] net/xsc: " Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 67/68] net/pcap: " Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 68/68] power: " Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260821192646.146382-53-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=ran.ming@zte.com.cn \
--cc=wang.junlong1@zte.com.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).