Message ID | 20230401-mtk_eth_soc-sparse-v1-1-84e9fc7b8eab@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | net: ethernet: mtk_eth_soc: use be32 type to store be32 values | expand |
On Sat, Apr 01, 2023 at 08:43:44AM +0200, Simon Horman wrote: > Perhaps there is a nicer way to handle this but the code > calls for converting an array of host byte order 32bit values > to big endian 32bit values: an ipv6 address to be pretty printed. > > Use a sparse-friendly array of be32 to store these values. > > Also make use of the cpu_to_be32_array helper rather > than open coding the conversion. > > Flagged by sparse: > drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c:59:27: warning: incorrect type in assignment (different base types) > drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c:59:27: expected unsigned int > drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c:59:27: got restricted __be32 [usertype] > drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c:161:46: warning: cast to restricted __be16 > > No functional changes intended. > Compile tested only. > > Signed-off-by: Simon Horman <horms@kernel.org> Sorry, I forgot to tag this for net-next. I can repost if needed, after an appropriate pause.
On Sat, Apr 01, 2023 at 08:43:44AM +0200, Simon Horman wrote: > Perhaps there is a nicer way to handle this but the code > calls for converting an array of host byte order 32bit values > to big endian 32bit values: an ipv6 address to be pretty printed. Hi Simon Maybe make a generic helper? I could be used in other places, e.g: https://elixir.bootlin.com/linux/latest/source/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c#L6773 Andrew
On Sat, Apr 01, 2023 at 05:55:35PM +0200, Andrew Lunn wrote: > On Sat, Apr 01, 2023 at 08:43:44AM +0200, Simon Horman wrote: > > Perhaps there is a nicer way to handle this but the code > > calls for converting an array of host byte order 32bit values > > to big endian 32bit values: an ipv6 address to be pretty printed. > > Hi Simon > > Maybe make a generic helper? I could be used in other places, e.g: > > https://elixir.bootlin.com/linux/latest/source/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c#L6773 Hi Andrew, do you mean something like this? diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 7332296eca44..cff6c1177502 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -935,6 +935,11 @@ static inline void iph_to_flow_copy_v6addrs(struct flow_keys *flow, flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; } +static inline void ipv6_addr_cpu_to_be32(__be32 *dst, const u32 *src) +{ + cpu_to_be32_array(dst, src, 4); +} + #if IS_ENABLED(CONFIG_IPV6) static inline bool ipv6_can_nonlocal_bind(struct net *net,
diff --git a/drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c b/drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c index 53cf87e9acbb..1e0bb8cee7c4 100644 --- a/drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c +++ b/drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c @@ -47,16 +47,14 @@ static const char *mtk_foe_pkt_type_str(int type) static void mtk_print_addr(struct seq_file *m, u32 *addr, bool ipv6) { - u32 n_addr[4]; - int i; + __be32 n_addr[4]; if (!ipv6) { seq_printf(m, "%pI4h", addr); return; } - for (i = 0; i < ARRAY_SIZE(n_addr); i++) - n_addr[i] = htonl(addr[i]); + cpu_to_be32_array(n_addr, addr, 4); seq_printf(m, "%pI6", n_addr); }
Perhaps there is a nicer way to handle this but the code calls for converting an array of host byte order 32bit values to big endian 32bit values: an ipv6 address to be pretty printed. Use a sparse-friendly array of be32 to store these values. Also make use of the cpu_to_be32_array helper rather than open coding the conversion. Flagged by sparse: drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c:59:27: warning: incorrect type in assignment (different base types) drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c:59:27: expected unsigned int drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c:59:27: got restricted __be32 [usertype] drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c:161:46: warning: cast to restricted __be16 No functional changes intended. Compile tested only. Signed-off-by: Simon Horman <horms@kernel.org> --- drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)