sch_sfq: dont put new flow at the end of flows
authorEric Dumazet <eric.dumazet@gmail.com>
Sun, 1 Jan 2012 18:33:31 +0000 (18:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 Jan 2012 17:52:09 +0000 (12:52 -0500)
commitd47a0ac7b66883987275598d6039f902f4410ca9
treed70709d26a3833e2747126d221bbb2aa3f28ebd7
parent1c015b3b82c92fad375ce7dfff54799cfdfb7a15
sch_sfq: dont put new flow at the end of flows

SFQ enqueue algo puts a new flow _behind_ all pre-existing flows in the
circular list. In fact this is probably an old SFQ implementation bug.

100 Mbits = ~8333 full frames per second, or ~8 frames per ms.

With 50 flows, it means your "new flow" will have to wait 50 packets
being sent before its own packet. Thats the ~6ms.

We certainly can change SFQ to give a priority advantage to new flows,
so that next dequeued packet is taken from a new flow, not an old one.

Reported-by: Dave Taht <dave.taht@gmail.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_sfq.c