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.

        

Reply via email to