]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
net/sched: netem: fix probability gaps in 4-state loss model
authorStephen Hemminger <stephen@networkplumber.org>
Sat, 18 Apr 2026 03:19:39 +0000 (20:19 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 28 Apr 2026 00:30:27 +0000 (17:30 -0700)
commit732b463449fd0ef90acd13cda68eab1c91adb00c
treed6ac95e39093062e09bc5cbfbf5b2e45858e0855
parent35eaa6d8d6c2ee65e96f507add856e0eacf24591
net/sched: netem: fix probability gaps in 4-state loss model

The 4-state Markov chain in loss_4state() has gaps at the boundaries
between transition probability ranges. The comparisons use:

  if (rnd < a4)
  else if (a4 < rnd && rnd < a1 + a4)

When rnd equals a boundary value exactly, neither branch matches and
no state transition occurs. The redundant lower-bound check (a4 < rnd)
is already implied by being in the else branch.

Remove the unnecessary lower-bound comparisons so the ranges are
contiguous and every random value produces a transition, matching
the GI (General and Intuitive) loss model specification.

This bug goes back to original implementation of this model.

Fixes: 661b79725fea ("netem: revised correlated loss generator")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260418032027.900913-2-stephen@networkplumber.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/sched/sch_netem.c