Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21de979e authored by Bing Zhao's avatar Bing Zhao Committed by John W. Linville
Browse files

mwifiex: complete last internal scan



We are waiting on first scan command of internal scan request
before association, so we should complete on last internal scan
command response.

Cc: <stable@vger.kernel.org> # 3.8
Tested-by: default avatarDaniel Drake <dsd@laptop.org>
Tested-by: default avatarMarco Cesarano <marco@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 9306a398
Loading
Loading
Loading
Loading
+9 −2
Original line number Original line Diff line number Diff line
@@ -1393,8 +1393,10 @@ int mwifiex_scan_networks(struct mwifiex_private *priv,
			queue_work(adapter->workqueue, &adapter->main_work);
			queue_work(adapter->workqueue, &adapter->main_work);


			/* Perform internal scan synchronously */
			/* Perform internal scan synchronously */
			if (!priv->scan_request)
			if (!priv->scan_request) {
				dev_dbg(adapter->dev, "wait internal scan\n");
				mwifiex_wait_queue_complete(adapter, cmd_node);
				mwifiex_wait_queue_complete(adapter, cmd_node);
			}
		} else {
		} else {
			spin_unlock_irqrestore(&adapter->scan_pending_q_lock,
			spin_unlock_irqrestore(&adapter->scan_pending_q_lock,
					       flags);
					       flags);
@@ -1793,7 +1795,12 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
		/* Need to indicate IOCTL complete */
		/* Need to indicate IOCTL complete */
		if (adapter->curr_cmd->wait_q_enabled) {
		if (adapter->curr_cmd->wait_q_enabled) {
			adapter->cmd_wait_q.status = 0;
			adapter->cmd_wait_q.status = 0;
			mwifiex_complete_cmd(adapter, adapter->curr_cmd);
			if (!priv->scan_request) {
				dev_dbg(adapter->dev,
					"complete internal scan\n");
				mwifiex_complete_cmd(adapter,
						     adapter->curr_cmd);
			}
		}
		}
		if (priv->report_scan_result)
		if (priv->report_scan_result)
			priv->report_scan_result = false;
			priv->report_scan_result = false;