From: Simon Horman <horms@kernel.org>
To: cedric.jehasse@luminex.be
Cc: Andrew Lunn <andrew@lunn.ch>, Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Russell King <linux@armlinux.org.uk>,
Jamal Hadi Salim <jhs@mojatatu.com>,
Jiri Pirko <jiri@resnulli.us>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH net-next v8 1/2] net/sched: cls_flower: remove unions from fl_flow_key
Date: Fri, 13 Mar 2026 13:26:51 +0000 [thread overview]
Message-ID: <20260313132651.GX461701@kernel.org> (raw)
In-Reply-To: <20260311-net-next-mv88e6xxx-tcam-v8-1-32dd5ba30002@luminex.be>
On Wed, Mar 11, 2026 at 11:46:18AM +0100, Cedric Jehasse via B4 Relay wrote:
> From: Cedric Jehasse <cedric.jehasse@luminex.be>
>
> When creating a flower classifier with an ipv4 address the
> flow_dissector has both FLOW_DISSECTOR_KEY_IPV4_ADDRS and
> FLOW_DISSECTOR_KEY_IPV6_ADDRS bits set in used_keys.
> This happens because ipv4/ipv6 fields are a union and
> FL_KEY_SET_IF_MASKED() will interpret either being set as both.
>
> Removing the unions fixes this behavior without needing special handling
> for union fields.
>
> Example of a command that caused FLOW_DISSECTOR_KEY_IPV4_ADDRS and
> FLOW_DISSECTOR_KEY_IPV6_ADDRS to be set:
> tc filter add dev p1 ingress protocol ip flower skip_sw \
> dst_ip 224.0.1.129 action trap
>
> Signed-off-by: Cedric Jehasse <cedric.jehasse@luminex.be>
Hi Cedric,
This doesn't seem to be the right approach to me.
It seems to me that the use of a union is intentional here, as either IPv4
or IPv6 addresses can be present in each case - never both. And that
control.addr_type and enc_control.addr_type are intended to allow
differentiation of the address type in use for each of these unions.
> ---
> net/sched/cls_flower.c | 12 ++++--------
> 1 file changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c
> index 7669371c1354..b95dbe847dde 100644
> --- a/net/sched/cls_flower.c
> +++ b/net/sched/cls_flower.c
> @@ -59,18 +59,14 @@ struct fl_flow_key {
> struct flow_dissector_key_eth_addrs eth;
> struct flow_dissector_key_vlan vlan;
> struct flow_dissector_key_vlan cvlan;
> - union {
> - struct flow_dissector_key_ipv4_addrs ipv4;
> - struct flow_dissector_key_ipv6_addrs ipv6;
> - };
> + struct flow_dissector_key_ipv4_addrs ipv4;
> + struct flow_dissector_key_ipv6_addrs ipv6;
> struct flow_dissector_key_ports tp;
> struct flow_dissector_key_icmp icmp;
> struct flow_dissector_key_arp arp;
> struct flow_dissector_key_keyid enc_key_id;
> - union {
> - struct flow_dissector_key_ipv4_addrs enc_ipv4;
> - struct flow_dissector_key_ipv6_addrs enc_ipv6;
> - };
> + struct flow_dissector_key_ipv4_addrs enc_ipv4;
> + struct flow_dissector_key_ipv6_addrs enc_ipv6;
> struct flow_dissector_key_ports enc_tp;
> struct flow_dissector_key_mpls mpls;
> struct flow_dissector_key_tcp tcp;
>
> --
> 2.43.0
>
>
next prev parent reply other threads:[~2026-03-13 13:26 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-11 10:46 [PATCH net-next v8 0/2] net: dsa: mv88e6xxx: Add partial support for TCAM entries Cedric Jehasse
2026-03-11 10:46 ` Cedric Jehasse via B4 Relay
2026-03-11 10:46 ` [PATCH net-next v8 1/2] net/sched: cls_flower: remove unions from fl_flow_key Cedric Jehasse
2026-03-11 10:46 ` Cedric Jehasse via B4 Relay
2026-03-13 13:26 ` Simon Horman [this message]
2026-03-13 14:31 ` Cedric Jehasse
2026-03-14 17:00 ` Jakub Kicinski
2026-03-16 8:34 ` Simon Horman
2026-03-16 23:19 ` Jakub Kicinski
2026-03-17 14:38 ` Simon Horman
2026-03-11 10:46 ` [PATCH net-next v8 2/2] net: dsa: mv88e6xxx: Add partial support for TCAM entries Cedric Jehasse
2026-03-11 10:46 ` Cedric Jehasse via B4 Relay
2026-03-17 9:50 ` [PATCH net-next v8 0/2] " patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260313132651.GX461701@kernel.org \
--to=horms@kernel.org \
--cc=andrew@lunn.ch \
--cc=cedric.jehasse@luminex.be \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.