projects
/
openwrt
/
openwrt.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ceb5350
)
fix the case when NETDEVICES_MULTIQUEUE is not enabled (#2506)
author
Eugene Konev
<ejka@imfi.kspu.ru>
Sat, 13 Oct 2007 02:27:19 +0000
(
02:27
+0000)
committer
Eugene 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
patch
|
blob
|
history
diff --git
a/target/linux/ar7/files/drivers/net/cpmac.c
b/target/linux/ar7/files/drivers/net/cpmac.c
index b0ba670ee6cfd01ac1a4ba7afece501caca5608f..1d0ba11d258f14be37fb7f383819a12a2573c950 100644
(file)
--- a/
target/linux/ar7/files/drivers/net/cpmac.c
+++ b/
target/linux/ar7/files/drivers/net/cpmac.c
@@
-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)