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: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
f162cac83b
commit
b0e70c2fb6
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
up(&priv->async_sem);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue