• Boris Sukholitko's avatar
    net/sched: flower: Consider the number of tags for vlan filters · 99fdb22b
    Boris Sukholitko authored
    Before this patch the existence of vlan filters was conditional on the vlan
    protocol being matched in the tc rule. For example, the following rule:
    
    tc filter add dev eth1 ingress flower vlan_prio 5
    
    was illegal because vlan protocol (e.g. 802.1q) does not appear in the rule.
    
    Remove the above restriction by looking at the num_of_vlans filter to
    allow further matching on vlan attributes. The following rule becomes
    legal as a result of this commit:
    
    tc filter add dev eth1 ingress flower num_of_vlans 1 vlan_prio 5
    
    because having num_of_vlans==1 implies that the packet is single tagged.
    
    Change is_vlan_key helper to look at the number of vlans in addition to
    the vlan ethertype. The outcome of this change is that outer (e.g. vlan_prio)
    and inner (e.g. cvlan_prio) tag vlan filters require the number of vlan
    tags to be greater then 0 and 1 accordingly.
    
    As a result of is_vlan_key change, the ethertype may be set to 0 when
    matching on the number of vlans. Update fl_set_key_vlan to avoid setting
    key, mask vlan_tpid for the 0 ethertype.
    Signed-off-by: default avatarBoris Sukholitko <boris.sukholitko@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    99fdb22b
cls_flower.c 96.2 KB