ath10k: fix sanity check on enabling btcoex via debugfs
authorMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
Tue, 23 Feb 2016 07:28:36 +0000 (12:58 +0530)
committerKalle Valo <kvalo@qca.qualcomm.com>
Thu, 3 Mar 2016 17:27:17 +0000 (19:27 +0200)
First check for the device state before enabling / disabling
btcoex, also return a proper error value. Enabling / disabling
btcoex ideally does a f/w + ath10k_core_restart so the checks
that are applicable for 'simulate_fw_crash' shall be applicable
for this as well

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/debug.c

index a633152..076d29b 100644 (file)
@@ -2114,6 +2114,7 @@ static ssize_t ath10k_write_btcoex(struct file *file,
        struct ath10k *ar = file->private_data;
        char buf[32];
        size_t buf_size;
+       int ret = 0;
        bool val;
 
        buf_size = min(count, (sizeof(buf) - 1));
@@ -2127,6 +2128,12 @@ static ssize_t ath10k_write_btcoex(struct file *file,
 
        mutex_lock(&ar->conf_mutex);
 
+       if (ar->state != ATH10K_STATE_ON &&
+           ar->state != ATH10K_STATE_RESTARTED) {
+               ret = -ENETDOWN;
+               goto exit;
+       }
+
        if (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags) ^ val))
                goto exit;
 
@@ -2135,17 +2142,15 @@ static ssize_t ath10k_write_btcoex(struct file *file,
        else
                clear_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags);
 
-       if (ar->state != ATH10K_STATE_ON)
-               goto exit;
-
        ath10k_info(ar, "restarting firmware due to btcoex change");
 
        queue_work(ar->workqueue, &ar->restart_work);
+       ret = count;
 
 exit:
        mutex_unlock(&ar->conf_mutex);
 
-       return count;
+       return ret;
 }
 
 static ssize_t ath10k_read_btcoex(struct file *file, char __user *ubuf,