diff options
Diffstat (limited to 'net/sched/sch_cbq.c')
-rw-r--r-- | net/sched/sch_cbq.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c index 9e6cdab6af3b..2bb271b0efc3 100644 --- a/net/sched/sch_cbq.c +++ b/net/sched/sch_cbq.c | |||
@@ -738,7 +738,7 @@ cbq_update_toplevel(struct cbq_sched_data *q, struct cbq_class *cl, | |||
738 | if (cl && q->toplevel >= borrowed->level) { | 738 | if (cl && q->toplevel >= borrowed->level) { |
739 | if (cl->q->q.qlen > 1) { | 739 | if (cl->q->q.qlen > 1) { |
740 | do { | 740 | do { |
741 | if (PSCHED_IS_PASTPERFECT(borrowed->undertime)) { | 741 | if (borrowed->undertime == PSCHED_PASTPERFECT) { |
742 | q->toplevel = borrowed->level; | 742 | q->toplevel = borrowed->level; |
743 | return; | 743 | return; |
744 | } | 744 | } |
@@ -824,7 +824,7 @@ cbq_update(struct cbq_sched_data *q) | |||
824 | } else { | 824 | } else { |
825 | /* Underlimit */ | 825 | /* Underlimit */ |
826 | 826 | ||
827 | PSCHED_SET_PASTPERFECT(cl->undertime); | 827 | cl->undertime = PSCHED_PASTPERFECT; |
828 | if (avgidle > cl->maxidle) | 828 | if (avgidle > cl->maxidle) |
829 | cl->avgidle = cl->maxidle; | 829 | cl->avgidle = cl->maxidle; |
830 | else | 830 | else |
@@ -845,7 +845,7 @@ cbq_under_limit(struct cbq_class *cl) | |||
845 | if (cl->tparent == NULL) | 845 | if (cl->tparent == NULL) |
846 | return cl; | 846 | return cl; |
847 | 847 | ||
848 | if (PSCHED_IS_PASTPERFECT(cl->undertime) || q->now >= cl->undertime) { | 848 | if (cl->undertime == PSCHED_PASTPERFECT || q->now >= cl->undertime) { |
849 | cl->delayed = 0; | 849 | cl->delayed = 0; |
850 | return cl; | 850 | return cl; |
851 | } | 851 | } |
@@ -868,8 +868,7 @@ cbq_under_limit(struct cbq_class *cl) | |||
868 | } | 868 | } |
869 | if (cl->level > q->toplevel) | 869 | if (cl->level > q->toplevel) |
870 | return NULL; | 870 | return NULL; |
871 | } while (!PSCHED_IS_PASTPERFECT(cl->undertime) && | 871 | } while (cl->undertime != PSCHED_PASTPERFECT && q->now < cl->undertime); |
872 | q->now < cl->undertime); | ||
873 | 872 | ||
874 | cl->delayed = 0; | 873 | cl->delayed = 0; |
875 | return cl; | 874 | return cl; |
@@ -1054,11 +1053,11 @@ cbq_dequeue(struct Qdisc *sch) | |||
1054 | */ | 1053 | */ |
1055 | 1054 | ||
1056 | if (q->toplevel == TC_CBQ_MAXLEVEL && | 1055 | if (q->toplevel == TC_CBQ_MAXLEVEL && |
1057 | PSCHED_IS_PASTPERFECT(q->link.undertime)) | 1056 | q->link.undertime == PSCHED_PASTPERFECT) |
1058 | break; | 1057 | break; |
1059 | 1058 | ||
1060 | q->toplevel = TC_CBQ_MAXLEVEL; | 1059 | q->toplevel = TC_CBQ_MAXLEVEL; |
1061 | PSCHED_SET_PASTPERFECT(q->link.undertime); | 1060 | q->link.undertime = PSCHED_PASTPERFECT; |
1062 | } | 1061 | } |
1063 | 1062 | ||
1064 | /* No packets in scheduler or nobody wants to give them to us :-( | 1063 | /* No packets in scheduler or nobody wants to give them to us :-( |
@@ -1289,7 +1288,7 @@ cbq_reset(struct Qdisc* sch) | |||
1289 | qdisc_reset(cl->q); | 1288 | qdisc_reset(cl->q); |
1290 | 1289 | ||
1291 | cl->next_alive = NULL; | 1290 | cl->next_alive = NULL; |
1292 | PSCHED_SET_PASTPERFECT(cl->undertime); | 1291 | cl->undertime = PSCHED_PASTPERFECT; |
1293 | cl->avgidle = cl->maxidle; | 1292 | cl->avgidle = cl->maxidle; |
1294 | cl->deficit = cl->quantum; | 1293 | cl->deficit = cl->quantum; |
1295 | cl->cpriority = cl->priority; | 1294 | cl->cpriority = cl->priority; |
@@ -1650,7 +1649,7 @@ cbq_dump_class_stats(struct Qdisc *sch, unsigned long arg, | |||
1650 | cl->xstats.avgidle = cl->avgidle; | 1649 | cl->xstats.avgidle = cl->avgidle; |
1651 | cl->xstats.undertime = 0; | 1650 | cl->xstats.undertime = 0; |
1652 | 1651 | ||
1653 | if (!PSCHED_IS_PASTPERFECT(cl->undertime)) | 1652 | if (cl->undertime != PSCHED_PASTPERFECT) |
1654 | cl->xstats.undertime = PSCHED_TDIFF(cl->undertime, q->now); | 1653 | cl->xstats.undertime = PSCHED_TDIFF(cl->undertime, q->now); |
1655 | 1654 | ||
1656 | if (gnet_stats_copy_basic(d, &cl->bstats) < 0 || | 1655 | if (gnet_stats_copy_basic(d, &cl->bstats) < 0 || |