|
@@ -1358,7 +1358,7 @@ static int invoke_tx_handlers(struct ieee80211_tx_data *tx)
|
|
|
if (tx->skb)
|
|
|
ieee80211_free_txskb(&tx->local->hw, tx->skb);
|
|
|
else
|
|
|
- __skb_queue_purge(&tx->skbs);
|
|
|
+ ieee80211_purge_tx_queue(&tx->local->hw, &tx->skbs);
|
|
|
return -1;
|
|
|
} else if (unlikely(res == TX_QUEUED)) {
|
|
|
I802_DEBUG_INC(tx->local->tx_handlers_queued);
|
|
@@ -2120,10 +2120,13 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
|
|
|
*/
|
|
|
void ieee80211_clear_tx_pending(struct ieee80211_local *local)
|
|
|
{
|
|
|
+ struct sk_buff *skb;
|
|
|
int i;
|
|
|
|
|
|
- for (i = 0; i < local->hw.queues; i++)
|
|
|
- skb_queue_purge(&local->pending[i]);
|
|
|
+ for (i = 0; i < local->hw.queues; i++) {
|
|
|
+ while ((skb = skb_dequeue(&local->pending[i])) != NULL)
|
|
|
+ ieee80211_free_txskb(&local->hw, skb);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|