diff options
Diffstat (limited to 'package/qos-scripts/files/usr/lib')
| -rwxr-xr-x | package/qos-scripts/files/usr/lib/qos/generate.sh | 6 | ||||
| -rw-r--r-- | package/qos-scripts/files/usr/lib/qos/tcrules.awk | 19 | 
2 files changed, 15 insertions, 10 deletions
diff --git a/package/qos-scripts/files/usr/lib/qos/generate.sh b/package/qos-scripts/files/usr/lib/qos/generate.sh index 9bd3b47850..a697e9f4a2 100755 --- a/package/qos-scripts/files/usr/lib/qos/generate.sh +++ b/package/qos-scripts/files/usr/lib/qos/generate.sh @@ -315,10 +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 +			cls_var qdisc "$class" qdisc $dir "" +			cls_var filter "$class" filter $dir ""  			config_get classnr "$class" classnr -			append cstr "$classnr:$prio:$avgrate:$pktsize:$pktdelay:$maxrate:$qdisc_esfq" "$N" +			append cstr "$classnr:$prio:$avgrate:$pktsize:$pktdelay:$maxrate:$qdisc:$filter" "$N"  		done  		append ${prefix}q "$(tcrules)" "$N"  		export dev_${dir}="ifconfig $dev up txqueuelen 5 >&- 2>&- diff --git a/package/qos-scripts/files/usr/lib/qos/tcrules.awk b/package/qos-scripts/files/usr/lib/qos/tcrules.awk index ebda50640b..90b4212e72 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 +		}  	}  }  | 
