This is a note to let you know that I've just added the patch titled net_sched: gen_estimator: fix scaling error in bytes/packets samples to the 4.13-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: net_sched-gen_estimator-fix-scaling-error-in-bytes-packets-samples.patch and it can be found in the queue-4.13 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Mon Oct 9 09:32:35 CEST 2017 From: Eric Dumazet <edumazet@xxxxxxxxxx> Date: Wed, 13 Sep 2017 11:16:45 -0700 Subject: net_sched: gen_estimator: fix scaling error in bytes/packets samples From: Eric Dumazet <edumazet@xxxxxxxxxx> [ Upstream commit ca558e185972d8ecd308760abf972f5d408bcff0 ] Denys reported wrong rate estimations with HTB classes. It appears the bug was added in linux-4.10, since my tests where using intervals of one second only. HTB using 4 sec default rate estimators, reported rates were 4x higher. We need to properly scale the bytes/packets samples before integrating them in EWMA. Tested: echo 1 >/sys/module/sch_htb/parameters/htb_rate_est Setup HTB with one class with a rate/cail of 5Gbit Generate traffic on this class tc -s -d cl sh dev eth0 classid 7002:11 class htb 7002:11 parent 7002:1 prio 5 quantum 200000 rate 5Gbit ceil 5Gbit linklayer ethernet burst 80000b/1 mpu 0b cburst 80000b/1 mpu 0b level 0 rate_handle 1 Sent 1488215421648 bytes 982969243 pkt (dropped 0, overlimits 0 requeues 0) rate 5Gbit 412814pps backlog 136260b 2p requeues 0 TCP pkts/rtx 982969327/45 bytes 1488215557414/68130 lended: 22732826 borrowed: 0 giants: 0 tokens: -1684 ctokens: -1684 Fixes: 1c0d32fde5bd ("net_sched: gen_estimator: complete rewrite of rate estimators") Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx> Reported-by: Denys Fedoryshchenko <nuclearcat@xxxxxxxxxxxxxx> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- net/core/gen_estimator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/net/core/gen_estimator.c +++ b/net/core/gen_estimator.c @@ -83,10 +83,10 @@ static void est_timer(unsigned long arg) u64 rate, brate; est_fetch_counters(est, &b); - brate = (b.bytes - est->last_bytes) << (8 - est->ewma_log); + brate = (b.bytes - est->last_bytes) << (10 - est->ewma_log - est->intvl_log); brate -= (est->avbps >> est->ewma_log); - rate = (u64)(b.packets - est->last_packets) << (8 - est->ewma_log); + rate = (u64)(b.packets - est->last_packets) << (10 - est->ewma_log - est->intvl_log); rate -= (est->avpps >> est->ewma_log); write_seqcount_begin(&est->seq); Patches currently in stable-queue which might be from edumazet@xxxxxxxxxx are queue-4.13/packet-in-packet_do_bind-test-fanout-with-bind_lock-held.patch queue-4.13/socket-bpf-fix-possible-use-after-free.patch queue-4.13/bpf-do-not-disable-enable-bh-in-bpf_map_free_id.patch queue-4.13/packet-only-test-po-has_vnet_hdr-once-in-packet_snd.patch queue-4.13/8139too-revisit-napi_complete_done-usage.patch queue-4.13/net_sched-gen_estimator-fix-scaling-error-in-bytes-packets-samples.patch queue-4.13/tcp-fastopen-fix-on-syn-data-transmit-failure.patch queue-4.13/bpf-fix-bpf_tail_call-x64-jit.patch queue-4.13/net-set-sk_prot_creator-when-cloning-sockets-to-the-right-proto.patch queue-4.13/tcp-fix-data-delivery-rate.patch