• Vladimir Oltean's avatar
    net: dsa: sja1105: add broadcast and per-traffic class policers · a6af7763
    Vladimir Oltean authored
    This patch adds complete support for manipulating the L2 Policing Tables
    from this switch. There are 45 table entries, one entry per each port
    and traffic class, and one dedicated entry for broadcast traffic for
    each ingress port.
    
    Policing entries are shareable, and we use this functionality to support
    shared block filters.
    
    We are modeling broadcast policers as simple tc-flower matches on
    dst_mac. As for the traffic class policers, the switch only deduces the
    traffic class from the VLAN PCP field, so it makes sense to model this
    as a tc-flower match on vlan_prio.
    
    How to limit broadcast traffic coming from all front-panel ports to a
    cumulated total of 10 Mbit/s:
    
    tc qdisc add dev sw0p0 ingress_block 1 clsact
    tc qdisc add dev sw0p1 ingress_block 1 clsact
    tc qdisc add dev sw0p2 ingress_block 1 clsact
    tc qdisc add dev sw0p3 ingress_block 1 clsact
    tc filter add block 1 flower skip_sw dst_mac ff:ff:ff:ff:ff:ff \
    	action police rate 10mbit burst 64k
    
    How to limit traffic with VLAN PCP 0 (also includes untagged traffic) to
    100 Mbit/s on port 0 only:
    
    tc filter add dev sw0p0 ingress protocol 802.1Q flower skip_sw \
    	vlan_prio 0 action police rate 100mbit burst 64k
    
    The broadcast, VLAN PCP and port policers are compatible with one
    another (can be installed at the same time on a port).
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a6af7763
sja1105_flower.c 8.82 KB