# uname -r
4.7.5-200.fc24.x86_64+debug
# tc -s -d qdisc show dev ens3
qdisc mq 8001: root
Sent 44589 bytes 340 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0
qdisc fq_codel 0: parent 8001:1
limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn Sent 90 bytes 1 pkt (dropped 0, overlimits 0 requeues 0)
[...]
qdisc fq_codel 0: parent 8001:2
limit 10240p flows 1024 quantum 1514 target 5.0ms interval
100.0ms ecn Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) [...]
-> When trying to replace ...
# tc qdisc replace dev ens3 parent 8001 handle :1 sfq
Error: argument ":5" is wrong: invalid qdisc ID
# tc qdisc replace dev ens3 handle 8001:1 sfq
RTNETLINK answers: Invalid argument
# tc qdisc replace dev ens3 parent 8001 handle 1 sfq
RTNETLINK answers: No such file or directory
# tc qdisc replace dev ens3 parent 8001:1 sfq
RTNETLINK answers: No such file or directory
Specific qdisc is out of scope here. Though, it makes sense, especially for older kernels, where the default qdisc is FIFO!
According code it should be possible:
http://lxr.free-electrons.com/source/net/sched/sch_api.c#L1214
Sparing you trivial tc code paths. It simply constructs a netlink msg to the kernel from cli input.
I've not traced through yet, it might be a simple one. :)
Has anyone ever exchanged a leaf in a multiq instance? Am I getting something wrong when constructing the cli invoke?