net: prestera: acl: use proper mask for port selector
authorMaksym Glubokiy <maksym.glubokiy@plvision.eu>
Fri, 15 Jul 2022 12:55:50 +0000 (15:55 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Jul 2022 10:44:32 +0000 (11:44 +0100)
Adjusted as per packet processor documentation.
This allows to properly match 'indev' for clsact rules.

Fixes: 47327e198d42 ("net: prestera: acl: migrate to new vTCAM api")

Signed-off-by: Maksym Glubokiy <maksym.glubokiy@plvision.eu>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/prestera/prestera_flower.c

index d43e503c644f85d496ff55761ca1b7e1d2633af5..4d93ad6a284c0318d9f4deb560c2ffa798377707 100644 (file)
@@ -167,12 +167,12 @@ static int prestera_flower_parse_meta(struct prestera_acl_rule *rule,
        }
        port = netdev_priv(ingress_dev);
 
-       mask = htons(0x1FFF);
-       key = htons(port->hw_id);
+       mask = htons(0x1FFF << 3);
+       key = htons(port->hw_id << 3);
        rule_match_set(r_match->key, SYS_PORT, key);
        rule_match_set(r_match->mask, SYS_PORT, mask);
 
-       mask = htons(0x1FF);
+       mask = htons(0x3FF);
        key = htons(port->dev_id);
        rule_match_set(r_match->key, SYS_DEV, key);
        rule_match_set(r_match->mask, SYS_DEV, mask);