Jelajahi Sumber

qcacld-3.0: Avoid disconnect timeout in try disconnect

If connection is in progress and new connection req is
received from supplicant, hdd tries to disconnect the
current session and post force disassoc command and wait
for it to get completed. If the current ongoing connect
operation fails and this force disassoc is processed as
sme session is in disconnected state it is silently
dropped and thus there is no event sent to the HDD
to stop the wait for disconnect and HDD wait for 5
sec before returning connect failure.

Fix this by Calling disconnect handler if, disconnect
with force dissoc is called in disconnected state

Change-Id: I3a78308b54fb048fba5a6aed3d8e8b193c371647
CRs-Fixed: 2223313
gaurank kathpalia 7 tahun lalu
induk
melakukan
63311d11a2
2 mengubah file dengan 2 tambahan dan 7 penghapusan
  1. 2 1
      core/hdd/src/wlan_hdd_assoc.c
  2. 0 6
      core/sme/src/csr/csr_api_roam.c

+ 2 - 1
core/hdd/src/wlan_hdd_assoc.c

@@ -1734,7 +1734,8 @@ static QDF_STATUS hdd_dis_connect_handler(struct hdd_adapter *adapter,
 				     WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER,
 				     WLAN_CONTROL_PATH);
 
-	if (ucfg_ipa_is_enabled())
+	if (ucfg_ipa_is_enabled() &&
+	    (sta_ctx->conn_info.staId[0] != HDD_WLAN_INVALID_STA_ID))
 		ucfg_ipa_wlan_evt(hdd_ctx->hdd_pdev, adapter->dev,
 				  adapter->device_mode,
 				  sta_ctx->conn_info.staId[0],

+ 0 - 6
core/sme/src/csr/csr_api_roam.c

@@ -6407,12 +6407,6 @@ QDF_STATUS csr_roam_process_command(tpAniSirGlobal pMac, tSmeCmd *pCommand)
 
 	switch (pCommand->u.roamCmd.roamReason) {
 	case eCsrForcedDisassoc:
-		if (eCSR_ROAMING_STATE_IDLE ==
-		    sme_get_current_roam_state(pMac, sessionId)) {
-			sme_err("Ignore eCsrForcedDisassoc cmd on roam state %d",
-				eCSR_ROAMING_STATE_IDLE);
-			return QDF_STATUS_E_FAILURE;
-		}
 		status = csr_roam_process_disassoc_deauth(pMac, pCommand,
 				true, false);
 		csr_free_roam_profile(pMac, sessionId);