This patch allows the user to specify esfq as the leaf qdisc, as well as perturb...
authorTravis Kemen <thepeople@openwrt.org>
Fri, 26 Feb 2010 17:22:53 +0000 (17:22 +0000)
committerTravis Kemen <thepeople@openwrt.org>
Fri, 26 Feb 2010 17:22:53 +0000 (17:22 +0000)
SVN-Revision: 19874

package/qos-scripts/files/usr/lib/qos/generate.sh
package/qos-scripts/files/usr/lib/qos/tcrules.awk

index 9fc146b81cc8507a7bb1cbfa452d8597ac1c60b0..02c3933d1919e848dd24223c0b328e650831d3e2 100755 (executable)
@@ -315,8 +315,10 @@ start_interface() {
                        cls_var maxrate "$class" limitrate $dir 100
                        cls_var prio "$class" priority $dir 1
                        cls_var avgrate "$class" avgrate $dir 0
+                       cls_var qdisc_esfq "$class" qdisc_esfq $dir ""
+                       [ "$qdisc_esfq" != "" ] && add_insmod sch_esfq
                        config_get classnr "$class" classnr
-                       append cstr "$classnr:$prio:$avgrate:$pktsize:$pktdelay:$maxrate" "$N"
+                       append cstr "$classnr:$prio:$avgrate:$pktsize:$pktdelay:$maxrate:$qdisc_esfq" "$N"
                done
                append ${prefix}q "$(tcrules)" "$N"
                export dev_${dir}="ifconfig $dev up txqueuelen 5 >&- 2>&-
index 7bef85b0d01d42e3bcf6279e4eb1ef2280dd82f0..ebda50640bb9c4cbd9d6acf4bbb4d7d4941eec64 100644 (file)
@@ -13,6 +13,7 @@ BEGIN {
        pktsize[n] = $4
        delay[n] = $5
        maxrate[n] = ($6 * linespeed / 100)
+       qdisc_esfq[n] = $7
 }
 
 END {
@@ -67,7 +68,11 @@ END {
        # main qdisc
        for (i = 1; i <= n; i++) {
                printf "tc class add dev "device" parent 1:1 classid 1:"class[i]"0 hfsc"
-               if (rtm1[i] > 0) {
+               if (qdisc_esfq[i] != "") {
+                       # user requested esfq
+                       print "esfq " qdisc_esfq[i] " limit " ql
+               } else if (rtm1[i] > 0) {
+                       # rt class - use sfq
                        printf " rt m1 " int(rtm1[i]) "kbit d " int(d[i] * 1000) "us m2 " int(rtm2[i])"kbit"
                }
                printf " ls m1 " int(lsm1[i]) "kbit d " int(d[i] * 1000) "us m2 " int(lsm2[i]) "kbit"