fix the case when NETDEVICES_MULTIQUEUE is not enabled (#2506)
authorEugene Konev <ejka@imfi.kspu.ru>
Sat, 13 Oct 2007 02:27:19 +0000 (02:27 +0000)
committerEugene Konev <ejka@imfi.kspu.ru>
Sat, 13 Oct 2007 02:27:19 +0000 (02:27 +0000)
SVN-Revision: 9282

target/linux/ar7/files/drivers/net/cpmac.c

index b0ba670ee6cfd01ac1a4ba7afece501caca5608f..1d0ba11d258f14be37fb7f383819a12a2573c950 100644 (file)
@@ -472,7 +472,11 @@ static int cpmac_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
        len = max(skb->len, ETH_ZLEN);
        queue = skb->queue_mapping;
 
        len = max(skb->len, ETH_ZLEN);
        queue = skb->queue_mapping;
+#ifdef CONFIG_NETDEVICES_MULTIQUEUE
        netif_stop_subqueue(dev, queue);
        netif_stop_subqueue(dev, queue);
+#else
+       netif_stop_queue(dev);
+#endif
 
        desc = &priv->desc_ring[queue];
        if (unlikely(desc->dataflags & CPMAC_OWN)) {
 
        desc = &priv->desc_ring[queue];
        if (unlikely(desc->dataflags & CPMAC_OWN)) {
@@ -529,14 +533,24 @@ static void cpmac_end_xmit(struct net_device *dev, int queue)
 
                dev_kfree_skb_irq(desc->skb);
                desc->skb = NULL;
 
                dev_kfree_skb_irq(desc->skb);
                desc->skb = NULL;
+#ifdef CONFIG_NETDEVICES_MULTIQUEUE
                if (netif_subqueue_stopped(dev, queue))
                        netif_wake_subqueue(dev, queue);
                if (netif_subqueue_stopped(dev, queue))
                        netif_wake_subqueue(dev, queue);
+#else
+               if (netif_queue_stopped(dev))
+                       netif_wake_queue(dev);
+#endif
        } else {
                if (netif_msg_tx_err(priv) && net_ratelimit())
                        printk(KERN_WARNING
                               "%s: end_xmit: spurious interrupt\n", dev->name);
        } else {
                if (netif_msg_tx_err(priv) && net_ratelimit())
                        printk(KERN_WARNING
                               "%s: end_xmit: spurious interrupt\n", dev->name);
+#ifdef CONFIG_NETDEVICES_MULTIQUEUE
                if (netif_subqueue_stopped(dev, queue))
                        netif_wake_subqueue(dev, queue);
                if (netif_subqueue_stopped(dev, queue))
                        netif_wake_subqueue(dev, queue);
+#else
+               if (netif_queue_stopped(dev))
+                       netif_wake_queue(dev);
+#endif
        }
 }
 
        }
 }
 
@@ -710,12 +724,18 @@ static void cpmac_tx_timeout(struct net_device *dev)
         * FIXME: waking up random queue is not the best thing to
         * do... on the other hand why we got here at all?
         */
         * FIXME: waking up random queue is not the best thing to
         * do... on the other hand why we got here at all?
         */
+#ifdef CONFIG_NETDEVICES_MULTIQUEUE
        for (i = 0; i < CPMAC_QUEUES; i++)
                if (priv->desc_ring[i].skb) {
                        dev_kfree_skb_any(priv->desc_ring[i].skb);
                        netif_wake_subqueue(dev, i);
                        break;
                }
        for (i = 0; i < CPMAC_QUEUES; i++)
                if (priv->desc_ring[i].skb) {
                        dev_kfree_skb_any(priv->desc_ring[i].skb);
                        netif_wake_subqueue(dev, i);
                        break;
                }
+#else
+       if (priv->desc_ring[0].skb)
+               dev_kfree_skb_any(priv->desc_ring[0].skb);
+       netif_wake_queue(dev);
+#endif
 }
 
 static int cpmac_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 }
 
 static int cpmac_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)