diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/wmi.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/wmi.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath9k/wmi.c b/drivers/net/wireless/ath/ath9k/wmi.c index dc6c6fc2e09..e23172c9caa 100644 --- a/drivers/net/wireless/ath/ath9k/wmi.c +++ b/drivers/net/wireless/ath/ath9k/wmi.c | |||
@@ -276,6 +276,9 @@ int ath9k_wmi_cmd(struct wmi *wmi, enum wmi_cmd_id cmd_id, | |||
276 | int time_left, ret = 0; | 276 | int time_left, ret = 0; |
277 | unsigned long flags; | 277 | unsigned long flags; |
278 | 278 | ||
279 | if (wmi->drv_priv->op_flags & OP_UNPLUGGED) | ||
280 | return 0; | ||
281 | |||
279 | if (!wmi) | 282 | if (!wmi) |
280 | return -EINVAL; | 283 | return -EINVAL; |
281 | 284 | ||
@@ -302,14 +305,14 @@ int ath9k_wmi_cmd(struct wmi *wmi, enum wmi_cmd_id cmd_id, | |||
302 | wmi->cmd_rsp_buf = rsp_buf; | 305 | wmi->cmd_rsp_buf = rsp_buf; |
303 | wmi->cmd_rsp_len = rsp_len; | 306 | wmi->cmd_rsp_len = rsp_len; |
304 | 307 | ||
305 | ret = ath9k_wmi_cmd_issue(wmi, skb, cmd_id, cmd_len); | ||
306 | if (ret) | ||
307 | goto out; | ||
308 | |||
309 | spin_lock_irqsave(&wmi->wmi_lock, flags); | 308 | spin_lock_irqsave(&wmi->wmi_lock, flags); |
310 | wmi->last_cmd_id = cmd_id; | 309 | wmi->last_cmd_id = cmd_id; |
311 | spin_unlock_irqrestore(&wmi->wmi_lock, flags); | 310 | spin_unlock_irqrestore(&wmi->wmi_lock, flags); |
312 | 311 | ||
312 | ret = ath9k_wmi_cmd_issue(wmi, skb, cmd_id, cmd_len); | ||
313 | if (ret) | ||
314 | goto out; | ||
315 | |||
313 | time_left = wait_for_completion_timeout(&wmi->cmd_wait, timeout); | 316 | time_left = wait_for_completion_timeout(&wmi->cmd_wait, timeout); |
314 | if (!time_left) { | 317 | if (!time_left) { |
315 | ath_print(common, ATH_DBG_WMI, | 318 | ath_print(common, ATH_DBG_WMI, |