I am not completely sure (I studied a hundred examples and copied eventually one of them) but I thought you had to define a class first with speed settings, and below that class a qdisc. So to see, your qdisc has no parent class at all.
This is an excerpt from my own shaper:
Code:
$TC qdisc add dev $nic_ext root handle 1:0 htb default 90
$TC class add dev $nic_ext parent 1:0 classid 1:1 htb rate 20mbit burst 15k
#: Highest priority, full bw, higest CIR, 704/1024
$TC class add dev $nic_ext parent 1:1 classid 1:10 htb rate 704kbit ceil 1700kbit
$TC qdisc add dev $nic_ext parent 1:10 handle 10 sfq perturb 10
$TC filter add dev $nic_ext parent 1:0 protocol ip prio 10 handle 10 fw classid 1:10
The first class I define (1:1) is for the entire network interface.
Then comes a first class (1:10 -> 704/1024) below this one, and below this class there is a qdisc.
The filter is obvious.
jlinkels