sch_red: generalize accurate MAX_P support to RED/GRED/CHOKE
authorEric Dumazet <eric.dumazet@gmail.com>
Fri, 9 Dec 2011 02:46:45 +0000 (02:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Dec 2011 18:46:15 +0000 (13:46 -0500)
commita73ed26bbae7327370c5bd298f07de78df9e3466
tree3c7a04e638261cdd16c324ecd07e303e72fac3b9
parent0221cd51543972782af558c527e4ac58b32049fa
sch_red: generalize accurate MAX_P support to RED/GRED/CHOKE

Now RED uses a Q0.32 number to store max_p (max probability), allow
RED/GRED/CHOKE to use/report full resolution at config/dump time.

Old tc binaries are non aware of new attributes, and still set/get Plog.

New tc binary set/get both Plog and max_p for backward compatibility,
they display "probability value" if they get max_p from new kernels.

# tc -d  qdisc show dev ...
...
qdisc red 10: parent 1:1 limit 360Kb min 30Kb max 90Kb ecn ewma 5
probability 0.09 Scell_log 15

Make sure we avoid potential divides by 0 in reciprocal_value(), if
(max_th - min_th) is big.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/pkt_sched.h
include/net/red.h
net/sched/sch_choke.c
net/sched/sch_gred.c
net/sched/sch_red.c