--- sch_htb.c	Wed Jul  2 15:50:07 2003
+++ sch_htb.c.myne	Fri Jul  4 16:08:57 2003
@@ -335,22 +335,22 @@
 	while (n->rb_left) n = n->rb_left; \
 	while (n) { \
 		struct htb_class *cl = rb_entry(n, struct htb_class, memb); \
-		printk(" %x",cl->classid); htb_next_rb_node (&n); \
+		HTB_DBG(0,3," %x",cl->classid); htb_next_rb_node (&n); \
 	} }
 
 static void htb_debug_dump (struct htb_sched *q)
 {
 	int i,p;
-	printk(KERN_DEBUG "htb*g j=%lu lj=%lu\n",jiffies,q->jiffies);
+	HTB_DBG(0,1,"htb*g j=%lu lj=%lu\n",jiffies,q->jiffies);
 	/* rows */
 	for (i=TC_HTB_MAXDEPTH-1;i>=0;i--) {
-		printk(KERN_DEBUG "htb*r%d m=%x",i,q->row_mask[i]);
+		HTB_DBG(0,2,"htb*r%d m=%x",i,q->row_mask[i]);
 		for (p=0;p<TC_HTB_NUMPRIO;p++) {
 			if (!q->row[i][p].rb_node) continue;
-			printk(" p%d:",p);
+			HTB_DBG(0,3," p%d:",p);
 			HTB_DUMTREE(q->row[i]+p,node[p]);
 		}
-		printk("\n");
+		HTB_DBG(0,2,"\n");
 	}
 	/* classes */
 	for (i = 0; i < HTB_HSIZE; i++) {
@@ -358,7 +358,7 @@
 		list_for_each (l,q->hash+i) {
 			struct htb_class *cl = list_entry(l,struct htb_class,hlist);
 			long diff = PSCHED_TDIFF_SAFE(q->now, cl->t_c, (u32)cl->mbuffer, 0);
-			printk(KERN_DEBUG "htb*c%x m=%d t=%ld c=%ld pq=%lu df=%ld ql=%d "
+			HTB_DBG(0,2,"htb*c%x m=%d t=%ld c=%ld pq=%lu df=%ld ql=%d "
 					"pa=%x f:",
 				cl->classid,cl->cmode,cl->tokens,cl->ctokens,
 				cl->pq_node.rb_color==-1?0:cl->pq_key,diff,
@@ -366,10 +366,10 @@
 			if (cl->level)
 			for (p=0;p<TC_HTB_NUMPRIO;p++) {
 				if (!cl->un.inner.feed[p].rb_node) continue;
-				printk(" p%d a=%x:",p,cl->un.inner.ptr[p]?rb_entry(cl->un.inner.ptr[p], struct htb_class,node[p])->classid:0);
+				HTB_DBG(0,3," p%d a=%x:",p,cl->un.inner.ptr[p]?rb_entry(cl->un.inner.ptr[p], struct htb_class,node[p])->classid:0);
 				HTB_DUMTREE(cl->un.inner.feed+p,node[p]);
 			}
-			printk("\n");
+			HTB_DBG(0,2,"\n");
 		}
 	}
 }
@@ -994,6 +994,7 @@
 	struct htb_sched *q = (struct htb_sched *)sch->data;
 	int level;
 	long min_delay;
+	u32 debug_backup;
 #ifdef HTB_DEBUG
 	int evs_used = 0;
 #endif
@@ -1046,7 +1047,10 @@
 		if (min_delay == LONG_MAX) {
 			printk(KERN_ERR "HTB: dequeue bug (%d,%lu,%lu), report it please !\n",
 					evs_used,q->jiffies,jiffies);
+			debug_backup = q->debug;
+			q->debug>>(0) |= 3;
 			htb_debug_dump(q);
+			q->debug = debug_backup;
 		} else 
 			printk(KERN_WARNING "HTB: mindelay=%ld, some class has "
 					"too small rate\n",min_delay);
@@ -1188,7 +1192,7 @@
 	gopt.direct_pkts = q->direct_pkts;
 
 #ifdef HTB_DEBUG
-	htb_debug_dump(q);
+	if (((q->debug>>(0))&3) >= 1) htb_debug_dump(q);
 #endif
 	gopt.version = HTB_VER;
 	gopt.rate2quantum = q->rate2quantum;
