net: sparx5: flower: only do lookup if fragment flags are set
authorAsbjørn Sloth Tønnesen <ast@fiberby.net>
Wed, 24 Apr 2024 12:16:22 +0000 (12:16 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 26 Apr 2024 02:35:08 +0000 (19:35 -0700)
The fragment lookup should only be performed, when
at least one of the fragment flags are set.

This change was deliberately not included in commit
68aba00483c7 ("net: sparx5: flower: fix fragment flags handling")
as it's only needed for future proffing the code, since
"mask" is currently only set in conjunction with the
fragment flags.
(The 3rd flag FLOW_DIS_ENCAPSULATION is only used with "key")

Only compile tested.

Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net>
Reviewed-by: Daniel Machon <daniel.machon@microchip.com>
Tested-by: Daniel Machon <daniel.machon@microchip.com>
Link: https://lore.kernel.org/r/20240424121632.459022-2-ast@fiberby.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c

index 663571f..ca9e69d 100644 (file)
@@ -165,7 +165,7 @@ sparx5_tc_flower_handler_control_usage(struct vcap_tc_flower_parse_usage *st)
 
        flow_rule_match_control(st->frule, &mt);
 
-       if (mt.mask->flags) {
+       if (mt.mask->flags & (FLOW_DIS_IS_FRAGMENT | FLOW_DIS_FIRST_FRAG)) {
                u8 is_frag_key = !!(mt.key->flags & FLOW_DIS_IS_FRAGMENT);
                u8 is_frag_mask = !!(mt.mask->flags & FLOW_DIS_IS_FRAGMENT);
                u8 is_frag_idx = (is_frag_key << 1) | is_frag_mask;