diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2009-06-09 11:08:38 -0700 |
---|---|---|
committer | Stephen Hemminger <shemminger@lenny.localdomain> | 2009-10-01 13:51:19 -0700 |
commit | 6cf4217e392eb4c0956804b1ba66874de68fbd5e (patch) | |
tree | 8e70ebca83711fe654c2736c80ab57295fb2a68f /lib/Vyatta/Qos/RandomDetect.pm | |
parent | 5e0d337e371773e81059f5f2513c6f430c3d8e4c (diff) | |
download | vyatta-cfg-qos-6cf4217e392eb4c0956804b1ba66874de68fbd5e.tar.gz vyatta-cfg-qos-6cf4217e392eb4c0956804b1ba66874de68fbd5e.zip |
Allow setting queue limit and average packet size
Two more (optional) parameters for random detect precedence groups.
Bug 4518,4519
(cherry picked from commit 8104da09f5da338c6ce0813c367262de4e417598)
Diffstat (limited to 'lib/Vyatta/Qos/RandomDetect.pm')
-rw-r--r-- | lib/Vyatta/Qos/RandomDetect.pm | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/lib/Vyatta/Qos/RandomDetect.pm b/lib/Vyatta/Qos/RandomDetect.pm index 1918711..663abc2 100644 --- a/lib/Vyatta/Qos/RandomDetect.pm +++ b/lib/Vyatta/Qos/RandomDetect.pm @@ -31,14 +31,14 @@ use Vyatta::Qos::Util qw/getRate getAutoRate getTime/; # default values for different precedence levels my @default_fields = ( - { 'min-threshold' => 9, 'max-threshold' => 18, 'mark-probability' => 1/2 }, - { 'min-threshold' => 10, 'max-threshold' => 18, 'mark-probability' => 5/9 }, - { 'min-threshold' => 11, 'max-threshold' => 18, 'mark-probability' => .1 }, - { 'min-threshold' => 12, 'max-threshold' => 18, 'mark-probability' => 2/3 }, - { 'min-threshold' => 13, 'max-threshold' => 18, 'mark-probability' => .1 }, - { 'min-threshold' => 14, 'max-threshold' => 18, 'mark-probability' => 7/9 }, - { 'min-threshold' => 15, 'max-threshold' => 18, 'mark-probability' => 5/6 }, - { 'min-threshold' => 16, 'max-threshold' => 18, 'mark-probability' => 8/9 }, + { 'min-threshold' => 9, 'mark-probability' => 1/2 }, + { 'min-threshold' => 10, 'mark-probability' => 5/9 }, + { 'min-threshold' => 11, 'mark-probability' => .1 }, + { 'min-threshold' => 12, 'mark-probability' => 2/3 }, + { 'min-threshold' => 13, 'mark-probability' => .1 }, + { 'min-threshold' => 14, 'mark-probability' => 7/9 }, + { 'min-threshold' => 15, 'mark-probability' => 5/6 }, + { 'min-threshold' => 16, 'mark-probability' => 8/9 }, ); # Create a new instance based on config information @@ -69,8 +69,8 @@ sub getPrecedence { my $defaults = $default_fields[$i]; my %param; - $config->setLevel("$level precedence $i"); - foreach my $field (keys %$defaults) { + foreach my $field (qw(max-threshold average-packet queue-limit), + keys %$defaults) { my $val = $config->returnValue($field); if ( !defined $val ) { @@ -116,10 +116,17 @@ sub commands { my $param = $precedence->[$i]; my $qmin = $param->{'min-threshold'}; my $qmax = $param->{'max-threshold'}; + my $qlimit = $param->{'queue-limit'}; + my $avgpkt = $param->{'average-packet'}; my $prob = $param->{'mark-probability'}; + $qmax = 18 unless $qmax; + $avgpkt = 1024 unless $avgpkt; + $qlimit = 4 * $qmax unless $qlimit; + printf "qdisc change dev %s handle %x:0 gred", $dev, $root+1, $i; - printf " limit %dK min %dK max %dK avpkt 1K", 4 * $qmax, $qmin, $qmax; + printf " limit %d min %d max %d avpkt %d", + $qlimit * $avgpkt, $qmin * $avgpkt, $qmax * $avgpkt, $avgpkt; printf " burst %d bandwidth %d probability %f DP %d prio %d\n", ( 2 * $qmin + $qmax ) / 3, $rate, $prob, $i, 8-$i; } |