summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorVijay Subramanian <subramanian.vijay@gmail.com>2012-01-19 11:20:59 +0100
committerDavid S. Miller <davem@davemloft.net>2012-01-22 21:08:44 +0100
commita42b4799c683723e8c464de4026af085b2ebd5fa (patch)
tree303ebae69ea9f9db0a5bdf7020dc26c01af14afd /net
parentmlx4_core: map async events to arbitrary slave eqs (diff)
downloadlinux-a42b4799c683723e8c464de4026af085b2ebd5fa.tar.xz
linux-a42b4799c683723e8c464de4026af085b2ebd5fa.zip
netem: Fix off-by-one bug in reordering
With netem reordering, a gap of N is supposed to reorder every Nth packet with given reorder probability. However, the code currently skips N packets and reorders every (N+1)th packet. Signed-off-by: Vijay Subramanian <subramanian.vijay@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/sched/sch_netem.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
index e7e1d0b57b3d..2776012132ea 100644
--- a/net/sched/sch_netem.c
+++ b/net/sched/sch_netem.c
@@ -419,7 +419,7 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch)
cb = netem_skb_cb(skb);
if (q->gap == 0 || /* not doing reordering */
- q->counter < q->gap || /* inside last reordering gap */
+ q->counter < q->gap - 1 || /* inside last reordering gap */
q->reorder < get_crandom(&q->reorder_cor)) {
psched_time_t now;
psched_tdiff_t delay;