summaryrefslogtreecommitdiffstats
path: root/net/sched/sch_pie.c
diff options
context:
space:
mode:
authorLeslie Monis <lesliemonis@gmail.com>2019-02-28 18:06:54 +0530
committerDavid S. Miller <davem@davemloft.net>2019-02-28 10:35:41 -0800
commit6c97da141528097eb8e1d532dc0dbe3501f4c8ff (patch)
tree10f032522179046ddde875c3a57963f8cd2581ca /net/sched/sch_pie.c
parent4a8acef78e170854ce6865e216eff82bda92437d (diff)
downloadlinux-6c97da141528097eb8e1d532dc0dbe3501f4c8ff.tar.bz2
net: sched: pie: avoid slow division in drop probability decay
As per RFC 8033, it is sufficient for the drop probability decay factor to have a value of (1 - 1/64) instead of 98%. This avoids the need to do slow division. Suggested-by: David Laight <David.Laight@aculab.com> Signed-off-by: Leslie Monis <lesliemonis@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_pie.c')
-rw-r--r--net/sched/sch_pie.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sched/sch_pie.c b/net/sched/sch_pie.c
index f93cfe034c72..1cc0c7b74aa3 100644
--- a/net/sched/sch_pie.c
+++ b/net/sched/sch_pie.c
@@ -429,7 +429,8 @@ static void calculate_probability(struct Qdisc *sch)
*/
if (qdelay == 0 && qdelay_old == 0 && update_prob)
- q->vars.prob = 98 * div_u64(q->vars.prob, 100);
+ /* Reduce drop probability to 98.4% */
+ q->vars.prob -= q->vars.prob / 64u;
q->vars.qdelay = qdelay;
q->vars.qlen_old = qlen;