• Vladimir Oltean's avatar
    net: mscc: ocelot: refine the ocelot_ace_is_problematic_mac_etype function · 7dec902f
    Vladimir Oltean authored
    The commit mentioned below was a bit too harsh, and while it restricted
    the invalid key combinations which are known to not work, such as:
    
    tc filter add dev swp0 ingress proto ip \
          flower src_ip 192.0.2.1 action drop
    tc filter add dev swp0 ingress proto all \
          flower src_mac 00:11:22:33:44:55 action drop
    
    it also restricted some which still should work, such as:
    
    tc filter add dev swp0 ingress proto ip \
          flower src_ip 192.0.2.1 action drop
    tc filter add dev swp0 ingress proto 0x22f0 \
          flower src_mac 00:11:22:33:44:55 action drop
    
    What actually does not match "sanely" is a MAC_ETYPE rule on frames
    having an EtherType of ARP, IPv4, IPv6, in addition to SNAP and OAM
    frames (which the ocelot tc-flower implementation does not parse yet, so
    the function might need to be revisited again in the future).
    
    So just make the function recognize the problematic MAC_ETYPE rules by
    EtherType - thus the VCAP IS2 can be forced to match even on those
    packets.
    
    This patch makes it possible for IP rules to live on a port together
    with MAC_ETYPE rules that are non-all, non-arp, non-ip and non-ipv6.
    
    Fixes: d4d0cb741d7b ("net: mscc: ocelot: deal with problematic MAC_ETYPE VCAP IS2 rules")
    Reported-by: default avatarAllan W. Nielsen <allan.nielsen@microchip.com>
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7dec902f
ocelot_ace.c 28.5 KB