ath10k: make wmi service bitmap non-debug
authorMichal Kazior <michal.kazior@tieto.com>
Thu, 27 Nov 2014 09:11:17 +0000 (10:11 +0100)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 1 Dec 2014 07:09:28 +0000 (09:09 +0200)
The service bitmap can be used to determine
firmware capabilities.

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/debug.c
drivers/net/wireless/ath/ath10k/debug.h
drivers/net/wireless/ath/ath10k/wmi.c

index 4a294987736c6b4fb91773aaa64a5d6d62b8b249..5af9a24ae143fb420ce8ee5af767619e735d28be 100644 (file)
@@ -123,6 +123,7 @@ struct ath10k_wmi {
        struct completion service_ready;
        struct completion unified_ready;
        wait_queue_head_t tx_credits_wq;
+       DECLARE_BITMAP(svc_map, WMI_SERVICE_MAX);
        struct wmi_cmd_map *cmd;
        struct wmi_vdev_param_map *vdev_param;
        struct wmi_pdev_param_map *pdev_param;
@@ -313,7 +314,6 @@ struct ath10k_debug {
        struct ath10k_fw_stats fw_stats;
        struct completion fw_stats_complete;
        bool fw_stats_done;
-       DECLARE_BITMAP(wmi_service_bitmap, WMI_SERVICE_MAX);
 
        unsigned long htt_stats_mask;
        struct delayed_work htt_stats_dwork;
index c096d00aab97bc2117dcfcf4f7cdeb960b492444..a716758f14b038b4052ebb2aa6a67f3cad56db67 100644 (file)
@@ -179,13 +179,6 @@ EXPORT_SYMBOL(ath10k_warn);
 
 #ifdef CONFIG_ATH10K_DEBUGFS
 
-void ath10k_debug_read_service_map(struct ath10k *ar,
-                                  const void *service_map,
-                                  size_t map_size)
-{
-       memcpy(ar->debug.wmi_service_bitmap, service_map, map_size);
-}
-
 static ssize_t ath10k_read_wmi_services(struct file *file,
                                        char __user *user_buf,
                                        size_t count, loff_t *ppos)
@@ -207,8 +200,9 @@ static ssize_t ath10k_read_wmi_services(struct file *file,
        if (len > buf_len)
                len = buf_len;
 
+       spin_lock_bh(&ar->data_lock);
        for (i = 0; i < WMI_SERVICE_MAX; i++) {
-               enabled = test_bit(i, ar->debug.wmi_service_bitmap);
+               enabled = test_bit(i, ar->wmi.svc_map);
                name = wmi_service_name(i);
 
                if (!name) {
@@ -224,6 +218,7 @@ static ssize_t ath10k_read_wmi_services(struct file *file,
                                 "%-40s %s\n",
                                 name, enabled ? "enabled" : "-");
        }
+       spin_unlock_bh(&ar->data_lock);
 
        ret_cnt = simple_read_from_buffer(user_buf, count, ppos, buf, len);
 
index 815d325ab9305a49a1e45059cb6096389d8ad0be..1b87a5dbec53c3bd8875774ca8806525d3476efd 100644 (file)
@@ -62,9 +62,6 @@ int ath10k_debug_create(struct ath10k *ar);
 void ath10k_debug_destroy(struct ath10k *ar);
 int ath10k_debug_register(struct ath10k *ar);
 void ath10k_debug_unregister(struct ath10k *ar);
-void ath10k_debug_read_service_map(struct ath10k *ar,
-                                  const void *service_map,
-                                  size_t map_size);
 void ath10k_debug_fw_stats_process(struct ath10k *ar, struct sk_buff *skb);
 struct ath10k_fw_crash_data *
 ath10k_debug_get_new_fw_crash_data(struct ath10k *ar);
@@ -109,12 +106,6 @@ static inline void ath10k_debug_unregister(struct ath10k *ar)
 {
 }
 
-static inline void ath10k_debug_read_service_map(struct ath10k *ar,
-                                                const void *service_map,
-                                                size_t map_size)
-{
-}
-
 static inline void ath10k_debug_fw_stats_process(struct ath10k *ar,
                                                 struct sk_buff *skb)
 {
index 81ccc2eda47e7cb80c4cb06fb256fb7c2bd4ae43..c0f3e4d09263e38a39b5e471faba6fc0d321a7e0 100644 (file)
@@ -2511,16 +2511,17 @@ static void ath10k_wmi_event_service_ready(struct ath10k *ar,
 {
        struct wmi_svc_rdy_ev_arg arg = {};
        u32 num_units, req_id, unit_size, num_mem_reqs, num_unit_info, i;
-       DECLARE_BITMAP(svc_bmap, WMI_SERVICE_MAX) = {};
        int ret;
 
+       memset(&ar->wmi.svc_map, 0, sizeof(ar->wmi.svc_map));
+
        if (test_bit(ATH10K_FW_FEATURE_WMI_10X, ar->fw_features)) {
                ret = ath10k_wmi_10x_pull_svc_rdy_ev(skb, &arg);
-               wmi_10x_svc_map(arg.service_map, svc_bmap,
+               wmi_10x_svc_map(arg.service_map, ar->wmi.svc_map,
                                arg.service_map_len);
        } else {
                ret = ath10k_wmi_main_pull_svc_rdy_ev(skb, &arg);
-               wmi_main_svc_map(arg.service_map, svc_bmap,
+               wmi_main_svc_map(arg.service_map, ar->wmi.svc_map,
                                 arg.service_map_len);
        }
 
@@ -2543,7 +2544,6 @@ static void ath10k_wmi_event_service_ready(struct ath10k *ar,
        ar->num_rf_chains = __le32_to_cpu(arg.num_rf_chains);
        ar->ath_common.regulatory.current_rd = __le32_to_cpu(arg.eeprom_rd);
 
-       ath10k_debug_read_service_map(ar, svc_bmap, sizeof(svc_bmap));
        ath10k_dbg_dump(ar, ATH10K_DBG_WMI, NULL, "wmi svc: ",
                        arg.service_map, arg.service_map_len);