|
@@ -134,7 +134,7 @@ static inline int qdisc_restart(struct net_device *dev)
|
|
{
|
|
{
|
|
struct Qdisc *q = dev->qdisc;
|
|
struct Qdisc *q = dev->qdisc;
|
|
struct sk_buff *skb;
|
|
struct sk_buff *skb;
|
|
- int ret;
|
|
|
|
|
|
+ int ret = NETDEV_TX_BUSY;
|
|
|
|
|
|
/* Dequeue packet */
|
|
/* Dequeue packet */
|
|
if (unlikely((skb = dev_dequeue_skb(dev, q)) == NULL))
|
|
if (unlikely((skb = dev_dequeue_skb(dev, q)) == NULL))
|
|
@@ -145,7 +145,8 @@ static inline int qdisc_restart(struct net_device *dev)
|
|
spin_unlock(&dev->queue_lock);
|
|
spin_unlock(&dev->queue_lock);
|
|
|
|
|
|
HARD_TX_LOCK(dev, smp_processor_id());
|
|
HARD_TX_LOCK(dev, smp_processor_id());
|
|
- ret = dev_hard_start_xmit(skb, dev);
|
|
|
|
|
|
+ if (!netif_subqueue_stopped(dev, skb))
|
|
|
|
+ ret = dev_hard_start_xmit(skb, dev);
|
|
HARD_TX_UNLOCK(dev);
|
|
HARD_TX_UNLOCK(dev);
|
|
|
|
|
|
spin_lock(&dev->queue_lock);
|
|
spin_lock(&dev->queue_lock);
|