qcacld-3.0: Set roam invoke in progress to false on HO failure

When roam invoke fails during handoff, firmware sends HO failure
indication to host. Here the roam_invoke_in_progress flag is not
cleared.

Clear the roam_invoke_in_progress flag when fastreassoc fails
due to handoff failure at firmware.

Change-Id: Ifc0ade939980138f64013299a9ea4e97468ce00f
CRs-Fixed: 2715281
This commit is contained in:
Pragaspathi Thilagaraj 2020-06-19 11:45:38 +05:30 • committed by nshrivas
commit bbe3ab0934
2 changed files with 27 additions and 8 deletions

View file

@ -1006,6 +1006,15 @@ csr_rso_save_ap_to_scan_cache(struct mac_context *mac,
struct roam_offload_synch_ind *roam_synch_ind,
struct bss_description *bss_desc_ptr);
/**
* csr_process_ho_fail_ind - This function will process the Hand Off Failure
* indication received from the firmware. It will trigger a disconnect on
* the session which the firmware reported a hand off failure.
* @mac: Pointer to global Mac
* @msg_buf: Pointer to wma Ho fail indication message
*
* Return: None
*/
void csr_process_ho_fail_ind(struct mac_context *mac, void *msg_buf);
#endif
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR

View file

@ -19867,17 +19867,11 @@ void csr_roaming_report_diag_event(struct mac_context *mac_ctx,
#endif
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
/*
* fn csr_process_ho_fail_ind
* brief This function will process the Hand Off Failure indication
* received from the firmware. It will trigger a disconnect on
* the session which the firmware reported a hand off failure
* param mac global structure
* param msg_buf - Contains the session ID for which the handler should apply
*/
void csr_process_ho_fail_ind(struct mac_context *mac_ctx, void *msg_buf)
{
struct handoff_failure_ind *pSmeHOFailInd = msg_buf;
struct mlme_roam_after_data_stall *vdev_roam_params;
struct wlan_objmgr_vdev *vdev;
uint32_t sessionId;
if (!pSmeHOFailInd) {
@ -19893,6 +19887,22 @@ void csr_process_ho_fail_ind(struct mac_context *mac_ctx, void *msg_buf)
sessionId);
return;
}
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc, sessionId,
WLAN_LEGACY_SME_ID);
if (!vdev) {
sme_err("LFR3: vdev is NULL");
return;
}
vdev_roam_params = mlme_get_roam_invoke_params(vdev);
if (vdev_roam_params)
vdev_roam_params->roam_invoke_in_progress = false;
else
sme_err("LFR3: Vdev roam params is NULL");
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
mac_ctx->sme.set_connection_info_cb(false);
csr_roam_roaming_offload_timer_action(mac_ctx, 0, sessionId,
ROAMING_OFFLOAD_TIMER_STOP);