fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / net / sched / sch_teql.c
index 963e87a..4c16ad5 100644 (file)
@@ -11,7 +11,7 @@
 #include <linux/module.h>
 #include <asm/uaccess.h>
 #include <asm/system.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/sched.h>
@@ -22,6 +22,7 @@
 #include <linux/in.h>
 #include <linux/errno.h>
 #include <linux/interrupt.h>
+#include <linux/if_arp.h>
 #include <linux/if_ether.h>
 #include <linux/inet.h>
 #include <linux/netdevice.h>
@@ -31,6 +32,7 @@
 #include <net/ip.h>
 #include <net/route.h>
 #include <linux/skbuff.h>
+#include <linux/moduleparam.h>
 #include <net/sock.h>
 #include <net/pkt_sched.h>
 
@@ -95,14 +97,14 @@ teql_enqueue(struct sk_buff *skb, struct Qdisc* sch)
 
        __skb_queue_tail(&q->q, skb);
        if (q->q.qlen <= dev->tx_queue_len) {
-               sch->stats.bytes += skb->len;
-               sch->stats.packets++;
+               sch->bstats.bytes += skb->len;
+               sch->bstats.packets++;
                return 0;
        }
 
        __skb_unlink(skb, &q->q);
        kfree_skb(skb);
-       sch->stats.drops++;
+       sch->qstats.drops++;
        return NET_XMIT_DROP;
 }
 
@@ -112,6 +114,7 @@ teql_requeue(struct sk_buff *skb, struct Qdisc* sch)
        struct teql_sched_data *q = qdisc_priv(sch);
 
        __skb_queue_head(&q->q, skb);
+       sch->qstats.requeues++;
        return 0;
 }
 
@@ -271,7 +274,7 @@ teql_resolve(struct sk_buff *skb, struct sk_buff *skb_res, struct net_device *de
 
 static int teql_master_xmit(struct sk_buff *skb, struct net_device *dev)
 {
-       struct teql_master *master = (void*)dev->priv;
+       struct teql_master *master = netdev_priv(dev);
        struct Qdisc *start, *q;
        int busy;
        int nores;
@@ -299,20 +302,17 @@ restart:
 
                switch (teql_resolve(skb, skb_res, slave)) {
                case 0:
-                       if (spin_trylock(&slave->xmit_lock)) {
-                               slave->xmit_lock_owner = smp_processor_id();
+                       if (netif_tx_trylock(slave)) {
                                if (!netif_queue_stopped(slave) &&
                                    slave->hard_start_xmit(skb, slave) == 0) {
-                                       slave->xmit_lock_owner = -1;
-                                       spin_unlock(&slave->xmit_lock);
+                                       netif_tx_unlock(slave);
                                        master->slaves = NEXT_SLAVE(q);
                                        netif_wake_queue(dev);
                                        master->stats.tx_packets++;
                                        master->stats.tx_bytes += len;
                                        return 0;
                                }
-                               slave->xmit_lock_owner = -1;
-                               spin_unlock(&slave->xmit_lock);
+                               netif_tx_unlock(slave);
                        }
                        if (netif_queue_stopped(dev))
                                busy = 1;
@@ -347,7 +347,7 @@ drop:
 static int teql_master_open(struct net_device *dev)
 {
        struct Qdisc * q;
-       struct teql_master *m = (void*)dev->priv;
+       struct teql_master *m = netdev_priv(dev);
        int mtu = 0xFFFE;
        unsigned flags = IFF_NOARP|IFF_MULTICAST;
 
@@ -394,13 +394,13 @@ static int teql_master_close(struct net_device *dev)
 
 static struct net_device_stats *teql_master_stats(struct net_device *dev)
 {
-       struct teql_master *m = (void*)dev->priv;
+       struct teql_master *m = netdev_priv(dev);
        return &m->stats;
 }
 
 static int teql_master_mtu(struct net_device *dev, int new_mtu)
 {
-       struct teql_master *m = (void*)dev->priv;
+       struct teql_master *m = netdev_priv(dev);
        struct Qdisc *q;
 
        if (new_mtu < 68)
@@ -420,7 +420,7 @@ static int teql_master_mtu(struct net_device *dev, int new_mtu)
 
 static __init void teql_master_setup(struct net_device *dev)
 {
-       struct teql_master *master = dev->priv;
+       struct teql_master *master = netdev_priv(dev);
        struct Qdisc_ops *ops = &master->qops;
 
        master->dev     = dev;
@@ -449,7 +449,7 @@ static __init void teql_master_setup(struct net_device *dev)
 
 static LIST_HEAD(master_dev_list);
 static int max_equalizers = 1;
-MODULE_PARM(max_equalizers, "i");
+module_param(max_equalizers, int, 0);
 MODULE_PARM_DESC(max_equalizers, "Max number of link equalizers");
 
 static int __init teql_init(void)
@@ -473,7 +473,7 @@ static int __init teql_init(void)
                        break;
                }
 
-               master = dev->priv;
+               master = netdev_priv(dev);
 
                strlcpy(master->qops.id, dev->name, IFNAMSIZ);
                err = register_qdisc(&master->qops);