From 9795a4a8600db85059c479235f8e16a0dee8090c Mon Sep 17 00:00:00 2001 From: Johannes Naab Date: Wed, 23 Jan 2013 11:36:51 +0000 Subject: [PATCH] --- yaml --- r: 349621 b: refs/heads/master c: a13d3104710184ecc43edc35a25ae8092058463f h: refs/heads/master i: 349619: d44333fc92f5ba755bcbadaa2179b350c3160270 v: v3 --- [refs] | 2 +- trunk/net/sched/sch_netem.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index a6fe459f7334..29be08e2c4f7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 80d84ef3ff1ddc7a829c58980a9dd566a8af5203 +refs/heads/master: a13d3104710184ecc43edc35a25ae8092058463f diff --git a/trunk/net/sched/sch_netem.c b/trunk/net/sched/sch_netem.c index 298c0ddfb57e..3d2acc7a9c80 100644 --- a/trunk/net/sched/sch_netem.c +++ b/trunk/net/sched/sch_netem.c @@ -438,18 +438,18 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch) if (q->rate) { struct sk_buff_head *list = &sch->q; - delay += packet_len_2_sched_time(skb->len, q); - if (!skb_queue_empty(list)) { /* - * Last packet in queue is reference point (now). - * First packet in queue is already in flight, - * calculate this time bonus and substract + * Last packet in queue is reference point (now), + * calculate this time bonus and subtract * from delay. */ - delay -= now - netem_skb_cb(skb_peek(list))->time_to_send; + delay -= netem_skb_cb(skb_peek_tail(list))->time_to_send - now; + delay = max_t(psched_tdiff_t, 0, delay); now = netem_skb_cb(skb_peek_tail(list))->time_to_send; } + + delay += packet_len_2_sched_time(skb->len, q); } cb->time_to_send = now + delay;