mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-02-17 17:54:43 +02:00
fix the case when NETDEVICES_MULTIQUEUE is not enabled (#2506)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9282 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
50288c1764
commit
309e8eb475
@ -472,7 +472,11 @@ static int cpmac_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
|
|
||||||
len = max(skb->len, ETH_ZLEN);
|
len = max(skb->len, ETH_ZLEN);
|
||||||
queue = skb->queue_mapping;
|
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];
|
desc = &priv->desc_ring[queue];
|
||||||
if (unlikely(desc->dataflags & CPMAC_OWN)) {
|
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);
|
dev_kfree_skb_irq(desc->skb);
|
||||||
desc->skb = NULL;
|
desc->skb = NULL;
|
||||||
|
#ifdef CONFIG_NETDEVICES_MULTIQUEUE
|
||||||
if (netif_subqueue_stopped(dev, queue))
|
if (netif_subqueue_stopped(dev, queue))
|
||||||
netif_wake_subqueue(dev, queue);
|
netif_wake_subqueue(dev, queue);
|
||||||
|
#else
|
||||||
|
if (netif_queue_stopped(dev))
|
||||||
|
netif_wake_queue(dev);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
if (netif_msg_tx_err(priv) && net_ratelimit())
|
if (netif_msg_tx_err(priv) && net_ratelimit())
|
||||||
printk(KERN_WARNING
|
printk(KERN_WARNING
|
||||||
"%s: end_xmit: spurious interrupt\n", dev->name);
|
"%s: end_xmit: spurious interrupt\n", dev->name);
|
||||||
|
#ifdef CONFIG_NETDEVICES_MULTIQUEUE
|
||||||
if (netif_subqueue_stopped(dev, queue))
|
if (netif_subqueue_stopped(dev, queue))
|
||||||
netif_wake_subqueue(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
|
* FIXME: waking up random queue is not the best thing to
|
||||||
* do... on the other hand why we got here at all?
|
* do... on the other hand why we got here at all?
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_NETDEVICES_MULTIQUEUE
|
||||||
for (i = 0; i < CPMAC_QUEUES; i++)
|
for (i = 0; i < CPMAC_QUEUES; i++)
|
||||||
if (priv->desc_ring[i].skb) {
|
if (priv->desc_ring[i].skb) {
|
||||||
dev_kfree_skb_any(priv->desc_ring[i].skb);
|
dev_kfree_skb_any(priv->desc_ring[i].skb);
|
||||||
netif_wake_subqueue(dev, i);
|
netif_wake_subqueue(dev, i);
|
||||||
break;
|
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user