ath10k: remove wmi event worker thread
authorMichal Kazior <michal.kazior@tieto.com>
Fri, 13 Sep 2013 12:16:58 +0000 (14:16 +0200)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 16 Sep 2013 16:47:46 +0000 (19:47 +0300)
It's not really necessary to have this processed
in a worker. There are no sleepable calls (and
actually shouldn't be).

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/core.h
drivers/net/wireless/ath/ath10k/wmi.c

index c2b6a766dabd2bea30d9ef5bba5ee9a7445caa4b..fcf94ee8fb62fc6c6b8df11c39081e3eed985657 100644 (file)
@@ -113,9 +113,6 @@ struct ath10k_wmi {
        struct completion service_ready;
        struct completion unified_ready;
        wait_queue_head_t tx_credits_wq;
-
-       struct sk_buff_head wmi_event_list;
-       struct work_struct wmi_event_work;
 };
 
 struct ath10k_peer_stat {
index b29d2b954c0e2856855016db4985b77013c2adec..6803ead9b9cfd0c6f0be623e025e11f869394a4b 100644 (file)
@@ -1055,7 +1055,7 @@ static int ath10k_wmi_ready_event_rx(struct ath10k *ar, struct sk_buff *skb)
        return 0;
 }
 
-static void ath10k_wmi_event_process(struct ath10k *ar, struct sk_buff *skb)
+static void ath10k_wmi_process_rx(struct ath10k *ar, struct sk_buff *skb)
 {
        struct wmi_cmd_hdr *cmd_hdr;
        enum wmi_event_id id;
@@ -1174,43 +1174,6 @@ static void ath10k_wmi_event_process(struct ath10k *ar, struct sk_buff *skb)
        dev_kfree_skb(skb);
 }
 
-static void ath10k_wmi_event_work(struct work_struct *work)
-{
-       struct ath10k *ar = container_of(work, struct ath10k,
-                                        wmi.wmi_event_work);
-       struct sk_buff *skb;
-
-       for (;;) {
-               skb = skb_dequeue(&ar->wmi.wmi_event_list);
-               if (!skb)
-                       break;
-
-               ath10k_wmi_event_process(ar, skb);
-       }
-}
-
-static void ath10k_wmi_process_rx(struct ath10k *ar, struct sk_buff *skb)
-{
-       struct wmi_cmd_hdr *cmd_hdr = (struct wmi_cmd_hdr *)skb->data;
-       enum wmi_event_id event_id;
-
-       event_id = MS(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID);
-
-       /* some events require to be handled ASAP
-        * thus can't be defered to a worker thread */
-       switch (event_id) {
-       case WMI_MGMT_RX_EVENTID:
-       case WMI_HOST_SWBA_EVENTID:
-               ath10k_wmi_event_process(ar, skb);
-               return;
-       default:
-               break;
-       }
-
-       skb_queue_tail(&ar->wmi.wmi_event_list, skb);
-       queue_work(ar->workqueue, &ar->wmi.wmi_event_work);
-}
-
 /* WMI Initialization functions */
 int ath10k_wmi_attach(struct ath10k *ar)
 {
@@ -1218,16 +1181,11 @@ int ath10k_wmi_attach(struct ath10k *ar)
        init_completion(&ar->wmi.unified_ready);
        init_waitqueue_head(&ar->wmi.tx_credits_wq);
 
-       skb_queue_head_init(&ar->wmi.wmi_event_list);
-       INIT_WORK(&ar->wmi.wmi_event_work, ath10k_wmi_event_work);
-
        return 0;
 }
 
 void ath10k_wmi_detach(struct ath10k *ar)
 {
-       cancel_work_sync(&ar->wmi.wmi_event_work);
-       skb_queue_purge(&ar->wmi.wmi_event_list);
 }
 
 int ath10k_wmi_connect_htc_service(struct ath10k *ar)