diff -u -U 2 -r -N -d linux-2.6.8.1.orig/net/sched/sch_esfq.c linux-2.6.8.1/net/sched/sch_esfq.c
--- linux-2.6.8.1.orig/net/sched/sch_esfq.c	2004-08-23 15:44:39.000000000 +0100
+++ linux-2.6.8.1/net/sched/sch_esfq.c	2004-08-23 15:41:02.000000000 +0100
@@ -205,7 +205,7 @@
 
 static unsigned int esfq_drop(struct Qdisc *sch)
 {
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 	esfq_index d = q->max_depth;
 	struct sk_buff *skb;
 	unsigned int len;
@@ -247,7 +247,7 @@
 static int
 esfq_enqueue(struct sk_buff *skb, struct Qdisc* sch)
 {
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 	unsigned hash = esfq_hash(q, skb);
 	unsigned depth = q->depth;
 	esfq_index x;
@@ -283,7 +283,7 @@
 static int
 esfq_requeue(struct sk_buff *skb, struct Qdisc* sch)
 {
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 	unsigned hash = esfq_hash(q, skb);
 	unsigned depth = q->depth;
 	esfq_index x;
@@ -320,7 +320,7 @@
 static struct sk_buff *
 esfq_dequeue(struct Qdisc* sch)
 {
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 	struct sk_buff *skb;
 	unsigned depth = q->depth;
 	esfq_index a, old_a;
@@ -367,7 +367,7 @@
 static void esfq_perturbation(unsigned long arg)
 {
 	struct Qdisc *sch = (struct Qdisc*)arg;
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 
 	q->perturbation = net_random()&0x1F;
 	q->perturb_timer.expires = jiffies + q->perturb_period;
@@ -380,7 +380,7 @@
 
 static int esfq_change(struct Qdisc *sch, struct rtattr *opt)
 {
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 	struct tc_sfq_qopt *ctl = RTA_DATA(opt);
 	int old_perturb = q->perturb_period;
 	
@@ -420,7 +420,7 @@
 
 static int esfq_init(struct Qdisc *sch, struct rtattr *opt)
 {
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 	struct tc_sfq_qopt *ctl;
 	esfq_index p = ~0UL/2;
 	int i;
@@ -513,7 +513,7 @@
 
 static void esfq_destroy(struct Qdisc *sch)
 {
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 	del_timer(&q->perturb_timer);
 	if(q->ht)
 		kfree(q->ht);
@@ -531,7 +531,7 @@
 
 static int esfq_dump(struct Qdisc *sch, struct sk_buff *skb)
 {
-	struct esfq_sched_data *q = (struct esfq_sched_data *)sch->data;
+	struct esfq_sched_data *q = qdisc_priv(sch);
 	unsigned char	 *b = skb->tail;
 	struct tc_sfq_qopt opt;
 
