diff -u -U 2 -r -N -d linux-2.6.8.1.orig/net/sched/sch_wrr.c linux-2.6.8.1/net/sched/sch_wrr.c
--- linux-2.6.8.1.orig/net/sched/sch_wrr.c	2004-08-23 15:44:41.000000000 +0100
+++ linux-2.6.8.1/net/sched/sch_wrr.c	2004-08-23 15:37:54.000000000 +0100
@@ -729,7 +729,7 @@
 
 static void wrr_destroy(struct Qdisc *sch)
 {
-  struct wrr_sched_data *q=(struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   int i;
   
   // Destroy our filter:
@@ -747,7 +747,7 @@
 
 static int wrr_init(struct Qdisc *sch, struct rtattr *opt)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   int i,maciniterr;
   char crterr;
   struct tc_wrr_qdisc_crt *qopt;
@@ -851,7 +851,7 @@
 
 static void wrr_reset(struct Qdisc* sch)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   int i;
   
   // Reset own values:
@@ -880,7 +880,7 @@
 
 static int wrr_enqueue(struct sk_buff *skb, struct Qdisc* sch)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   int retvalue=ENQUEUE_FAIL;
   
   // The packet is in skb.
@@ -926,7 +926,7 @@
 
 static struct sk_buff *wrr_dequeue(struct Qdisc* sch)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   struct sk_buff* skb;
   int band;
   u64 weight,priosum;
@@ -985,7 +985,7 @@
 
 static int wrr_requeue(struct sk_buff *skb, struct Qdisc* sch)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   struct Qdisc* qdisc;
   int ret;
   
@@ -1022,7 +1022,7 @@
 
 static unsigned int wrr_drop(struct Qdisc* sch)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
 
   // Ugly... Drop button up in heap:
   int i;
@@ -1041,7 +1041,7 @@
 
 static int wrr_dump(struct Qdisc *sch, struct sk_buff *skb)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   unsigned char	*b = skb->tail;
   struct tc_wrr_qdisc_stats opt;
 
@@ -1074,7 +1074,7 @@
 
 static int wrr_tune_std(struct Qdisc *sch, struct rtattr *opt) 
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   struct tc_wrr_qdisc_modf_std *qopt = RTA_DATA(opt);
   
   if(opt->rta_len < RTA_LENGTH(sizeof(*qopt))) return -EINVAL;  
@@ -1101,7 +1101,7 @@
 
 static int wrr_tune_proxy(struct Qdisc *sch, struct rtattr *opt) 
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   struct tc_wrr_qdisc_modf_proxy *qopt = RTA_DATA(opt);
   int i;
 
@@ -1146,7 +1146,7 @@
 static int wrr_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
 	             struct Qdisc **old)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   if(arg>q->bandc || arg==0)  return -EINVAL;
   arg--;
   
@@ -1169,7 +1169,7 @@
 // Returns the qdisc for a class:
 static struct Qdisc * wrr_leaf(struct Qdisc *sch, unsigned long arg)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   if(arg>q->bandc || arg==0)  return NULL;
   arg--;
   return q->bands[arg].que;
@@ -1177,7 +1177,7 @@
 
 static unsigned long wrr_get(struct Qdisc *sch, u32 classid)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   unsigned long band = TC_H_MIN(classid);
   if(band>q->bandc || band==0) return 0;
   return band;
@@ -1190,7 +1190,7 @@
 
 static int wrr_delete(struct Qdisc *sch, unsigned long cl)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   if(cl==0 || cl>q->bandc) return -ENOENT;
   cl--;
   return 0;
@@ -1199,7 +1199,7 @@
 static int wrr_dump_class(struct Qdisc *sch, unsigned long cl, 
                           struct sk_buff *skb, struct tcmsg *tcm)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   unsigned char *b = skb->tail;
   struct tc_wrr_class_stats opt;
 
@@ -1245,7 +1245,7 @@
                       struct rtattr **tca, unsigned long *arg)
 {
   unsigned long cl = *arg;
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   struct rtattr *opt = tca[TCA_OPTIONS-1];
   struct tc_wrr_class_modf *copt = RTA_DATA(opt);
   
@@ -1266,7 +1266,7 @@
 
 static void wrr_walk(struct Qdisc *sch, struct qdisc_walker *arg)
 {
-  struct wrr_sched_data *q = (struct wrr_sched_data *)sch->data;
+  struct wrr_sched_data *q = qdisc_priv(sch);
   int prio;
 
   if (arg->stop) return;
