Em 06/02/2019 16:51, Stephen Hemminger escreveu:
On Wed, 6 Feb 2019 16:09:13 -0200
Marcos Antonio Moraes <marcos.anto...@digirati.com.br> wrote:
As /sys/class/net/<iface>/speed indicates a value in Mbits/sec, the
transformation is necessary to create the correct limitations.
Not sure, if this is correct or not could you give an example?
Sure.
With an interface with 1000 Mbits/sec speed, the following commands are
expected to create the same result:
`tc class add dev enp0s3 parent 1:0 classid 1:1 htb rate 500Mbit`
`tc class add dev enp0s3 parent 1:0 classid 1:1 htb rate 50%`
The first command creates the correct class:
class htb 1:1 root prio 0 rate 500Mbit ceil 500Mbit burst 1500b
cburst 1500b
The second one should do the same, instead of creating a class like this:
class htb 1:1 root prio 0 rate 496bit ceil 496bit burst 1599b
cburst 1599b
This happens because after parse_percent_rate(), get_rate() (or
get_rate64()) is called, and it expects to treat the value with the unit
suffix. And the value read from /sys/class/net/<iface>/speed is in
Mbit/sec but does not include the unit. Converting the unity from mbit
to bit would solve the problem.
This patch needs a signed-off-by and a a Fixes tag.
Also please put iproute2 in subject line:
[PATCH iproute2] tc: use bits not mbits/sec in rate percent.
Also, please rebase since I just found a memory leak in this function.
I'll provide a patch with this adjustments.