aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/pkt_sched.h2
-rw-r--r--net/sched/sch_cbq.c12
-rw-r--r--net/sched/sch_netem.c2
3 files changed, 7 insertions, 9 deletions
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h
index 276d1ad2b708..32cdf0137cb2 100644
--- a/include/net/pkt_sched.h
+++ b/include/net/pkt_sched.h
@@ -55,8 +55,6 @@ typedef long psched_tdiff_t;
55#define PSCHED_TDIFF_SAFE(tv1, tv2, bound) \ 55#define PSCHED_TDIFF_SAFE(tv1, tv2, bound) \
56 min_t(long long, (tv1) - (tv2), bound) 56 min_t(long long, (tv1) - (tv2), bound)
57#define PSCHED_TLESS(tv1, tv2) ((tv1) < (tv2)) 57#define PSCHED_TLESS(tv1, tv2) ((tv1) < (tv2))
58#define PSCHED_TADD2(tv, delta, tv_res) ((tv_res) = (tv) + (delta))
59#define PSCHED_TADD(tv, delta) ((tv) += (delta))
60#define PSCHED_SET_PASTPERFECT(t) ((t) = 0) 58#define PSCHED_SET_PASTPERFECT(t) ((t) = 0)
61#define PSCHED_IS_PASTPERFECT(t) ((t) == 0) 59#define PSCHED_IS_PASTPERFECT(t) ((t) == 0)
62 60
diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
index 57ac6c5cd273..290b26bdc89d 100644
--- a/net/sched/sch_cbq.c
+++ b/net/sched/sch_cbq.c
@@ -387,7 +387,7 @@ cbq_mark_toplevel(struct cbq_sched_data *q, struct cbq_class *cl)
387 387
388 PSCHED_GET_TIME(now); 388 PSCHED_GET_TIME(now);
389 incr = PSCHED_TDIFF(now, q->now_rt); 389 incr = PSCHED_TDIFF(now, q->now_rt);
390 PSCHED_TADD2(q->now, incr, now); 390 now = q->now + incr;
391 391
392 do { 392 do {
393 if (PSCHED_TLESS(cl->undertime, now)) { 393 if (PSCHED_TLESS(cl->undertime, now)) {
@@ -492,7 +492,7 @@ static void cbq_ovl_classic(struct cbq_class *cl)
492 cl->avgidle = cl->minidle; 492 cl->avgidle = cl->minidle;
493 if (delay <= 0) 493 if (delay <= 0)
494 delay = 1; 494 delay = 1;
495 PSCHED_TADD2(q->now, delay, cl->undertime); 495 cl->undertime = q->now + delay;
496 496
497 cl->xstats.overactions++; 497 cl->xstats.overactions++;
498 cl->delayed = 1; 498 cl->delayed = 1;
@@ -558,7 +558,7 @@ static void cbq_ovl_delay(struct cbq_class *cl)
558 delay -= (-cl->avgidle) - ((-cl->avgidle) >> cl->ewma_log); 558 delay -= (-cl->avgidle) - ((-cl->avgidle) >> cl->ewma_log);
559 if (cl->avgidle < cl->minidle) 559 if (cl->avgidle < cl->minidle)
560 cl->avgidle = cl->minidle; 560 cl->avgidle = cl->minidle;
561 PSCHED_TADD2(q->now, delay, cl->undertime); 561 cl->undertime = q->now + delay;
562 562
563 if (delay > 0) { 563 if (delay > 0) {
564 sched += delay + cl->penalty; 564 sched += delay + cl->penalty;
@@ -820,7 +820,7 @@ cbq_update(struct cbq_sched_data *q)
820 idle -= L2T(&q->link, len); 820 idle -= L2T(&q->link, len);
821 idle += L2T(cl, len); 821 idle += L2T(cl, len);
822 822
823 PSCHED_TADD2(q->now, idle, cl->undertime); 823 cl->undertime = q->now + idle;
824 } else { 824 } else {
825 /* Underlimit */ 825 /* Underlimit */
826 826
@@ -1018,12 +1018,12 @@ cbq_dequeue(struct Qdisc *sch)
1018 cbq_time = max(real_time, work); 1018 cbq_time = max(real_time, work);
1019 */ 1019 */
1020 incr2 = L2T(&q->link, q->tx_len); 1020 incr2 = L2T(&q->link, q->tx_len);
1021 PSCHED_TADD(q->now, incr2); 1021 q->now += incr2;
1022 cbq_update(q); 1022 cbq_update(q);
1023 if ((incr -= incr2) < 0) 1023 if ((incr -= incr2) < 0)
1024 incr = 0; 1024 incr = 0;
1025 } 1025 }
1026 PSCHED_TADD(q->now, incr); 1026 q->now += incr;
1027 q->now_rt = now; 1027 q->now_rt = now;
1028 1028
1029 for (;;) { 1029 for (;;) {
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
index bc4284396fcb..6044ae77d5da 100644
--- a/net/sched/sch_netem.c
+++ b/net/sched/sch_netem.c
@@ -218,7 +218,7 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch)
218 &q->delay_cor, q->delay_dist); 218 &q->delay_cor, q->delay_dist);
219 219
220 PSCHED_GET_TIME(now); 220 PSCHED_GET_TIME(now);
221 PSCHED_TADD2(now, delay, cb->time_to_send); 221 cb->time_to_send = now + delay;
222 ++q->counter; 222 ++q->counter;
223 ret = q->qdisc->enqueue(skb, q->qdisc); 223 ret = q->qdisc->enqueue(skb, q->qdisc);
224 } else { 224 } else {