From: Thomas Graf Date: Fri, 25 Jan 2013 19:13:55 +0000 (+0100) Subject: linux: Increase accuracy of ingress_policing_rate at low rates X-Git-Tag: sliver-openvswitch-1.9.90-3~3^2~24 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=e5c08015823bd055ce64f12bc271c46f0551923b linux: Increase accuracy of ingress_policing_rate at low rates The current method of calculating the ingress policer rate can lead to inaccuracy if ingress_policing_rate is set to a smallish values because the rate is divided by 8 first which causes rounding errors. Signed-off-by: Thomas Graf Signed-off-by: Ben Pfaff --- diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index 433d1687a..f0f1dc279 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -3730,7 +3730,7 @@ tc_add_policer(struct netdev *netdev, int kbits_rate, int kbits_burst) memset(&tc_police, 0, sizeof tc_police); tc_police.action = TC_POLICE_SHOT; tc_police.mtu = mtu; - tc_fill_rate(&tc_police.rate, kbits_rate/8 * 1000, mtu); + tc_fill_rate(&tc_police.rate, (kbits_rate * 1000)/8, mtu); tc_police.burst = tc_bytes_to_ticks(tc_police.rate.rate, kbits_burst * 1024);