1
# 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?

cherusk
  • 21
  • 5

1 Answers1

1

Well, holistically it's solvable by changing default qdisc, since mq does initialize it's leave to the default qdisc. So ...

sysctl -w net.core.default_qdisc=<your_qdisc>

tc qdisc replace dev <your iface> root mq

An verifiy ...

tc -s qdisc show <your iface> ens3

Though, individual setability would have it's charme. I might come round implementing that somewhen with growin need. :)

cherusk
  • 21
  • 5