Resetting a queue discipline back to the default pfifo_fast one?
I'm trying to temporarily set a rate-limited queue discipline and then remove it a bit later:
# /sbin/tc qdisc add dev eth1 root tbf rate 600kbit latency 50ms burst 1540
# /sbin/tc qdisc del dev eth1 root
Unfortunately, this entirely removes the queue discipline and prevents outgoing data transfers from working after the queue is deleted.
I was hoping to be able to reset the queue discipline back to the default one:
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
However it doesn't look like that pfifo_fast qdisc can be created manually:
# /sbin/tc qdisc add dev eth1 root pfifo_fast
qdisc 'pfifo_fast' does not support option parsing
The work-around I found is to create a new simple queue discipline:
# /sbin/tc qdisc add dev eth1 root prio
However, I was wondering how to reset this back to the real default without rebooting.
Solution 1:
to remove and add a new queue discipline:
tc qdisc del dev eth1 root
tc qdisc add dev eth1 root pfifo
or if a queue discipline is already in place you can replace it directly:
tc qdisc replace dev eth1 root pfifo
Solution 2:
from http://www.knowplace.org/pages/howtos/traffic_shaping_with_linux/examples.php:
tc qdisc del dev eth1 root
Solution 3:
The man page for pfifo_fast (man tc-pfifo_fast) says that interfaces automatically have the pfifo_fast qdisc attached - when you then add a different qdisc and then delete this qdisc, pfifo_fast will automatically go back into service.
This suggests something has broken in the OP's setup.
Tested with:
$ uname -a
Linux debian-testing-vm 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux