瀏覽代碼

qcacld-3.0: Reset is_disconn_stats_completed before error handling

As is_disconn_stats_completed is not reset in start of get stats
process if get stats fails the failure handling is blocked
as is_disconn_stats_completed can be 1 from previous disconnect
and incrementing it again make it 2. Thus the peer disconnect
is not processed leading to active command timeout.

So reset is_disconn_stats_completed before error handlings.

Change-Id: I4c7a23a698f063a002ee0a193180dcacd8dea8de
CRs-Fixed: 3258387
Abhishek Singh 2 年之前
父節點
當前提交
a0a4c47564
共有 1 個文件被更改,包括 4 次插入4 次删除
  1. 4 4
      core/sme/src/csr/csr_api_roam.c

+ 4 - 4
core/sme/src/csr/csr_api_roam.c

@@ -2549,9 +2549,12 @@ static void csr_get_peer_stats(struct mac_context *mac, uint32_t session_id,
 	mlme_obj = mlme_get_psoc_ext_obj(mac->psoc);
 	if (!mlme_obj) {
 		sme_err("NULL mlme psoc object");
-		csr_continue_peer_disconnect_after_get_stats(mac);
 		return;
 	}
+	/* Reset is_disconn_stats_completed before error handing. */
+	qdf_atomic_set(
+		&mlme_obj->disconnect_stats_param.is_disconn_stats_completed,
+		0);
 
 	vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac->psoc, session_id,
 						    WLAN_LEGACY_SME_ID);
@@ -2577,9 +2580,6 @@ static void csr_get_peer_stats(struct mac_context *mac, uint32_t session_id,
 		return;
 	}
 
-	qdf_atomic_set(
-		&mlme_obj->disconnect_stats_param.is_disconn_stats_completed,
-		0);
 	qdf_mc_timer_start(
 		&mlme_obj->disconnect_stats_param.disconn_stats_timer,
 		SME_CMD_GET_DISCONNECT_STATS_TIMEOUT);