From 8f5e0920e7edd83b8d58d016d7ec6964bf222577 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen.hemminger@vyatta.com>
Date: Wed, 10 Jun 2009 10:33:46 -0700
Subject: Allow random-detect for Qos policy types without rate

Part of Bug 4516
---
 lib/Vyatta/Qos/ShaperClass.pm | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

(limited to 'lib')

diff --git a/lib/Vyatta/Qos/ShaperClass.pm b/lib/Vyatta/Qos/ShaperClass.pm
index 3a25233..ef18f30 100644
--- a/lib/Vyatta/Qos/ShaperClass.pm
+++ b/lib/Vyatta/Qos/ShaperClass.pm
@@ -168,18 +168,12 @@ sub fifoQdisc {
 #
 sub redQdisc {
     my ( $self, $dev, $rate ) = @_;
-    my $qmax = ( $rate * 100 ) / 8000;
-    my $qmin = $qmax / 3;
     my $avg = 1024;
-    my $burst = ( 2 * $qmin + $qmax ) / (3*$avg);
-
+    my $qmax = (defined $rate) ? (( $rate * 100 ) / 8000) : (18 * $avg);
+    my $qmin = $qmax / 3;
+    my $burst = ( 2 * $qmin + $qmax ) / (3 * $avg);
     my $limit = $self->{_limit};
-    my $qlimit;
-    if ($limit) {
-	$qlimit = $limit * $avg;
-    } else {
-	$qlimit = 4 * $qmax;
-    }
+    my $qlimit = (defined $limit) ? ($limit * $avg) : (4 * $qmax);
 
     printf "red limit %d min %d max %d avpkt %d", $qlimit, $qmin, $qmax, $avg;
     printf " burst %d probability 0.1 bandwidth %s ecn\n", $burst, $rate;
-- 
cgit v1.2.3