|
@@ -2156,10 +2156,18 @@ static void ath10k_htt_txrx_compl_task(unsigned long ptr)
|
|
|
{
|
|
|
struct ath10k_htt *htt = (struct ath10k_htt *)ptr;
|
|
|
struct ath10k *ar = htt->ar;
|
|
|
+ struct sk_buff_head tx_q;
|
|
|
struct htt_resp *resp;
|
|
|
struct sk_buff *skb;
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
- while ((skb = skb_dequeue(&htt->tx_compl_q))) {
|
|
|
+ __skb_queue_head_init(&tx_q);
|
|
|
+
|
|
|
+ spin_lock_irqsave(&htt->tx_compl_q.lock, flags);
|
|
|
+ skb_queue_splice_init(&htt->tx_compl_q, &tx_q);
|
|
|
+ spin_unlock_irqrestore(&htt->tx_compl_q.lock, flags);
|
|
|
+
|
|
|
+ while ((skb = __skb_dequeue(&tx_q))) {
|
|
|
ath10k_htt_rx_frm_tx_compl(htt->ar, skb);
|
|
|
dev_kfree_skb_any(skb);
|
|
|
}
|