diff options
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r-- | net/sched/sch_generic.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 4ae6aa562f2b..b13821ad2fb6 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -120,8 +120,15 @@ int sch_direct_xmit(struct sk_buff *skb, struct Qdisc *q, | |||
120 | 120 | ||
121 | HARD_TX_LOCK(dev, txq, smp_processor_id()); | 121 | HARD_TX_LOCK(dev, txq, smp_processor_id()); |
122 | if (!netif_tx_queue_stopped(txq) && | 122 | if (!netif_tx_queue_stopped(txq) && |
123 | !netif_tx_queue_frozen(txq)) | 123 | !netif_tx_queue_frozen(txq)) { |
124 | ret = dev_hard_start_xmit(skb, dev, txq); | 124 | ret = dev_hard_start_xmit(skb, dev, txq); |
125 | |||
126 | /* an error implies that the skb was consumed */ | ||
127 | if (ret < 0) | ||
128 | ret = NETDEV_TX_OK; | ||
129 | /* all NET_XMIT codes map to NETDEV_TX_OK */ | ||
130 | ret &= ~NET_XMIT_MASK; | ||
131 | } | ||
125 | HARD_TX_UNLOCK(dev, txq); | 132 | HARD_TX_UNLOCK(dev, txq); |
126 | 133 | ||
127 | spin_lock(root_lock); | 134 | spin_lock(root_lock); |