* [PATCH 1/2] net/sxe2: replace memcpy with structure assignment
@ 2026-07-28 14:37 Stephen Hemminger
2026-07-28 14:38 ` [PATCH 2/2] net/ixgbe: " Stephen Hemminger
0 siblings, 1 reply; 3+ messages in thread
From: Stephen Hemminger @ 2026-07-28 14:37 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, Jie Liu
When possible prefer structure assigment over untyped memcpy.
Found by cocci/struct-assign.cocci script.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/sxe2/sxe2_flow.c | 7 +++----
drivers/net/sxe2/sxe2_ipsec.c | 2 +-
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/net/sxe2/sxe2_flow.c b/drivers/net/sxe2/sxe2_flow.c
index 63cfc36968..6c2e743f30 100644
--- a/drivers/net/sxe2/sxe2_flow.c
+++ b/drivers/net/sxe2/sxe2_flow.c
@@ -416,7 +416,7 @@ static int32_t sxe2_flow_src_split_proc(struct rte_eth_dev *dev,
ret = -ENOMEM;
goto l_end;
}
- rte_memcpy(flow_new, flow, sizeof(struct sxe2_flow));
+ *flow_new = *flow;
TAILQ_INSERT_TAIL(sxe2_flow_list, flow_new, next);
flow_new->meta.flow_src_vsi =
flow_src_vsi[SXE2_MAX_DRV_TYPE_DPDK][idx];
@@ -437,7 +437,7 @@ static int32_t sxe2_flow_src_split_proc(struct rte_eth_dev *dev,
ret = -ENOMEM;
goto l_end;
}
- rte_memcpy(flow_new, flow, sizeof(struct sxe2_flow));
+ *flow_new = *flow;
TAILQ_INSERT_TAIL(sxe2_flow_list, flow_new, next);
flow_new->meta.flow_src_vsi =
flow_src_vsi[SXE2_MAX_DRV_TYPE_KERNEL][idx];
@@ -697,8 +697,7 @@ static int32_t sxe2_flow_tunnel_split_proc(struct rte_eth_dev *dev __rte_unused,
ret = -ENOMEM;
goto l_end;
}
- rte_memcpy(sxe2_flow_new, sxe2_flow_exist,
- sizeof(struct sxe2_flow));
+ *sxe2_flow_new = *sxe2_flow_exist;
pattern = &sxe2_flow_new->pattern_outer;
sxe2_flow_new->meta.tunnel_type =
SXE2_FLOW_TUNNEL_TYPE_GRE;
diff --git a/drivers/net/sxe2/sxe2_ipsec.c b/drivers/net/sxe2/sxe2_ipsec.c
index e783a51b85..81cf250fd2 100644
--- a/drivers/net/sxe2/sxe2_ipsec.c
+++ b/drivers/net/sxe2/sxe2_ipsec.c
@@ -1159,7 +1159,7 @@ int sxe2_ipsec_pkt_metadata_set(void *device, struct rte_security_session *sessi
md = RTE_MBUF_DYNFIELD(m, sxe2_sctx->ipsec_ctx.md_offset, struct sxe2_ipsec_pkt_metadata *);
- memcpy(md, &sxe2_sess->pkt_metadata_template, sizeof(struct sxe2_ipsec_pkt_metadata));
+ *md = sxe2_sess->pkt_metadata_template;
md->esp_head_offset = offset;
PMD_LOG_INFO(DRV, "ipsec metadata set, offset:%u, said:%u, mode:%u, algo:%u.", offset,
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] net/ixgbe: replace memcpy with structure assignment
2026-07-28 14:37 [PATCH 1/2] net/sxe2: replace memcpy with structure assignment Stephen Hemminger
@ 2026-07-28 14:38 ` Stephen Hemminger
2026-08-13 11:58 ` Bruce Richardson
0 siblings, 1 reply; 3+ messages in thread
From: Stephen Hemminger @ 2026-07-28 14:38 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, Anatoly Burakov, Vladimir Medvedkin
Where possible use structure assignment instead of memcpy
to preserve type checking. Found by cocci/struct-assign.cocci.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/intel/ixgbe/ixgbe_flow.c | 39 +++++++---------------------
1 file changed, 10 insertions(+), 29 deletions(-)
diff --git a/drivers/net/intel/ixgbe/ixgbe_flow.c b/drivers/net/intel/ixgbe/ixgbe_flow.c
index 6868893d46..7f1241951f 100644
--- a/drivers/net/intel/ixgbe/ixgbe_flow.c
+++ b/drivers/net/intel/ixgbe/ixgbe_flow.c
@@ -2866,9 +2866,7 @@ ixgbe_flow_create(struct rte_eth_dev *dev,
PMD_DRV_LOG(ERR, "failed to allocate memory");
goto out;
}
- memcpy(&ntuple_filter_ptr->filter_info,
- &ntuple_filter,
- sizeof(struct rte_eth_ntuple_filter));
+ ntuple_filter_ptr->filter_info = ntuple_filter;
flow->rule = ntuple_filter_ptr;
flow->filter_type = RTE_ETH_FILTER_NTUPLE;
return flow;
@@ -2890,9 +2888,7 @@ ixgbe_flow_create(struct rte_eth_dev *dev,
PMD_DRV_LOG(ERR, "failed to allocate memory");
goto out;
}
- memcpy(ðertype_filter_ptr->filter_info,
- ðertype_filter,
- sizeof(struct rte_eth_ethertype_filter));
+ ethertype_filter_ptr->filter_info = ethertype_filter;
flow->rule = ethertype_filter_ptr;
flow->filter_type = RTE_ETH_FILTER_ETHERTYPE;
return flow;
@@ -2912,9 +2908,7 @@ ixgbe_flow_create(struct rte_eth_dev *dev,
PMD_DRV_LOG(ERR, "failed to allocate memory");
goto out;
}
- memcpy(&syn_filter_ptr->filter_info,
- &syn_filter,
- sizeof(struct rte_eth_syn_filter));
+ syn_filter_ptr->filter_info = syn_filter;
flow->rule = syn_filter_ptr;
flow->filter_type = RTE_ETH_FILTER_SYN;
return flow;
@@ -2949,9 +2943,7 @@ ixgbe_flow_create(struct rte_eth_dev *dev,
fdir_info->n_flows++;
fdir_conf->mode = fdir_rule.mode;
- memcpy(&fdir_rule_ptr->filter_info,
- &fdir_rule,
- sizeof(struct ixgbe_fdir_rule));
+ fdir_rule_ptr->filter_info = fdir_rule;
flow->rule = fdir_rule_ptr;
flow->filter_type = RTE_ETH_FILTER_FDIR;
return flow;
@@ -2969,9 +2961,7 @@ ixgbe_flow_create(struct rte_eth_dev *dev,
PMD_DRV_LOG(ERR, "failed to allocate memory");
goto out;
}
- memcpy(&l2_tn_filter_ptr->filter_info,
- &l2_tn_filter,
- sizeof(struct ixgbe_l2_tunnel_conf));
+ l2_tn_filter_ptr->filter_info = l2_tn_filter;
flow->rule = l2_tn_filter_ptr;
flow->filter_type = RTE_ETH_FILTER_L2_TUNNEL;
return flow;
@@ -3124,9 +3114,7 @@ ixgbe_flow_destroy(struct rte_eth_dev *dev,
case RTE_ETH_FILTER_NTUPLE:
ntuple_filter_ptr = (struct ixgbe_ntuple_filter_ele *)
pmd_flow->rule;
- memcpy(&ntuple_filter,
- &ntuple_filter_ptr->filter_info,
- sizeof(struct rte_eth_ntuple_filter));
+ ntuple_filter = ntuple_filter_ptr->filter_info;
ret = ixgbe_add_del_ntuple_filter(adapter, &ntuple_filter, FALSE);
if (!ret)
rte_free(ntuple_filter_ptr);
@@ -3134,9 +3122,7 @@ ixgbe_flow_destroy(struct rte_eth_dev *dev,
case RTE_ETH_FILTER_ETHERTYPE:
ethertype_filter_ptr = (struct ixgbe_ethertype_filter_ele *)
pmd_flow->rule;
- memcpy(ðertype_filter,
- ðertype_filter_ptr->filter_info,
- sizeof(struct rte_eth_ethertype_filter));
+ ethertype_filter = ethertype_filter_ptr->filter_info;
ret = ixgbe_add_del_ethertype_filter(adapter,
ðertype_filter, FALSE);
if (!ret)
@@ -3145,18 +3131,14 @@ ixgbe_flow_destroy(struct rte_eth_dev *dev,
case RTE_ETH_FILTER_SYN:
syn_filter_ptr = (struct ixgbe_eth_syn_filter_ele *)
pmd_flow->rule;
- memcpy(&syn_filter,
- &syn_filter_ptr->filter_info,
- sizeof(struct rte_eth_syn_filter));
+ syn_filter = syn_filter_ptr->filter_info;
ret = ixgbe_syn_filter_set(adapter, &syn_filter, FALSE);
if (!ret)
rte_free(syn_filter_ptr);
break;
case RTE_ETH_FILTER_FDIR:
fdir_rule_ptr = (struct ixgbe_fdir_rule_ele *)pmd_flow->rule;
- memcpy(&fdir_rule,
- &fdir_rule_ptr->filter_info,
- sizeof(struct ixgbe_fdir_rule));
+ fdir_rule = fdir_rule_ptr->filter_info;
ret = ixgbe_fdir_filter_program(adapter, fdir_conf, &fdir_rule, TRUE, FALSE);
if (!ret) {
rte_free(fdir_rule_ptr);
@@ -3171,8 +3153,7 @@ ixgbe_flow_destroy(struct rte_eth_dev *dev,
case RTE_ETH_FILTER_L2_TUNNEL:
l2_tn_filter_ptr = (struct ixgbe_eth_l2_tunnel_conf_ele *)
pmd_flow->rule;
- memcpy(&l2_tn_filter, &l2_tn_filter_ptr->filter_info,
- sizeof(struct ixgbe_l2_tunnel_conf));
+ l2_tn_filter = l2_tn_filter_ptr->filter_info;
ret = ixgbe_dev_l2_tunnel_filter_del(adapter, &l2_tn_filter);
if (!ret)
rte_free(l2_tn_filter_ptr);
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 2/2] net/ixgbe: replace memcpy with structure assignment
2026-07-28 14:38 ` [PATCH 2/2] net/ixgbe: " Stephen Hemminger
@ 2026-08-13 11:58 ` Bruce Richardson
0 siblings, 0 replies; 3+ messages in thread
From: Bruce Richardson @ 2026-08-13 11:58 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev, Anatoly Burakov, Vladimir Medvedkin
On Tue, Jul 28, 2026 at 07:38:00AM -0700, Stephen Hemminger wrote:
> Where possible use structure assignment instead of memcpy
> to preserve type checking. Found by cocci/struct-assign.cocci.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
> drivers/net/intel/ixgbe/ixgbe_flow.c | 39 +++++++---------------------
> 1 file changed, 10 insertions(+), 29 deletions(-)
>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-13 11:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28 14:37 [PATCH 1/2] net/sxe2: replace memcpy with structure assignment Stephen Hemminger
2026-07-28 14:38 ` [PATCH 2/2] net/ixgbe: " Stephen Hemminger
2026-08-13 11:58 ` Bruce Richardson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox