]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/sched/sch_cbq.c
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfashe...
[linux-2.6-omap-h63xx.git] / net / sched / sch_cbq.c
index 2bb271b0efc34d1019b5023a827eca1ad1b3a107..a294542cb8e4724eba3f3995e775568123cb481b 100644 (file)
@@ -385,8 +385,8 @@ cbq_mark_toplevel(struct cbq_sched_data *q, struct cbq_class *cl)
                psched_time_t now;
                psched_tdiff_t incr;
 
-               PSCHED_GET_TIME(now);
-               incr = PSCHED_TDIFF(now, q->now_rt);
+               now = psched_get_time();
+               incr = now - q->now_rt;
                now = q->now + incr;
 
                do {
@@ -474,7 +474,7 @@ cbq_requeue(struct sk_buff *skb, struct Qdisc *sch)
 static void cbq_ovl_classic(struct cbq_class *cl)
 {
        struct cbq_sched_data *q = qdisc_priv(cl->qdisc);
-       psched_tdiff_t delay = PSCHED_TDIFF(cl->undertime, q->now);
+       psched_tdiff_t delay = cl->undertime - q->now;
 
        if (!cl->delayed) {
                delay += cl->offtime;
@@ -509,7 +509,7 @@ static void cbq_ovl_classic(struct cbq_class *cl)
                psched_tdiff_t base_delay = q->wd_expires;
 
                for (b = cl->borrow; b; b = b->borrow) {
-                       delay = PSCHED_TDIFF(b->undertime, q->now);
+                       delay = b->undertime - q->now;
                        if (delay < base_delay) {
                                if (delay <= 0)
                                        delay = 1;
@@ -547,7 +547,7 @@ static void cbq_ovl_rclassic(struct cbq_class *cl)
 static void cbq_ovl_delay(struct cbq_class *cl)
 {
        struct cbq_sched_data *q = qdisc_priv(cl->qdisc);
-       psched_tdiff_t delay = PSCHED_TDIFF(cl->undertime, q->now);
+       psched_tdiff_t delay = cl->undertime - q->now;
 
        if (!cl->delayed) {
                psched_time_t sched = q->now;
@@ -654,7 +654,7 @@ static enum hrtimer_restart cbq_undelay(struct hrtimer *timer)
        psched_tdiff_t delay = 0;
        unsigned pmask;
 
-       PSCHED_GET_TIME(now);
+       now = psched_get_time();
 
        pmask = q->pmask;
        q->pmask = 0;
@@ -776,7 +776,7 @@ cbq_update(struct cbq_sched_data *q)
                         idle = (now - last) - last_pktlen/rate
                 */
 
-               idle = PSCHED_TDIFF(q->now, cl->last);
+               idle = q->now - cl->last;
                if ((unsigned long)idle > 128*1024*1024) {
                        avgidle = cl->maxidle;
                } else {
@@ -1003,8 +1003,8 @@ cbq_dequeue(struct Qdisc *sch)
        psched_time_t now;
        psched_tdiff_t incr;
 
-       PSCHED_GET_TIME(now);
-       incr = PSCHED_TDIFF(now, q->now_rt);
+       now = psched_get_time();
+       incr = now - q->now_rt;
 
        if (q->tx_class) {
                psched_tdiff_t incr2;
@@ -1277,7 +1277,7 @@ cbq_reset(struct Qdisc* sch)
        qdisc_watchdog_cancel(&q->watchdog);
        hrtimer_cancel(&q->delay_timer);
        q->toplevel = TC_CBQ_MAXLEVEL;
-       PSCHED_GET_TIME(q->now);
+       q->now = psched_get_time();
        q->now_rt = q->now;
 
        for (prio = 0; prio <= TC_CBQ_MAXPRIO; prio++)
@@ -1448,7 +1448,7 @@ static int cbq_init(struct Qdisc *sch, struct rtattr *opt)
        hrtimer_init(&q->delay_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
        q->delay_timer.function = cbq_undelay;
        q->toplevel = TC_CBQ_MAXLEVEL;
-       PSCHED_GET_TIME(q->now);
+       q->now = psched_get_time();
        q->now_rt = q->now;
 
        cbq_link_class(&q->link);
@@ -1650,7 +1650,7 @@ cbq_dump_class_stats(struct Qdisc *sch, unsigned long arg,
        cl->xstats.undertime = 0;
 
        if (cl->undertime != PSCHED_PASTPERFECT)
-               cl->xstats.undertime = PSCHED_TDIFF(cl->undertime, q->now);
+               cl->xstats.undertime = cl->undertime - q->now;
 
        if (gnet_stats_copy_basic(d, &cl->bstats) < 0 ||
 #ifdef CONFIG_NET_ESTIMATOR
@@ -1717,23 +1717,13 @@ static unsigned long cbq_get(struct Qdisc *sch, u32 classid)
        return 0;
 }
 
-static void cbq_destroy_filters(struct cbq_class *cl)
-{
-       struct tcf_proto *tp;
-
-       while ((tp = cl->filter_list) != NULL) {
-               cl->filter_list = tp->next;
-               tcf_destroy(tp);
-       }
-}
-
 static void cbq_destroy_class(struct Qdisc *sch, struct cbq_class *cl)
 {
        struct cbq_sched_data *q = qdisc_priv(sch);
 
        BUG_TRAP(!cl->filters);
 
-       cbq_destroy_filters(cl);
+       tcf_destroy_chain(cl->filter_list);
        qdisc_destroy(cl->q);
        qdisc_put_rtab(cl->R_tab);
 #ifdef CONFIG_NET_ESTIMATOR
@@ -1760,7 +1750,7 @@ cbq_destroy(struct Qdisc* sch)
         */
        for (h = 0; h < 16; h++)
                for (cl = q->classes[h]; cl; cl = cl->next)
-                       cbq_destroy_filters(cl);
+                       tcf_destroy_chain(cl->filter_list);
 
        for (h = 0; h < 16; h++) {
                struct cbq_class *next;