summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhinav Kumar <abhikuma@codeaurora.org>2019-12-19 12:36:11 +0530
committerKumar Anand <kumaranand@google.com>2020-03-26 17:49:56 +0000
commit38461bb953e9e23f155cc186c91f84ff8c23bd3c (patch)
tree89dba8b5f9e438139e8a367d536d52707f19c6e8
parent82dfcfd69927ebec8b37ed686f5e35c439732742 (diff)
downloadqcacld-android-msm-crosshatch-4.9-r-preview-4.tar.gz
Below are the scenarios where host fails to clear roam in progress flag: Case 1: While processing disconnection request Host should clear roam in progress flag irrespective of connection state of STA. Case 2: While processing a try-disconnect request Currently, Host waits for WLAN_WAIT_TIME_STOP_ROAM (4 sec) to process disconnection, if firmware has already started roaming. In case if Host doesn't receive roam completion indication from fw, Host set connection state to not connected and fails to clear roaming in progress flag. This results host refuses all further connection request with reason connection in progress. Fix is to clear roaming_in_progress flag in both cases. Bug: 147821957 Bug: 150184372 Change-Id: I45d9771bcd546d8914321e3be1a6d0ce6566cdac CRs-Fixed: 2588803
-rw-r--r--core/hdd/src/wlan_hdd_assoc.c8
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.c4
2 files changed, 9 insertions, 3 deletions
diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c
index fb61f1cb8d..792f1f1d3b 100644
--- a/core/hdd/src/wlan_hdd_assoc.c
+++ b/core/hdd/src/wlan_hdd_assoc.c
@@ -1824,11 +1824,13 @@ static QDF_STATUS hdd_dis_connect_handler(hdd_adapter_t *pAdapter,
* eConnectionState_Connecting state mean that connection is in
* progress so no need to set state to eConnectionState_NotConnected
*/
- if ((eConnectionState_Connecting !=
- pHddStaCtx->conn_info.connState)) {
+ if (eConnectionState_Connecting != pHddStaCtx->conn_info.connState)
hdd_conn_set_connection_state(pAdapter,
eConnectionState_NotConnected);
- }
+
+ /* Clear roaming in progress flag */
+ hdd_set_roaming_in_progress(false);
+
#ifdef WLAN_FEATURE_GTK_OFFLOAD
if ((QDF_STA_MODE == pAdapter->device_mode) ||
(QDF_P2P_CLIENT_MODE == pAdapter->device_mode)) {
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index 94ae94fcb2..e91c90153f 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -18249,6 +18249,8 @@ int wlan_hdd_try_disconnect(hdd_adapter_t *pAdapter)
if (!rc) {
hdd_err("roaming comp var timed out session Id: %d",
pAdapter->sessionId);
+ /* Clear roaming in progress flag */
+ hdd_set_roaming_in_progress(false);
}
if (pAdapter->roam_ho_fail) {
INIT_COMPLETION(pAdapter->disconnect_comp_var);
@@ -18606,6 +18608,8 @@ int wlan_hdd_disconnect(hdd_adapter_t *pAdapter, u16 reason)
if (!rc) {
hdd_err("roaming comp var timed out session Id: %d",
pAdapter->sessionId);
+ /* Clear roaming in progress flag */
+ hdd_set_roaming_in_progress(false);
}
if (pAdapter->roam_ho_fail) {
INIT_COMPLETION(pAdapter->disconnect_comp_var);