|
@@ -2011,9 +2011,7 @@ void ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb)
|
|
|
break;
|
|
|
}
|
|
|
case HTT_T2H_MSG_TYPE_RX_IND:
|
|
|
- spin_lock_bh(&htt->rx_ring.lock);
|
|
|
- __skb_queue_tail(&htt->rx_compl_q, skb);
|
|
|
- spin_unlock_bh(&htt->rx_ring.lock);
|
|
|
+ skb_queue_tail(&htt->rx_compl_q, skb);
|
|
|
tasklet_schedule(&htt->txrx_compl_task);
|
|
|
return;
|
|
|
case HTT_T2H_MSG_TYPE_PEER_MAP: {
|
|
@@ -2111,9 +2109,7 @@ void ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb)
|
|
|
break;
|
|
|
}
|
|
|
case HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND: {
|
|
|
- spin_lock_bh(&htt->rx_ring.lock);
|
|
|
- __skb_queue_tail(&htt->rx_in_ord_compl_q, skb);
|
|
|
- spin_unlock_bh(&htt->rx_ring.lock);
|
|
|
+ skb_queue_tail(&htt->rx_in_ord_compl_q, skb);
|
|
|
tasklet_schedule(&htt->txrx_compl_task);
|
|
|
return;
|
|
|
}
|
|
@@ -2170,16 +2166,18 @@ static void ath10k_htt_txrx_compl_task(unsigned long ptr)
|
|
|
dev_kfree_skb_any(skb);
|
|
|
}
|
|
|
|
|
|
- spin_lock_bh(&htt->rx_ring.lock);
|
|
|
- while ((skb = __skb_dequeue(&htt->rx_compl_q))) {
|
|
|
+ while ((skb = skb_dequeue(&htt->rx_compl_q))) {
|
|
|
resp = (struct htt_resp *)skb->data;
|
|
|
+ spin_lock_bh(&htt->rx_ring.lock);
|
|
|
ath10k_htt_rx_handler(htt, &resp->rx_ind);
|
|
|
+ spin_unlock_bh(&htt->rx_ring.lock);
|
|
|
dev_kfree_skb_any(skb);
|
|
|
}
|
|
|
|
|
|
- while ((skb = __skb_dequeue(&htt->rx_in_ord_compl_q))) {
|
|
|
+ while ((skb = skb_dequeue(&htt->rx_in_ord_compl_q))) {
|
|
|
+ spin_lock_bh(&htt->rx_ring.lock);
|
|
|
ath10k_htt_rx_in_ord_ind(ar, skb);
|
|
|
+ spin_unlock_bh(&htt->rx_ring.lock);
|
|
|
dev_kfree_skb_any(skb);
|
|
|
}
|
|
|
- spin_unlock_bh(&htt->rx_ring.lock);
|
|
|
}
|