Эх сурвалжийг харах

qcacld-3.0: Remove the completed roam command from active queue

If hardware mode change is required during roaming, then
the roam command to disassoc from the current ap remains in the
active queue until SME receives hw_mode_res. Due to which the
SME requests for hardware mode switch and nss update are not
able to get queued into the active queue. Hence LFR2.0 roaming
fails to proceed after disassoc completion.

Removed the completed roam command from active queue.

Change-Id: I5f244ddba88cbb8af3a34e6f78b9b664ca009666
CRs-Fixed: 2576362
Jayachandran Sreekumaran 5 жил өмнө
parent
commit
0eede6b342

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

@@ -10099,12 +10099,6 @@ QDF_STATUS csr_roam_lfr2_issue_connect(struct mac_context *mac,
 				      NULL);
 				      NULL);
 		csr_roam_copy_profile(mac, cur_roam_profile,
 		csr_roam_copy_profile(mac, cur_roam_profile,
 				      session->pCurRoamProfile);
 				      session->pCurRoamProfile);
-		/*
-		 * After ensuring that the roam profile is in the scan
-		 * result list, and session->pCurRoamProfile is saved,
-		 * dequeue the command from the active list.
-		 */
-		csr_dequeue_command(mac);
 		/* make sure to put it at the head of the cmd queue */
 		/* make sure to put it at the head of the cmd queue */
 		status = csr_roam_issue_connect(mac, session_id,
 		status = csr_roam_issue_connect(mac, session_id,
 				cur_roam_profile, hbss_list,
 				cur_roam_profile, hbss_list,
@@ -10176,6 +10170,7 @@ void csr_handle_disassoc_ho(struct mac_context *mac, uint32_t session_id)
 	struct sCsrNeighborRoamBSSInfo *bss_node;
 	struct sCsrNeighborRoamBSSInfo *bss_node;
 	QDF_STATUS status;
 	QDF_STATUS status;
 
 
+	csr_dequeue_command(mac);
 	roam_info = qdf_mem_malloc(sizeof(*roam_info));
 	roam_info = qdf_mem_malloc(sizeof(*roam_info));
 	if (!roam_info)
 	if (!roam_info)
 		return;
 		return;