diff options
Diffstat (limited to 'package/qos-scripts/files/usr/lib/qos/tcrules.awk')
-rw-r--r-- | package/qos-scripts/files/usr/lib/qos/tcrules.awk | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/package/qos-scripts/files/usr/lib/qos/tcrules.awk b/package/qos-scripts/files/usr/lib/qos/tcrules.awk index ebda506..90b4212 100644 --- a/package/qos-scripts/files/usr/lib/qos/tcrules.awk +++ b/package/qos-scripts/files/usr/lib/qos/tcrules.awk @@ -13,7 +13,8 @@ BEGIN { pktsize[n] = $4 delay[n] = $5 maxrate[n] = ($6 * linespeed / 100) - qdisc_esfq[n] = $7 + qdisc[n] = $7 + filter[n] = $8 } END { @@ -68,11 +69,7 @@ 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 (qdisc_esfq[i] != "") { - # user requested esfq - print "esfq " qdisc_esfq[i] " limit " ql - } else if (rtm1[i] > 0) { - # rt class - use sfq + if (rtm1[i] > 0) { 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" @@ -96,7 +93,10 @@ END { max = 3 * min limit = (min + max) * 3 - if (rtm1[i] > 0) { + if (qdisc[i] != "") { + # user specified qdisc + print qdisc[i] " limit " limit + } else if (rtm1[i] > 0) { # rt class - use sfq print "sfq perturb 2 limit " limit } else { @@ -123,6 +123,11 @@ END { # filter rule for (i = 1; i <= n; i++) { print "tc filter add dev "device" parent 1: prio "class[i]" protocol ip handle "class[i]" fw flowid 1:"class[i] "0" + filterc=1 + if (filter[i] != "") { + print " tc filter add dev "device" parent "class[i]"00: handle "filterc"0 "filter[i] + filterc=filterc+1 + } } } |