[NET_SCHED]: sch_netem: fix off-by-one in send time comparison
authorPatrick McHardy <kaber@trash.net>
Fri, 23 Mar 2007 18:27:04 +0000 (11:27 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 26 Apr 2007 05:27:47 +0000 (22:27 -0700)
netem checks PSCHED_TLESS(cb->time_to_send, now) to find out whether it is
allowed to send a packet, which is equivalent to cb->time_to_send < now.
Use !PSCHED_TLESS(now, cb->time_to_send) instead to properly handle
cb->time_to_send == now.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_netem.c

index 3e1b633e8b0dc0fa171acc1e30e81577002dc491..bc4284396fcbd295093f302663b29037af2816a9 100644 (file)
@@ -286,7 +286,7 @@ static struct sk_buff *netem_dequeue(struct Qdisc *sch)
                /* if more time remaining? */
                PSCHED_GET_TIME(now);
 
-               if (PSCHED_TLESS(cb->time_to_send, now)) {
+               if (!PSCHED_TLESS(now, cb->time_to_send)) {
                        pr_debug("netem_dequeue: return skb=%p\n", skb);
                        sch->q.qlen--;
                        return skb;