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

Commit b0e70c2f authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by John W. Linville
Browse files

mwifiex: minor cleanup and a fix in scan semaphore usage



mwifiex_request_scan() takes care of synchronous internal scan
performed by driver during association.
Currently the semaphore acquired for the scan is unnecessarily
released at the end of different paths. Also, failure paths
returning error code other than "-1" are not considered.

We will release it at the end of routine to fix above issues.

Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f162cac8
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -2119,7 +2119,6 @@ struct wireless_dev *mwifiex_add_virtual_intf(struct wiphy *wiphy,
	}

	sema_init(&priv->async_sem, 1);
	priv->scan_pending_on_block = false;

	dev_dbg(adapter->dev, "info: %s: Marvell 802.11 Adapter\n", dev->name);

+0 −5
Original line number Diff line number Diff line
@@ -97,11 +97,6 @@ static void scan_delay_timer_fn(unsigned long data)
			kfree(priv->user_scan_cfg);
			priv->user_scan_cfg = NULL;
		}

		if (priv->scan_pending_on_block) {
			priv->scan_pending_on_block = false;
			up(&priv->async_sem);
		}
		goto done;
	}

+0 −1
Original line number Diff line number Diff line
@@ -482,7 +482,6 @@ struct mwifiex_private {
	u8 nick_name[16];
	u16 current_key_index;
	struct semaphore async_sem;
	u8 scan_pending_on_block;
	u8 report_scan_result;
	struct cfg80211_scan_request *scan_request;
	struct mwifiex_user_scan_cfg *user_scan_cfg;
+1 −9
Original line number Diff line number Diff line
@@ -1762,10 +1762,6 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
		}
		if (priv->report_scan_result)
			priv->report_scan_result = false;
		if (priv->scan_pending_on_block) {
			priv->scan_pending_on_block = false;
			up(&priv->async_sem);
		}

		if (priv->user_scan_cfg) {
			if (priv->scan_request) {
@@ -1914,7 +1910,6 @@ int mwifiex_request_scan(struct mwifiex_private *priv,
			__func__);
		return -1;
	}
	priv->scan_pending_on_block = true;

	priv->adapter->scan_wait_q_woken = false;

@@ -1928,10 +1923,7 @@ int mwifiex_request_scan(struct mwifiex_private *priv,
	if (!ret)
		ret = mwifiex_wait_queue_complete(priv->adapter);

	if (ret == -1) {
		priv->scan_pending_on_block = false;
	up(&priv->async_sem);
	}

	return ret;
}
+0 −4
Original line number Diff line number Diff line
@@ -85,10 +85,6 @@ mwifiex_process_cmdresp_error(struct mwifiex_private *priv,
		spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, flags);
		if (priv->report_scan_result)
			priv->report_scan_result = false;
		if (priv->scan_pending_on_block) {
			priv->scan_pending_on_block = false;
			up(&priv->async_sem);
		}
		break;

	case HostCmd_CMD_MAC_CONTROL: