qcacld-3.0: Free active RRM current req on STA roaming

Scan on channels triggered as part of active mode RRM
beacon report request fails on receiving roaming
indication from firmware due to get_session_id_from_bssid
failure. So current req in RRM PE context will not be freed
and as a result all subsequent beacon report requests will
fail.

Fix is to free current req in RRM PE context on scan
req failure due to STA roaming to a different AP.

Change-Id: Ib911ddcc7538bb5f3711647bb83a1978d1a1af73
CRs-Fixed: 2419044
This commit is contained in:
Yeshwanth Sriram Guntuka 2019-03-28 16:08:43 +05:30 committed by nshrivas
parent 31303d9ed0
commit 86c3dcc99a

View File

@ -654,12 +654,26 @@ static QDF_STATUS sme_rrm_scan_request_callback(mac_handle_t mac_handle,
tpRrmSMEContext pSmeRrmContext = &mac->rrm.rrmSmeContext;
uint32_t time_tick;
QDF_STATUS qdf_status;
uint32_t session_id;
bool valid_result = true;
/*
* RRM scan response received after roaming to different AP.
* Post message to PE for rrm cleanup.
*/
qdf_status = csr_roam_get_session_id_from_bssid(mac,
&pSmeRrmContext->sessionBssId,
&session_id);
if (qdf_status == QDF_STATUS_E_FAILURE) {
sme_debug("Cleanup RRM context due to STA roaming");
valid_result = false;
}
/* if any more channels are pending, start a timer of a random value
* within randomization interval.
*/
if ((pSmeRrmContext->currentIndex + 1) <
pSmeRrmContext->channelList.numOfChannels) {
if (((pSmeRrmContext->currentIndex + 1) <
pSmeRrmContext->channelList.numOfChannels) && valid_result) {
sme_rrm_send_scan_result(mac, 1,
&pSmeRrmContext->channelList.
ChannelList[pSmeRrmContext