]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/sched/sch_teql.c
Merge commit 'gcl/gcl-next' into next
[linux-2.6-omap-h63xx.git] / net / sched / sch_teql.c
index d35ef059abb1781e41becb98e6b1a15e3596001b..ec697cebb63bdff597a4bbf712fc8fba9bca18c3 100644 (file)
@@ -93,16 +93,6 @@ teql_enqueue(struct sk_buff *skb, struct Qdisc* sch)
        return NET_XMIT_DROP;
 }
 
-static int
-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;
-}
-
 static struct sk_buff *
 teql_dequeue(struct Qdisc* sch)
 {
@@ -123,6 +113,13 @@ teql_dequeue(struct Qdisc* sch)
        return skb;
 }
 
+static struct sk_buff *
+teql_peek(struct Qdisc* sch)
+{
+       /* teql is meant to be used as root qdisc */
+       return NULL;
+}
+
 static __inline__ void
 teql_neigh_release(struct neighbour *n)
 {
@@ -292,9 +289,9 @@ restart:
 
        do {
                struct net_device *slave = qdisc_dev(q);
-               struct netdev_queue *slave_txq;
+               struct netdev_queue *slave_txq = netdev_get_tx_queue(slave, 0);
+               const struct net_device_ops *slave_ops = slave->netdev_ops;
 
-               slave_txq = netdev_get_tx_queue(slave, 0);
                if (slave_txq->qdisc_sleeping != q)
                        continue;
                if (__netif_subqueue_stopped(slave, subq) ||
@@ -308,7 +305,7 @@ restart:
                        if (__netif_tx_trylock(slave_txq)) {
                                if (!netif_tx_queue_stopped(slave_txq) &&
                                    !netif_tx_queue_frozen(slave_txq) &&
-                                   slave->hard_start_xmit(skb, slave) == 0) {
+                                   slave_ops->ndo_start_xmit(skb, slave) == 0) {
                                        __netif_tx_unlock(slave_txq);
                                        master->slaves = NEXT_SLAVE(q);
                                        netif_wake_queue(dev);
@@ -423,6 +420,14 @@ static int teql_master_mtu(struct net_device *dev, int new_mtu)
        return 0;
 }
 
+static const struct net_device_ops teql_netdev_ops = {
+       .ndo_open       = teql_master_open,
+       .ndo_stop       = teql_master_close,
+       .ndo_start_xmit = teql_master_xmit,
+       .ndo_get_stats  = teql_master_stats,
+       .ndo_change_mtu = teql_master_mtu,
+};
+
 static __init void teql_master_setup(struct net_device *dev)
 {
        struct teql_master *master = netdev_priv(dev);
@@ -433,17 +438,13 @@ static __init void teql_master_setup(struct net_device *dev)
 
        ops->enqueue    =       teql_enqueue;
        ops->dequeue    =       teql_dequeue;
-       ops->requeue    =       teql_requeue;
+       ops->peek       =       teql_peek;
        ops->init       =       teql_qdisc_init;
        ops->reset      =       teql_reset;
        ops->destroy    =       teql_destroy;
        ops->owner      =       THIS_MODULE;
 
-       dev->open               = teql_master_open;
-       dev->hard_start_xmit    = teql_master_xmit;
-       dev->stop               = teql_master_close;
-       dev->get_stats          = teql_master_stats;
-       dev->change_mtu         = teql_master_mtu;
+       dev->netdev_ops =       &teql_netdev_ops;
        dev->type               = ARPHRD_VOID;
        dev->mtu                = 1500;
        dev->tx_queue_len       = 100;