[PKT_SCHED]: sch_netem: correctly order packets to be sent simultaneously
authorAndrea Bittau <a.bittau@cs.ucl.ac.uk>
Sun, 20 Nov 2005 21:41:05 +0000 (13:41 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 20 Nov 2005 21:41:05 +0000 (13:41 -0800)
If two packets were queued to be sent at the same time in the future,
their order would be reversed.  This would occur because the queue is
traversed back to front, and a position is found by checking whether
the new packet needs to be sent before the packet being examined.  If
the new packet is to be sent at the same time of a previous packet, it
would end up before the old packet in the queue.  This patch places
packets in the correct order when they are queued to be sent at a same
time in the future.

Signed-off-by: Andrea Bittau <a.bittau@cs.ucl.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_netem.c

index cdc8d283791c7d89388d911cf76c344e0ad04ba9..82fb07aa06a51306ce580a7c248f98b936dcabd2 100644 (file)
@@ -464,7 +464,7 @@ static int tfifo_enqueue(struct sk_buff *nskb, struct Qdisc *sch)
                        const struct netem_skb_cb *cb
                                = (const struct netem_skb_cb *)skb->cb;
 
-                       if (PSCHED_TLESS(cb->time_to_send, ncb->time_to_send))
+                       if (!PSCHED_TLESS(ncb->time_to_send, cb->time_to_send))
                                break;
                }