• Eric Dumazet's avatar
    net_sched: sch_sfq: fix allot handling · aa3e2199
    Eric Dumazet authored
    When deploying SFQ/IFB here at work, I found the allot management was
    pretty wrong in sfq, even changing allot from short to int...
    
    We should init allot for each new flow, not using a previous value found
    in slot.
    
    Before patch, I saw bursts of several packets per flow, apparently
    denying the default "quantum 1514" limit I had on my SFQ class.
    
    class sfq 11:1 parent 11: 
     (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 7p requeues 0 
     allot 11546 
    
    class sfq 11:46 parent 11: 
     (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 1p requeues 0 
     allot -23873 
    
    class sfq 11:78 parent 11: 
     (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 5p requeues 0 
     allot 11393 
    
    After patch, better fairness among each flow, allot limit being
    respected, allot is positive :
    
    class sfq 11:e parent 11: 
     (dropped 0, overlimits 0 requeues 86) 
     backlog 0b 3p requeues 86 
     allot 596 
    
    class sfq 11:94 parent 11: 
     (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 3p requeues 0 
     allot 1468 
    
    class sfq 11:a4 parent 11: 
     (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 4p requeues 0 
     allot 650 
    
    class sfq 11:bb parent 11: 
     (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 3p requeues 0 
     allot 596 
    Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    aa3e2199
sch_sfq.c 13.9 KB