From: Marcos Antonio Moraes Date: Thu, 7 Feb 2019 15:29:54 +0000 (-0200) Subject: tc: use bits not mbits/sec in rate percent X-Git-Tag: v5.0.0~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e46c5c2063f2f8aa775d4fa17de3a82daeea47d;p=thirdparty%2Fiproute2.git tc: use bits not mbits/sec in rate percent As /sys/class/net//speed indicates a value in Mbits/sec, the conversion is necessary to create the correct limits. This guarantees the same result for the following commands in an 1000Mbit/sec device: tc class add ... htb rate 500Mbit tc class add ... htb rate 50% Fixes: 927e3cfb52b5 ("tc: B.W limits can now be specified in %.") Signed-off-by: Marcos Antonio Moraes Signed-off-by: Stephen Hemminger --- diff --git a/tc/tc_util.c b/tc/tc_util.c index 4e289ae9c..07216fba3 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -195,7 +195,7 @@ static int parse_percent_rate(char *rate, size_t len, { long dev_mbit; int ret; - double perc, rate_mbit; + double perc, rate_bit; char *str_perc = NULL; if (!dev[0]) { @@ -220,9 +220,9 @@ static int parse_percent_rate(char *rate, size_t len, return -1; } - rate_mbit = perc * dev_mbit; + rate_bit = perc * dev_mbit * 1000 * 1000; - ret = snprintf(rate, len, "%lf", rate_mbit); + ret = snprintf(rate, len, "%lf", rate_bit); if (ret <= 0 || ret >= len) { fprintf(stderr, "Unable to parse calculated rate\n"); return -1;