Re: [Intel-wired-lan] [PATCH iwl-net v2] idpf: add missing cpu_to_le32 in idpf_tx_splitq_build_flow_desc
Marcin Szycik <[email protected]> Thu, 6 Aug 2026 16:32:13 +0200
| Newsgroups | org.osuosl.intel-wired-lan,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
On 06/08/2026 16:19, Willem de Bruijn wrote: > Marcin Szycik wrote: >> >> >> On 03/08/2026 23:06, Willem de Bruijn wrote: >>> From: Willem de Bruijn <[email protected]> >>> >>> idpf_tx_splitq_build_flow_desc performs a 32-bit store to &cmd_dtype >>> to set the 8-bit cmd_dtype and zero the adjacent 3-byte timestamp >>> field in a single operation. >>> >>> Descriptors are in little endian. Add missing cpu_to_le32 and cast to >>> __le32 to ensure the fields are written correctly also on big endian >>> platforms. >>> >>> Fixes: 1a49cf814fe1 ("idpf: add Tx timestamp flows") >>> Signed-off-by: Willem de Bruijn <[email protected]> >>> Reviewed-by: Tony Nguyen <[email protected]> >>> >>> --- >>> >>> Changes >>> v1 -> v2 >>> - add Fixes tag, Tony's Reviewed-by and Cc: [email protected] >>> v1: https://lore.kernel.org/netdev/[email protected]/ >>> --- >>> drivers/net/ethernet/intel/idpf/idpf_txrx.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c >>> index c724d429a7aa..91ca75e45463 100644 >>> --- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c >>> +++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c >>> @@ -2408,7 +2408,7 @@ void idpf_tx_splitq_build_flow_desc(union idpf_tx_flex_desc *desc, >>> struct idpf_tx_splitq_params *params, >>> u16 td_cmd, u16 size) >>> { >>> - *(u32 *)&desc->flow.qw1.cmd_dtype = (u8)(params->dtype | td_cmd); >>> + *(__le32 *)&desc->flow.qw1.cmd_dtype = cpu_to_le32((u8)(params->dtype | td_cmd)); >> >> While it technically works, I find it unreadable. Looking at this line >> without reading commit msg, it looks like a bug where a 4-byte value is >> written to u8 field. The intent to zero an adjacent, unrelated field is >> not clear. Consider assigning these 4 fields manually, or adding a >> comment/function doc. > > This is a bug fix, which generally should be the smallest surgical > change only. Agreed. > That said, I do agree on the style, and a follow-up for net-next will > clean that up too: > > @@ -2408,7 +2410,12 @@ void idpf_tx_splitq_build_flow_desc(union idpf_tx_flex_desc *desc, > struct idpf_tx_splitq_params *params, > u16 td_cmd, u16 size) > { > - *(__le32 *)&desc->flow.qw1.cmd_dtype = cpu_to_le32((u8)(params->dtype | td_cmd)); > + desc->flow.qw1.cmd_dtype = (u8)(params->dtype | td_cmd); > + > + desc->flow.qw1.ts[0] = params->offload.desc_ts[0]; > + desc->flow.qw1.ts[1] = params->offload.desc_ts[1]; > + desc->flow.qw1.ts[2] = params->offload.desc_ts[2]; > > The fix is queued. If there is consensus, I can respin. But given that > we will clean this up in net-next properly, my preference is to keep > the minimal fix as is. I'm fine with this. Was the cleanup patch already posted to next? Thanks, Marcin