diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/cmdevt.c')
| -rw-r--r-- | drivers/net/wireless/mwifiex/cmdevt.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c index 8d465107f52..ae9010ed58d 100644 --- a/drivers/net/wireless/mwifiex/cmdevt.c +++ b/drivers/net/wireless/mwifiex/cmdevt.c @@ -890,9 +890,6 @@ mwifiex_cmd_timeout_func(unsigned long function_context)  		return;  	}  	cmd_node = adapter->curr_cmd; -	if (cmd_node->wait_q_enabled) -		adapter->cmd_wait_q.status = -ETIMEDOUT; -  	if (cmd_node) {  		adapter->dbg.timeout_cmd_id =  			adapter->dbg.last_cmd_id[adapter->dbg.last_cmd_index]; @@ -938,6 +935,14 @@ mwifiex_cmd_timeout_func(unsigned long function_context)  		dev_err(adapter->dev, "ps_mode=%d ps_state=%d\n",  			adapter->ps_mode, adapter->ps_state); + +		if (cmd_node->wait_q_enabled) { +			adapter->cmd_wait_q.status = -ETIMEDOUT; +			wake_up_interruptible(&adapter->cmd_wait_q.wait); +			mwifiex_cancel_pending_ioctl(adapter); +			/* reset cmd_sent flag to unblock new commands */ +			adapter->cmd_sent = false; +		}  	}  	if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING)  		mwifiex_init_fw_complete(adapter);  |