#define PSCHED_TDIFF(tv1, tv2)         (long)((tv1) - (tv2))
 #define PSCHED_TDIFF_SAFE(tv1, tv2, bound) \
                                        min_t(long long, (tv1) - (tv2), bound)
-#define PSCHED_SET_PASTPERFECT(t)      ((t) = 0)
-#define PSCHED_IS_PASTPERFECT(t)       ((t) == 0)
+#define PSCHED_PASTPERFECT             0
 
 struct qdisc_watchdog {
        struct hrtimer  timer;
 
 
 static inline int red_is_idling(struct red_parms *p)
 {
-       return !PSCHED_IS_PASTPERFECT(p->qidlestart);
+       return p->qidlestart != PSCHED_PASTPERFECT;
 }
 
 static inline void red_start_of_idle_period(struct red_parms *p)
 
 static inline void red_end_of_idle_period(struct red_parms *p)
 {
-       PSCHED_SET_PASTPERFECT(p->qidlestart);
+       p->qidlestart = PSCHED_PASTPERFECT;
 }
 
 static inline void red_restart(struct red_parms *p)
 
        if (cl && q->toplevel >= borrowed->level) {
                if (cl->q->q.qlen > 1) {
                        do {
-                               if (PSCHED_IS_PASTPERFECT(borrowed->undertime)) {
+                               if (borrowed->undertime == PSCHED_PASTPERFECT) {
                                        q->toplevel = borrowed->level;
                                        return;
                                }
                } else {
                        /* Underlimit */
 
-                       PSCHED_SET_PASTPERFECT(cl->undertime);
+                       cl->undertime = PSCHED_PASTPERFECT;
                        if (avgidle > cl->maxidle)
                                cl->avgidle = cl->maxidle;
                        else
        if (cl->tparent == NULL)
                return cl;
 
-       if (PSCHED_IS_PASTPERFECT(cl->undertime) || q->now >= cl->undertime) {
+       if (cl->undertime == PSCHED_PASTPERFECT || q->now >= cl->undertime) {
                cl->delayed = 0;
                return cl;
        }
                }
                if (cl->level > q->toplevel)
                        return NULL;
-       } while (!PSCHED_IS_PASTPERFECT(cl->undertime) &&
-                q->now < cl->undertime);
+       } while (cl->undertime != PSCHED_PASTPERFECT && q->now < cl->undertime);
 
        cl->delayed = 0;
        return cl;
                */
 
                if (q->toplevel == TC_CBQ_MAXLEVEL &&
-                   PSCHED_IS_PASTPERFECT(q->link.undertime))
+                   q->link.undertime == PSCHED_PASTPERFECT)
                        break;
 
                q->toplevel = TC_CBQ_MAXLEVEL;
-               PSCHED_SET_PASTPERFECT(q->link.undertime);
+               q->link.undertime = PSCHED_PASTPERFECT;
        }
 
        /* No packets in scheduler or nobody wants to give them to us :-(
                        qdisc_reset(cl->q);
 
                        cl->next_alive = NULL;
-                       PSCHED_SET_PASTPERFECT(cl->undertime);
+                       cl->undertime = PSCHED_PASTPERFECT;
                        cl->avgidle = cl->maxidle;
                        cl->deficit = cl->quantum;
                        cl->cpriority = cl->priority;
        cl->xstats.avgidle = cl->avgidle;
        cl->xstats.undertime = 0;
 
-       if (!PSCHED_IS_PASTPERFECT(cl->undertime))
+       if (cl->undertime != PSCHED_PASTPERFECT)
                cl->xstats.undertime = PSCHED_TDIFF(cl->undertime, q->now);
 
        if (gnet_stats_copy_basic(d, &cl->bstats) < 0 ||