ath10k: copy tx fetch indication message
authorRajkumar Manoharan <rmanohar@qti.qualcomm.com>
Tue, 22 Mar 2016 11:52:12 +0000 (17:22 +0530)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 4 Apr 2016 14:03:19 +0000 (17:03 +0300)
To optmize CPU usage htt rx descriptors will be reused instead of
refilling it for htt rx copy engine (CE5). To support that all htt rx
indications should be proecssed at same context. Instead of queueing
actual indication message, queue copied message for txrx processing.

Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/htt_rx.c

index ea73a233ecd70c255dec71176ad7b4624b1ab5e9..552e8d1a33715778f7368b20c4ee7bc7f352da1d 100644 (file)
@@ -2449,10 +2449,17 @@ void ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb)
        }
        case HTT_T2H_MSG_TYPE_AGGR_CONF:
                break;
-       case HTT_T2H_MSG_TYPE_TX_FETCH_IND:
-               skb_queue_tail(&htt->tx_fetch_ind_q, skb);
+       case HTT_T2H_MSG_TYPE_TX_FETCH_IND: {
+               struct sk_buff *tx_fetch_ind = skb_copy(skb, GFP_ATOMIC);
+
+               if (!tx_fetch_ind) {
+                       ath10k_warn(ar, "failed to copy htt tx fetch ind\n");
+                       break;
+               }
+               skb_queue_tail(&htt->tx_fetch_ind_q, tx_fetch_ind);
                tasklet_schedule(&htt->txrx_compl_task);
-               return;
+               break;
+       }
        case HTT_T2H_MSG_TYPE_TX_FETCH_CONFIRM:
                ath10k_htt_rx_tx_fetch_confirm(ar, skb);
                break;