• Eric Dumazet's avatar
    net_sched: sfq: extend limits · 18cb8098
    Eric Dumazet authored
    SFQ as implemented in Linux is very limited, with at most 127 flows
    and limit of 127 packets. [ So if 127 flows are active, we have one
    packet per flow ]
    
    This patch brings to SFQ following features to cope with modern needs.
    
    - Ability to specify a smaller per flow limit of inflight packets.
        (default value being at 127 packets)
    
    - Ability to have up to 65408 active flows (instead of 127)
    
    - Ability to have head drops instead of tail drops
      (to drop old packets from a flow)
    
    Example of use : No more than 20 packets per flow, max 8000 flows, max
    20000 packets in SFQ qdisc, hash table of 65536 slots.
    
    tc qdisc add ... sfq \
            flows 8000 \
            depth 20 \
            headdrop \
            limit 20000 \
    	divisor 65536
    
    Ram usage :
    
    2 bytes per hash table entry (instead of previous 1 byte/entry)
    32 bytes per flow on 64bit arches, instead of 384 for QFQ, so much
    better cache hit ratio.
    Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    CC: Dave Taht <dave.taht@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    18cb8098
sch_sfq.c 19.6 KB