summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdhar, Mahesh Kumar <MAHESH@codeaurora.org>2016-07-01 11:23:06 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-09-02 17:22:52 -0700
commit732f698488be8a7bf593dc2bca971f1ed16b01b0 (patch)
treefe29cad85b0baa66e0fb4d11ffd4ee07b9b844a3
parent51dece43e25409811a576534d5a4dcecf5f9fca0 (diff)
qcacld-3.0: Properly handle disconnect request from userspace
qcacld-2.0 to qcacld-3.0 propagation 1) Currently we notify connect event to CFG80211 module even though there is disconnect request from upperlayer being queued in case of disconnect timeout. 2) Cancel ongoing ROC to avoid defer processing of disconnect command until ROC completion. change made to address the same. Change-Id: Ib824c07e25f9f7ced0279faddc3d958d1c92b1eb CRs-Fixed: 884364
-rw-r--r--core/hdd/src/wlan_hdd_assoc.c9
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.c1
2 files changed, 7 insertions, 3 deletions
diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c
index 9c64dd789caa..8a13abef978e 100644
--- a/core/hdd/src/wlan_hdd_assoc.c
+++ b/core/hdd/src/wlan_hdd_assoc.c
@@ -2358,9 +2358,12 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
/* HDD has initiated disconnect, do not send connect result indication
* to kernel as it will be handled by __cfg80211_disconnect.
*/
- if ((eConnectionState_Disconnecting == pHddStaCtx->conn_info.connState)
- && ((eCSR_ROAM_RESULT_ASSOCIATED == roamResult)
- || (eCSR_ROAM_ASSOCIATION_FAILURE == roamStatus))) {
+ if (((eConnectionState_Disconnecting ==
+ pHddStaCtx->conn_info.connState) ||
+ (eConnectionState_NotConnected ==
+ pHddStaCtx->conn_info.connState)) &&
+ ((eCSR_ROAM_RESULT_ASSOCIATED == roamResult) ||
+ (eCSR_ROAM_ASSOCIATION_FAILURE == roamStatus))) {
hddLog(LOG1, FL("Disconnect from HDD in progress"));
hddDisconInProgress = true;
}
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index 1cab00440305..bbbb9e9af44a 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -11715,6 +11715,7 @@ static int __wlan_hdd_cfg80211_disconnect(struct wiphy *wiphy,
hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
eCSR_SCAN_ABORT_DEFAULT);
}
+ wlan_hdd_cleanup_remain_on_channel_ctx(pAdapter);
#ifdef FEATURE_WLAN_TDLS
/* First clean up the tdls peers if any */
for (staIdx = 0; staIdx < pHddCtx->max_num_tdls_sta; staIdx++) {