diff options
Diffstat (limited to 'net/ieee80211/ieee80211_tx.c')
-rw-r--r-- | net/ieee80211/ieee80211_tx.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/net/ieee80211/ieee80211_tx.c b/net/ieee80211/ieee80211_tx.c index 23a1f88de7cb..e9efdd42ba37 100644 --- a/net/ieee80211/ieee80211_tx.c +++ b/net/ieee80211/ieee80211_tx.c | |||
@@ -236,8 +236,12 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev) | |||
236 | }; | 236 | }; |
237 | u8 dest[ETH_ALEN], src[ETH_ALEN]; | 237 | u8 dest[ETH_ALEN], src[ETH_ALEN]; |
238 | struct ieee80211_crypt_data *crypt; | 238 | struct ieee80211_crypt_data *crypt; |
239 | int priority = skb->priority; | ||
239 | int snapped = 0; | 240 | int snapped = 0; |
240 | 241 | ||
242 | if (ieee->is_queue_full && (*ieee->is_queue_full) (dev, priority)) | ||
243 | return NETDEV_TX_BUSY; | ||
244 | |||
241 | spin_lock_irqsave(&ieee->lock, flags); | 245 | spin_lock_irqsave(&ieee->lock, flags); |
242 | 246 | ||
243 | /* If there is no driver handler to take the TXB, dont' bother | 247 | /* If there is no driver handler to take the TXB, dont' bother |
@@ -467,6 +471,14 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev) | |||
467 | stats->tx_bytes += txb->payload_size; | 471 | stats->tx_bytes += txb->payload_size; |
468 | return 0; | 472 | return 0; |
469 | } | 473 | } |
474 | |||
475 | if (ret == NETDEV_TX_BUSY) { | ||
476 | printk(KERN_ERR "%s: NETDEV_TX_BUSY returned; " | ||
477 | "driver should report queue full via " | ||
478 | "ieee_device->is_queue_full.\n", | ||
479 | ieee->dev->name); | ||
480 | } | ||
481 | |||
470 | ieee80211_txb_free(txb); | 482 | ieee80211_txb_free(txb); |
471 | } | 483 | } |
472 | 484 | ||