* [PATCH net-next 0/3] ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers
@ 2024-08-12 12:11 Simon Horman
2024-08-12 12:11 ` [PATCH net-next 1/3] " Simon Horman
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Simon Horman @ 2024-08-12 12:11 UTC (permalink / raw)
To: Andrew Lunn
Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi,
Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang,
Salil Mehta, Jijie Shao, netdev, linux-kernel, linux-arm-kernel,
linux-mediatek
Hi,
This series adds and uses some new helpers,
ipv6_addr_{cpu_to_be32,be32_to_cpu}, which are intended to assist in
byte order manipulation of IPv6 addresses stored as as arrays.
---
Simon Horman (3):
ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers
net: ethernet: mtk_eth_soc: Use ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers
net: hns3: Use ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 79 +++++++++++-----------
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.h | 8 ++-
drivers/net/ethernet/mediatek/mtk_ppe.c | 10 +--
drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c | 9 +--
include/net/ipv6.h | 12 ++++
5 files changed, 66 insertions(+), 52 deletions(-)
base-commit: c4e82c025b3f2561823b4ba7c5f112a2005f442b
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH net-next 1/3] ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers 2024-08-12 12:11 [PATCH net-next 0/3] ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers Simon Horman @ 2024-08-12 12:11 ` Simon Horman 2024-08-12 12:37 ` Andrew Lunn 2024-08-12 12:11 ` [PATCH net-next 2/3] net: ethernet: mtk_eth_soc: Use " Simon Horman 2024-08-12 12:11 ` [PATCH net-next 3/3] net: hns3: " Simon Horman 2 siblings, 1 reply; 9+ messages in thread From: Simon Horman @ 2024-08-12 12:11 UTC (permalink / raw) To: Andrew Lunn Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi, Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang, Salil Mehta, Jijie Shao, netdev, linux-kernel, linux-arm-kernel, linux-mediatek Add helper to convert an ipv6 addr, expressed as an array of words, from cpy to big-endian byte order. No functional change intended. Compile tested only. Suggested-by: Andrew Lunn <andrew@lunn.ch> Link: https://lore.kernel.org/netdev/c7684349-535c-45a4-9a74-d47479a50020@lunn.ch/ Signed-off-by: Simon Horman <horms@kernel.org> --- include/net/ipv6.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 88a8e554f7a1..e7113855a10f 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -1365,4 +1365,16 @@ static inline void ip6_sock_set_recvpktinfo(struct sock *sk) release_sock(sk); } +#define IPV6_ADDR_WORDS 4 + +static inline void ipv6_addr_cpu_to_be32(__be32 *dst, const u32 *src) +{ + cpu_to_be32_array(dst, src, IPV6_ADDR_WORDS); +} + +static inline void ipv6_addr_be32_to_cpu(u32 *dst, const __be32 *src) +{ + be32_to_cpu_array(dst, src, IPV6_ADDR_WORDS); +} + #endif /* _NET_IPV6_H */ -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 1/3] ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers 2024-08-12 12:11 ` [PATCH net-next 1/3] " Simon Horman @ 2024-08-12 12:37 ` Andrew Lunn 2024-08-12 12:50 ` Simon Horman 0 siblings, 1 reply; 9+ messages in thread From: Andrew Lunn @ 2024-08-12 12:37 UTC (permalink / raw) To: Simon Horman Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi, Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang, Salil Mehta, Jijie Shao, netdev, linux-kernel, linux-arm-kernel, linux-mediatek On Mon, Aug 12, 2024 at 01:11:55PM +0100, Simon Horman wrote: > Add helper to convert an ipv6 addr, expressed as an array > of words, from cpy to big-endian byte order. Hi Simon Is cpy supposed to be cpu? Otherwise, please add: Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 1/3] ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers 2024-08-12 12:37 ` Andrew Lunn @ 2024-08-12 12:50 ` Simon Horman 0 siblings, 0 replies; 9+ messages in thread From: Simon Horman @ 2024-08-12 12:50 UTC (permalink / raw) To: Andrew Lunn Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi, Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang, Salil Mehta, Jijie Shao, netdev, linux-kernel, linux-arm-kernel, linux-mediatek On Mon, Aug 12, 2024 at 02:37:36PM +0200, Andrew Lunn wrote: > On Mon, Aug 12, 2024 at 01:11:55PM +0100, Simon Horman wrote: > > Add helper to convert an ipv6 addr, expressed as an array > > of words, from cpy to big-endian byte order. > > Hi Simon > > Is cpy supposed to be cpu? Yes, sorry about that. > > Otherwise, please add: Reviewed-by: Andrew Lunn <andrew@lunn.ch> > > Andrew > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next 2/3] net: ethernet: mtk_eth_soc: Use ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers 2024-08-12 12:11 [PATCH net-next 0/3] ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers Simon Horman 2024-08-12 12:11 ` [PATCH net-next 1/3] " Simon Horman @ 2024-08-12 12:11 ` Simon Horman 2024-08-12 12:38 ` Andrew Lunn 2024-08-12 12:11 ` [PATCH net-next 3/3] net: hns3: " Simon Horman 2 siblings, 1 reply; 9+ messages in thread From: Simon Horman @ 2024-08-12 12:11 UTC (permalink / raw) To: Andrew Lunn Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi, Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang, Salil Mehta, Jijie Shao, netdev, linux-kernel, linux-arm-kernel, linux-mediatek Use ipv6_addr_cpu_to_be32 and ipv6_addr_be32_to_cpu helpers to convert address, rather than open coding the conversion. No functional change intended. Compile tested only. Suggested-by: Andrew Lunn <andrew@lunn.ch> Link: https://lore.kernel.org/netdev/c7684349-535c-45a4-9a74-d47479a50020@lunn.ch/ Signed-off-by: Simon Horman <horms@kernel.org> --- drivers/net/ethernet/mediatek/mtk_ppe.c | 10 +++++----- drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c | 9 +++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_ppe.c b/drivers/net/ethernet/mediatek/mtk_ppe.c index 0acee405a749..ada852adc5f7 100644 --- a/drivers/net/ethernet/mediatek/mtk_ppe.c +++ b/drivers/net/ethernet/mediatek/mtk_ppe.c @@ -8,8 +8,11 @@ #include <linux/platform_device.h> #include <linux/if_ether.h> #include <linux/if_vlan.h> + #include <net/dst_metadata.h> #include <net/dsa.h> +#include <net/ipv6.h> + #include "mtk_eth_soc.h" #include "mtk_ppe.h" #include "mtk_ppe_regs.h" @@ -338,7 +341,6 @@ int mtk_foe_entry_set_ipv6_tuple(struct mtk_eth *eth, { int type = mtk_get_ib1_pkt_type(eth, entry->ib1); u32 *src, *dest; - int i; switch (type) { case MTK_PPE_PKT_TYPE_IPV4_DSLITE: @@ -359,10 +361,8 @@ int mtk_foe_entry_set_ipv6_tuple(struct mtk_eth *eth, return -EINVAL; } - for (i = 0; i < 4; i++) - src[i] = be32_to_cpu(src_addr[i]); - for (i = 0; i < 4; i++) - dest[i] = be32_to_cpu(dest_addr[i]); + ipv6_addr_be32_to_cpu(src, src_addr); + ipv6_addr_be32_to_cpu(dest, dest_addr); return 0; } diff --git a/drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c b/drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c index 1a97feca77f2..570ebf91f693 100644 --- a/drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c +++ b/drivers/net/ethernet/mediatek/mtk_ppe_debugfs.c @@ -3,6 +3,9 @@ #include <linux/kernel.h> #include <linux/debugfs.h> + +#include <net/ipv6.h> + #include "mtk_eth_soc.h" struct mtk_flow_addr_info @@ -47,16 +50,14 @@ static const char *mtk_foe_pkt_type_str(int type) static void mtk_print_addr(struct seq_file *m, u32 *addr, bool ipv6) { - __be32 n_addr[4]; - int i; + __be32 n_addr[IPV6_ADDR_WORDS]; if (!ipv6) { seq_printf(m, "%pI4h", addr); return; } - for (i = 0; i < ARRAY_SIZE(n_addr); i++) - n_addr[i] = htonl(addr[i]); + ipv6_addr_cpu_to_be32(n_addr, addr); seq_printf(m, "%pI6", n_addr); } -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 2/3] net: ethernet: mtk_eth_soc: Use ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers 2024-08-12 12:11 ` [PATCH net-next 2/3] net: ethernet: mtk_eth_soc: Use " Simon Horman @ 2024-08-12 12:38 ` Andrew Lunn 0 siblings, 0 replies; 9+ messages in thread From: Andrew Lunn @ 2024-08-12 12:38 UTC (permalink / raw) To: Simon Horman Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi, Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang, Salil Mehta, Jijie Shao, netdev, linux-kernel, linux-arm-kernel, linux-mediatek On Mon, Aug 12, 2024 at 01:11:56PM +0100, Simon Horman wrote: > Use ipv6_addr_cpu_to_be32 and ipv6_addr_be32_to_cpu helpers to convert > address, rather than open coding the conversion. > > No functional change intended. > Compile tested only. > > Suggested-by: Andrew Lunn <andrew@lunn.ch> > Link: https://lore.kernel.org/netdev/c7684349-535c-45a4-9a74-d47479a50020@lunn.ch/ > Signed-off-by: Simon Horman <horms@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next 3/3] net: hns3: Use ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers 2024-08-12 12:11 [PATCH net-next 0/3] ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers Simon Horman 2024-08-12 12:11 ` [PATCH net-next 1/3] " Simon Horman 2024-08-12 12:11 ` [PATCH net-next 2/3] net: ethernet: mtk_eth_soc: Use " Simon Horman @ 2024-08-12 12:11 ` Simon Horman 2024-08-12 12:39 ` Andrew Lunn 2024-08-12 13:21 ` Jijie Shao 2 siblings, 2 replies; 9+ messages in thread From: Simon Horman @ 2024-08-12 12:11 UTC (permalink / raw) To: Andrew Lunn Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi, Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang, Salil Mehta, Jijie Shao, netdev, linux-kernel, linux-arm-kernel, linux-mediatek Use new ipv6_addr_cpu_to_be32 and ipv6_addr_be32_to_cpu helper, and IPV6_ADDR_WORDS. This is arguably slightly nicer. No functional change intended. Compile tested only. Suggested-by: Andrew Lunn <andrew@lunn.ch> Link: https://lore.kernel.org/netdev/c7684349-535c-45a4-9a74-d47479a50020@lunn.ch/ Signed-off-by: Simon Horman <horms@kernel.org> --- .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 79 +++++++++++----------- .../ethernet/hisilicon/hns3/hns3pf/hclge_main.h | 8 ++- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c index 82574ce0194f..ce629cbc5d01 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c @@ -13,8 +13,9 @@ #include <linux/platform_device.h> #include <linux/if_vlan.h> #include <linux/crash_dump.h> -#include <net/ipv6.h> + #include <net/rtnetlink.h> + #include "hclge_cmd.h" #include "hclge_dcb.h" #include "hclge_main.h" @@ -6278,15 +6279,15 @@ static void hclge_fd_get_ip4_tuple(struct ethtool_rx_flow_spec *fs, static void hclge_fd_get_tcpip6_tuple(struct ethtool_rx_flow_spec *fs, struct hclge_fd_rule *rule, u8 ip_proto) { - be32_to_cpu_array(rule->tuples.src_ip, fs->h_u.tcp_ip6_spec.ip6src, - IPV6_SIZE); - be32_to_cpu_array(rule->tuples_mask.src_ip, fs->m_u.tcp_ip6_spec.ip6src, - IPV6_SIZE); + ipv6_addr_be32_to_cpu(rule->tuples.src_ip, + fs->h_u.tcp_ip6_spec.ip6src); + ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip, + fs->m_u.tcp_ip6_spec.ip6src); - be32_to_cpu_array(rule->tuples.dst_ip, fs->h_u.tcp_ip6_spec.ip6dst, - IPV6_SIZE); - be32_to_cpu_array(rule->tuples_mask.dst_ip, fs->m_u.tcp_ip6_spec.ip6dst, - IPV6_SIZE); + ipv6_addr_be32_to_cpu(rule->tuples.dst_ip, + fs->h_u.tcp_ip6_spec.ip6dst); + ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip, + fs->m_u.tcp_ip6_spec.ip6dst); rule->tuples.src_port = be16_to_cpu(fs->h_u.tcp_ip6_spec.psrc); rule->tuples_mask.src_port = be16_to_cpu(fs->m_u.tcp_ip6_spec.psrc); @@ -6307,15 +6308,15 @@ static void hclge_fd_get_tcpip6_tuple(struct ethtool_rx_flow_spec *fs, static void hclge_fd_get_ip6_tuple(struct ethtool_rx_flow_spec *fs, struct hclge_fd_rule *rule) { - be32_to_cpu_array(rule->tuples.src_ip, fs->h_u.usr_ip6_spec.ip6src, - IPV6_SIZE); - be32_to_cpu_array(rule->tuples_mask.src_ip, fs->m_u.usr_ip6_spec.ip6src, - IPV6_SIZE); + ipv6_addr_be32_to_cpu(rule->tuples.src_ip, + fs->h_u.usr_ip6_spec.ip6src); + ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip, + fs->m_u.usr_ip6_spec.ip6src); - be32_to_cpu_array(rule->tuples.dst_ip, fs->h_u.usr_ip6_spec.ip6dst, - IPV6_SIZE); - be32_to_cpu_array(rule->tuples_mask.dst_ip, fs->m_u.usr_ip6_spec.ip6dst, - IPV6_SIZE); + ipv6_addr_be32_to_cpu(rule->tuples.dst_ip, + fs->h_u.usr_ip6_spec.ip6dst); + ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip, + fs->m_u.usr_ip6_spec.ip6dst); rule->tuples.ip_proto = fs->h_u.usr_ip6_spec.l4_proto; rule->tuples_mask.ip_proto = fs->m_u.usr_ip6_spec.l4_proto; @@ -6744,21 +6745,19 @@ static void hclge_fd_get_tcpip6_info(struct hclge_fd_rule *rule, struct ethtool_tcpip6_spec *spec, struct ethtool_tcpip6_spec *spec_mask) { - cpu_to_be32_array(spec->ip6src, - rule->tuples.src_ip, IPV6_SIZE); - cpu_to_be32_array(spec->ip6dst, - rule->tuples.dst_ip, IPV6_SIZE); + ipv6_addr_cpu_to_be32(spec->ip6src, rule->tuples.src_ip); + ipv6_addr_cpu_to_be32(spec->ip6dst, rule->tuples.dst_ip); if (rule->unused_tuple & BIT(INNER_SRC_IP)) memset(spec_mask->ip6src, 0, sizeof(spec_mask->ip6src)); else - cpu_to_be32_array(spec_mask->ip6src, rule->tuples_mask.src_ip, - IPV6_SIZE); + ipv6_addr_cpu_to_be32(spec_mask->ip6src, + rule->tuples_mask.src_ip); if (rule->unused_tuple & BIT(INNER_DST_IP)) memset(spec_mask->ip6dst, 0, sizeof(spec_mask->ip6dst)); else - cpu_to_be32_array(spec_mask->ip6dst, rule->tuples_mask.dst_ip, - IPV6_SIZE); + ipv6_addr_cpu_to_be32(spec_mask->ip6dst, + rule->tuples_mask.dst_ip); spec->tclass = rule->tuples.ip_tos; spec_mask->tclass = rule->unused_tuple & BIT(INNER_IP_TOS) ? @@ -6777,19 +6776,19 @@ static void hclge_fd_get_ip6_info(struct hclge_fd_rule *rule, struct ethtool_usrip6_spec *spec, struct ethtool_usrip6_spec *spec_mask) { - cpu_to_be32_array(spec->ip6src, rule->tuples.src_ip, IPV6_SIZE); - cpu_to_be32_array(spec->ip6dst, rule->tuples.dst_ip, IPV6_SIZE); + ipv6_addr_cpu_to_be32(spec->ip6src, rule->tuples.src_ip); + ipv6_addr_cpu_to_be32(spec->ip6dst, rule->tuples.dst_ip); if (rule->unused_tuple & BIT(INNER_SRC_IP)) memset(spec_mask->ip6src, 0, sizeof(spec_mask->ip6src)); else - cpu_to_be32_array(spec_mask->ip6src, - rule->tuples_mask.src_ip, IPV6_SIZE); + ipv6_addr_cpu_to_be32(spec_mask->ip6src, + rule->tuples_mask.src_ip); if (rule->unused_tuple & BIT(INNER_DST_IP)) memset(spec_mask->ip6dst, 0, sizeof(spec_mask->ip6dst)); else - cpu_to_be32_array(spec_mask->ip6dst, - rule->tuples_mask.dst_ip, IPV6_SIZE); + ipv6_addr_cpu_to_be32(spec_mask->ip6dst, + rule->tuples_mask.dst_ip); spec->tclass = rule->tuples.ip_tos; spec_mask->tclass = rule->unused_tuple & BIT(INNER_IP_TOS) ? @@ -7007,7 +7006,7 @@ static void hclge_fd_get_flow_tuples(const struct flow_keys *fkeys, } else { int i; - for (i = 0; i < IPV6_SIZE; i++) { + for (i = 0; i < IPV6_ADDR_WORDS; i++) { tuples->src_ip[i] = be32_to_cpu(flow_ip6_src[i]); tuples->dst_ip[i] = be32_to_cpu(flow_ip6_dst[i]); } @@ -7262,14 +7261,14 @@ static int hclge_get_cls_key_ip(const struct flow_rule *flow, struct flow_match_ipv6_addrs match; flow_rule_match_ipv6_addrs(flow, &match); - be32_to_cpu_array(rule->tuples.src_ip, match.key->src.s6_addr32, - IPV6_SIZE); - be32_to_cpu_array(rule->tuples_mask.src_ip, - match.mask->src.s6_addr32, IPV6_SIZE); - be32_to_cpu_array(rule->tuples.dst_ip, match.key->dst.s6_addr32, - IPV6_SIZE); - be32_to_cpu_array(rule->tuples_mask.dst_ip, - match.mask->dst.s6_addr32, IPV6_SIZE); + ipv6_addr_be32_to_cpu(rule->tuples.src_ip, + match.key->src.s6_addr32); + ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip, + match.mask->src.s6_addr32); + ipv6_addr_be32_to_cpu(rule->tuples.dst_ip, + match.key->dst.s6_addr32); + ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip, + match.mask->dst.s6_addr32); } else { rule->unused_tuple |= BIT(INNER_SRC_IP); rule->unused_tuple |= BIT(INNER_DST_IP); diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h index b5178b0f88b3..b9fc719880bb 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h @@ -8,7 +8,9 @@ #include <linux/phy.h> #include <linux/if_vlan.h> #include <linux/kfifo.h> + #include <net/devlink.h> +#include <net/ipv6.h> #include "hclge_cmd.h" #include "hclge_ptp.h" @@ -718,15 +720,15 @@ struct hclge_fd_cfg { }; #define IPV4_INDEX 3 -#define IPV6_SIZE 4 + struct hclge_fd_rule_tuples { u8 src_mac[ETH_ALEN]; u8 dst_mac[ETH_ALEN]; /* Be compatible for ip address of both ipv4 and ipv6. * For ipv4 address, we store it in src/dst_ip[3]. */ - u32 src_ip[IPV6_SIZE]; - u32 dst_ip[IPV6_SIZE]; + u32 src_ip[IPV6_ADDR_WORDS]; + u32 dst_ip[IPV6_ADDR_WORDS]; u16 src_port; u16 dst_port; u16 vlan_tag1; -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 3/3] net: hns3: Use ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers 2024-08-12 12:11 ` [PATCH net-next 3/3] net: hns3: " Simon Horman @ 2024-08-12 12:39 ` Andrew Lunn 2024-08-12 13:21 ` Jijie Shao 1 sibling, 0 replies; 9+ messages in thread From: Andrew Lunn @ 2024-08-12 12:39 UTC (permalink / raw) To: Simon Horman Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi, Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang, Salil Mehta, Jijie Shao, netdev, linux-kernel, linux-arm-kernel, linux-mediatek On Mon, Aug 12, 2024 at 01:11:57PM +0100, Simon Horman wrote: > Use new ipv6_addr_cpu_to_be32 and ipv6_addr_be32_to_cpu helper, > and IPV6_ADDR_WORDS. This is arguably slightly nicer. > > No functional change intended. > Compile tested only. > > Suggested-by: Andrew Lunn <andrew@lunn.ch> > Link: https://lore.kernel.org/netdev/c7684349-535c-45a4-9a74-d47479a50020@lunn.ch/ > Signed-off-by: Simon Horman <horms@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 3/3] net: hns3: Use ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers 2024-08-12 12:11 ` [PATCH net-next 3/3] net: hns3: " Simon Horman 2024-08-12 12:39 ` Andrew Lunn @ 2024-08-12 13:21 ` Jijie Shao 1 sibling, 0 replies; 9+ messages in thread From: Jijie Shao @ 2024-08-12 13:21 UTC (permalink / raw) To: Simon Horman, Andrew Lunn Cc: shaojijie, David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Felix Fietkau, Sean Wang, Mark Lee, Lorenzo Bianconi, Matthias Brugger, AngeloGioacchino Del Regno, Yisen Zhuang, Salil Mehta, netdev, linux-kernel, linux-arm-kernel, linux-mediatek Reviewed-by: Jijie Shao <shaojijie@huawei.com> on 2024/8/12 20:11, Simon Horman wrote: > Use new ipv6_addr_cpu_to_be32 and ipv6_addr_be32_to_cpu helper, > and IPV6_ADDR_WORDS. This is arguably slightly nicer. > > No functional change intended. > Compile tested only. > > Suggested-by: Andrew Lunn <andrew@lunn.ch> > Link: https://lore.kernel.org/netdev/c7684349-535c-45a4-9a74-d47479a50020@lunn.ch/ > Signed-off-by: Simon Horman <horms@kernel.org> > --- > .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 79 +++++++++++----------- > .../ethernet/hisilicon/hns3/hns3pf/hclge_main.h | 8 ++- > 2 files changed, 44 insertions(+), 43 deletions(-) > > diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c > index 82574ce0194f..ce629cbc5d01 100644 > --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c > +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c > @@ -13,8 +13,9 @@ > #include <linux/platform_device.h> > #include <linux/if_vlan.h> > #include <linux/crash_dump.h> > -#include <net/ipv6.h> > + > #include <net/rtnetlink.h> > + > #include "hclge_cmd.h" > #include "hclge_dcb.h" > #include "hclge_main.h" > @@ -6278,15 +6279,15 @@ static void hclge_fd_get_ip4_tuple(struct ethtool_rx_flow_spec *fs, > static void hclge_fd_get_tcpip6_tuple(struct ethtool_rx_flow_spec *fs, > struct hclge_fd_rule *rule, u8 ip_proto) > { > - be32_to_cpu_array(rule->tuples.src_ip, fs->h_u.tcp_ip6_spec.ip6src, > - IPV6_SIZE); > - be32_to_cpu_array(rule->tuples_mask.src_ip, fs->m_u.tcp_ip6_spec.ip6src, > - IPV6_SIZE); > + ipv6_addr_be32_to_cpu(rule->tuples.src_ip, > + fs->h_u.tcp_ip6_spec.ip6src); > + ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip, > + fs->m_u.tcp_ip6_spec.ip6src); > > - be32_to_cpu_array(rule->tuples.dst_ip, fs->h_u.tcp_ip6_spec.ip6dst, > - IPV6_SIZE); > - be32_to_cpu_array(rule->tuples_mask.dst_ip, fs->m_u.tcp_ip6_spec.ip6dst, > - IPV6_SIZE); > + ipv6_addr_be32_to_cpu(rule->tuples.dst_ip, > + fs->h_u.tcp_ip6_spec.ip6dst); > + ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip, > + fs->m_u.tcp_ip6_spec.ip6dst); > > rule->tuples.src_port = be16_to_cpu(fs->h_u.tcp_ip6_spec.psrc); > rule->tuples_mask.src_port = be16_to_cpu(fs->m_u.tcp_ip6_spec.psrc); > @@ -6307,15 +6308,15 @@ static void hclge_fd_get_tcpip6_tuple(struct ethtool_rx_flow_spec *fs, > static void hclge_fd_get_ip6_tuple(struct ethtool_rx_flow_spec *fs, > struct hclge_fd_rule *rule) > { > - be32_to_cpu_array(rule->tuples.src_ip, fs->h_u.usr_ip6_spec.ip6src, > - IPV6_SIZE); > - be32_to_cpu_array(rule->tuples_mask.src_ip, fs->m_u.usr_ip6_spec.ip6src, > - IPV6_SIZE); > + ipv6_addr_be32_to_cpu(rule->tuples.src_ip, > + fs->h_u.usr_ip6_spec.ip6src); > + ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip, > + fs->m_u.usr_ip6_spec.ip6src); > > - be32_to_cpu_array(rule->tuples.dst_ip, fs->h_u.usr_ip6_spec.ip6dst, > - IPV6_SIZE); > - be32_to_cpu_array(rule->tuples_mask.dst_ip, fs->m_u.usr_ip6_spec.ip6dst, > - IPV6_SIZE); > + ipv6_addr_be32_to_cpu(rule->tuples.dst_ip, > + fs->h_u.usr_ip6_spec.ip6dst); > + ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip, > + fs->m_u.usr_ip6_spec.ip6dst); > > rule->tuples.ip_proto = fs->h_u.usr_ip6_spec.l4_proto; > rule->tuples_mask.ip_proto = fs->m_u.usr_ip6_spec.l4_proto; > @@ -6744,21 +6745,19 @@ static void hclge_fd_get_tcpip6_info(struct hclge_fd_rule *rule, > struct ethtool_tcpip6_spec *spec, > struct ethtool_tcpip6_spec *spec_mask) > { > - cpu_to_be32_array(spec->ip6src, > - rule->tuples.src_ip, IPV6_SIZE); > - cpu_to_be32_array(spec->ip6dst, > - rule->tuples.dst_ip, IPV6_SIZE); > + ipv6_addr_cpu_to_be32(spec->ip6src, rule->tuples.src_ip); > + ipv6_addr_cpu_to_be32(spec->ip6dst, rule->tuples.dst_ip); > if (rule->unused_tuple & BIT(INNER_SRC_IP)) > memset(spec_mask->ip6src, 0, sizeof(spec_mask->ip6src)); > else > - cpu_to_be32_array(spec_mask->ip6src, rule->tuples_mask.src_ip, > - IPV6_SIZE); > + ipv6_addr_cpu_to_be32(spec_mask->ip6src, > + rule->tuples_mask.src_ip); > > if (rule->unused_tuple & BIT(INNER_DST_IP)) > memset(spec_mask->ip6dst, 0, sizeof(spec_mask->ip6dst)); > else > - cpu_to_be32_array(spec_mask->ip6dst, rule->tuples_mask.dst_ip, > - IPV6_SIZE); > + ipv6_addr_cpu_to_be32(spec_mask->ip6dst, > + rule->tuples_mask.dst_ip); > > spec->tclass = rule->tuples.ip_tos; > spec_mask->tclass = rule->unused_tuple & BIT(INNER_IP_TOS) ? > @@ -6777,19 +6776,19 @@ static void hclge_fd_get_ip6_info(struct hclge_fd_rule *rule, > struct ethtool_usrip6_spec *spec, > struct ethtool_usrip6_spec *spec_mask) > { > - cpu_to_be32_array(spec->ip6src, rule->tuples.src_ip, IPV6_SIZE); > - cpu_to_be32_array(spec->ip6dst, rule->tuples.dst_ip, IPV6_SIZE); > + ipv6_addr_cpu_to_be32(spec->ip6src, rule->tuples.src_ip); > + ipv6_addr_cpu_to_be32(spec->ip6dst, rule->tuples.dst_ip); > if (rule->unused_tuple & BIT(INNER_SRC_IP)) > memset(spec_mask->ip6src, 0, sizeof(spec_mask->ip6src)); > else > - cpu_to_be32_array(spec_mask->ip6src, > - rule->tuples_mask.src_ip, IPV6_SIZE); > + ipv6_addr_cpu_to_be32(spec_mask->ip6src, > + rule->tuples_mask.src_ip); > > if (rule->unused_tuple & BIT(INNER_DST_IP)) > memset(spec_mask->ip6dst, 0, sizeof(spec_mask->ip6dst)); > else > - cpu_to_be32_array(spec_mask->ip6dst, > - rule->tuples_mask.dst_ip, IPV6_SIZE); > + ipv6_addr_cpu_to_be32(spec_mask->ip6dst, > + rule->tuples_mask.dst_ip); > > spec->tclass = rule->tuples.ip_tos; > spec_mask->tclass = rule->unused_tuple & BIT(INNER_IP_TOS) ? > @@ -7007,7 +7006,7 @@ static void hclge_fd_get_flow_tuples(const struct flow_keys *fkeys, > } else { > int i; > > - for (i = 0; i < IPV6_SIZE; i++) { > + for (i = 0; i < IPV6_ADDR_WORDS; i++) { > tuples->src_ip[i] = be32_to_cpu(flow_ip6_src[i]); > tuples->dst_ip[i] = be32_to_cpu(flow_ip6_dst[i]); > } > @@ -7262,14 +7261,14 @@ static int hclge_get_cls_key_ip(const struct flow_rule *flow, > struct flow_match_ipv6_addrs match; > > flow_rule_match_ipv6_addrs(flow, &match); > - be32_to_cpu_array(rule->tuples.src_ip, match.key->src.s6_addr32, > - IPV6_SIZE); > - be32_to_cpu_array(rule->tuples_mask.src_ip, > - match.mask->src.s6_addr32, IPV6_SIZE); > - be32_to_cpu_array(rule->tuples.dst_ip, match.key->dst.s6_addr32, > - IPV6_SIZE); > - be32_to_cpu_array(rule->tuples_mask.dst_ip, > - match.mask->dst.s6_addr32, IPV6_SIZE); > + ipv6_addr_be32_to_cpu(rule->tuples.src_ip, > + match.key->src.s6_addr32); > + ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip, > + match.mask->src.s6_addr32); > + ipv6_addr_be32_to_cpu(rule->tuples.dst_ip, > + match.key->dst.s6_addr32); > + ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip, > + match.mask->dst.s6_addr32); > } else { > rule->unused_tuple |= BIT(INNER_SRC_IP); > rule->unused_tuple |= BIT(INNER_DST_IP); > diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h > index b5178b0f88b3..b9fc719880bb 100644 > --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h > +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h > @@ -8,7 +8,9 @@ > #include <linux/phy.h> > #include <linux/if_vlan.h> > #include <linux/kfifo.h> > + > #include <net/devlink.h> > +#include <net/ipv6.h> > > #include "hclge_cmd.h" > #include "hclge_ptp.h" > @@ -718,15 +720,15 @@ struct hclge_fd_cfg { > }; > > #define IPV4_INDEX 3 > -#define IPV6_SIZE 4 > + > struct hclge_fd_rule_tuples { > u8 src_mac[ETH_ALEN]; > u8 dst_mac[ETH_ALEN]; > /* Be compatible for ip address of both ipv4 and ipv6. > * For ipv4 address, we store it in src/dst_ip[3]. > */ > - u32 src_ip[IPV6_SIZE]; > - u32 dst_ip[IPV6_SIZE]; > + u32 src_ip[IPV6_ADDR_WORDS]; > + u32 dst_ip[IPV6_ADDR_WORDS]; > u16 src_port; > u16 dst_port; > u16 vlan_tag1; > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-08-12 13:21 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-12 12:11 [PATCH net-next 0/3] ipv6: Add ipv6_addr_{cpu_to_be32,be32_to_cpu} helpers Simon Horman
2024-08-12 12:11 ` [PATCH net-next 1/3] " Simon Horman
2024-08-12 12:37 ` Andrew Lunn
2024-08-12 12:50 ` Simon Horman
2024-08-12 12:11 ` [PATCH net-next 2/3] net: ethernet: mtk_eth_soc: Use " Simon Horman
2024-08-12 12:38 ` Andrew Lunn
2024-08-12 12:11 ` [PATCH net-next 3/3] net: hns3: " Simon Horman
2024-08-12 12:39 ` Andrew Lunn
2024-08-12 13:21 ` Jijie Shao
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).