* [PATCH net v2] net: hip04: use 16-bit byte order for HI13X1 TX fields
@ 2026-09-20 3:36 Pengpeng Hou
2026-09-22 0:40 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Pengpeng Hou @ 2026-09-20 3:36 UTC (permalink / raw)
To: shenjian15
Cc: shaojijie, andrew+netdev, davem, edumazet, kuba, pabeni, netdev,
linux-kernel, xiaojiangfeng, horms, hppiscas
The HI13X1 TX descriptor stores send_size and data_offset in 16-bit
fields, unlike the 32-bit send_size field in the other descriptor
layout. The transmit path nevertheless converts both HI13X1 fields with
cpu_to_be32() before assigning them to u16 members.
On a little-endian CPU, the conversion moves these small values into the
upper half of the 32-bit result and the assignment discards that half.
The descriptor consequently loses the packet size and cache-line offset.
Use cpu_to_be16() for the two HI13X1 fields. Leave the other layout's
32-bit size conversion unchanged.
The issue was found by our static-analysis tool.
Fixes: d413779cdd93 ("net: hisilicon: Add an tx_desc to adapt HI13X1_GMAC")
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Jijie Shao <shaojijie@huawei.com>
Assisted-by: gpt 5
Signed-off-by: Pengpeng Hou <hppiscas@163.com>
---
Changes since v1:
https://lore.kernel.org/all/20260905132958.63085-1-hppiscas@163.com/
Use the full author name. Clarify the HI13X1/little-endian scope in
response to Simon. The finding came from source analysis; there is no
established explanation for why it remained unnoticed since 2019.
drivers/net/ethernet/hisilicon/hip04_eth.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/hisilicon/hip04_eth.c b/drivers/net/ethernet/hisilicon/hip04_eth.c
index fc2c47dcfaab..2920985144bf 100644
--- a/drivers/net/ethernet/hisilicon/hip04_eth.c
+++ b/drivers/net/ethernet/hisilicon/hip04_eth.c
@@ -527,13 +527,14 @@ hip04_mac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
priv->tx_skb[tx_head] = skb;
priv->tx_phys[tx_head] = phys;
- desc->send_size = (__force u32)cpu_to_be32(skb->len);
#if defined(CONFIG_HI13X1_GMAC)
+ desc->send_size = (__force u16)cpu_to_be16(skb->len);
desc->cfg = (__force u32)cpu_to_be32(TX_CLEAR_WB | TX_FINISH_CACHE_INV
| TX_RELEASE_TO_PPE | priv->port << TX_POOL_SHIFT);
- desc->data_offset = (__force u32)cpu_to_be32(phys & SOC_CACHE_LINE_MASK);
+ desc->data_offset = (__force u16)cpu_to_be16(phys & SOC_CACHE_LINE_MASK);
desc->send_addr = (__force u32)cpu_to_be32(phys & ~SOC_CACHE_LINE_MASK);
#else
+ desc->send_size = (__force u32)cpu_to_be32(skb->len);
desc->cfg = (__force u32)cpu_to_be32(TX_CLEAR_WB | TX_FINISH_CACHE_INV);
desc->send_addr = (__force u32)cpu_to_be32(phys);
#endif
base-commit: 518e5b794c06c0f0eb40df3e202274a66202c137
--
2.50.1 (Apple Git-155)
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH net v2] net: hip04: use 16-bit byte order for HI13X1 TX fields
2026-09-20 3:36 [PATCH net v2] net: hip04: use 16-bit byte order for HI13X1 TX fields Pengpeng Hou
@ 2026-09-22 0:40 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-09-22 0:40 UTC (permalink / raw)
To: Pengpeng Hou
Cc: shenjian15, shaojijie, andrew+netdev, davem, edumazet, kuba,
pabeni, netdev, linux-kernel, xiaojiangfeng, horms
Hello:
This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Sun, 20 Sep 2026 11:36:41 +0800 you wrote:
> The HI13X1 TX descriptor stores send_size and data_offset in 16-bit
> fields, unlike the 32-bit send_size field in the other descriptor
> layout. The transmit path nevertheless converts both HI13X1 fields with
> cpu_to_be32() before assigning them to u16 members.
>
> On a little-endian CPU, the conversion moves these small values into the
> upper half of the 32-bit result and the assignment discards that half.
> The descriptor consequently loses the packet size and cache-line offset.
>
> [...]
Here is the summary with links:
- [net,v2] net: hip04: use 16-bit byte order for HI13X1 TX fields
https://git.kernel.org/netdev/net-next/c/114bd09838ac
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-22 0:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-20 3:36 [PATCH net v2] net: hip04: use 16-bit byte order for HI13X1 TX fields Pengpeng Hou
2026-09-22 0:40 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®