Thread (13 messages) 13 messages, 3 authors, 2005-05-25
STALE7682d

[PATCH] netem: fix logic bug in reorder conditional

From: Stephen Hemminger <hidden>
Date: 2005-05-23 17:43:42

Thanks, Julio you spotted the problem with the logic.  This should fix it:

Index: netem-2.6.12-rc4/net/sched/sch_netem.c
===================================================================
--- netem-2.6.12-rc4.orig/net/sched/sch_netem.c
+++ netem-2.6.12-rc4/net/sched/sch_netem.c
@@ -181,13 +181,9 @@ static int netem_enqueue(struct sk_buff 
 		q->duplicate = dupsave;
 	}
 
-	/* 
-	 * Do re-ordering by putting one out of N packets at the front
-	 * of the queue.
-	 * gap == 0 is special case for no-reordering.
-	 */
-	if (q->gap == 0 && q->counter < q->gap && 
-	    q->reorder < get_crandom(&q->reorder_cor)) {
+	if (q->gap == 0 		/* not doing reordering */
+	    || q->counter < q->gap 	/* inside last reordering gap */
+	    || q->reorder < get_crandom(&q->reorder_cor)) {
 		psched_time_t now;
 		PSCHED_GET_TIME(now);
 		PSCHED_TADD2(now, tabledist(q->latency, q->jitter, 
@@ -196,6 +192,10 @@ static int netem_enqueue(struct sk_buff 
 		++q->counter;
 		ret = q->qdisc->enqueue(skb, q->qdisc);
 	} else {
+		/* 
+		 * Do re-ordering by putting one out of N packets at the front
+		 * of the queue.
+		 */
 		PSCHED_GET_TIME(cb->time_to_send);
 		q->counter = 0;
 		ret = q->qdisc->ops->requeue(skb, q->qdisc);
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help