diff --git a/core/sme/src/rrm/sme_rrm.c b/core/sme/src/rrm/sme_rrm.c index 805b54d80d..ba3fedfe7f 100644 --- a/core/sme/src/rrm/sme_rrm.c +++ b/core/sme/src/rrm/sme_rrm.c @@ -498,7 +498,8 @@ static QDF_STATUS sme_rrm_send_scan_result(struct mac_context *mac_ctx, filter, &result_handle); qdf_mem_free(filter); - sme_debug("RRM Measurement Done %d", measurementdone); + sme_debug("RRM Measurement Done %d for index:%d", + measurementdone, measurement_index); if (!result_handle) { /* * no scan results @@ -848,7 +849,7 @@ sme_rrm_issue_scan_req(struct mac_context *mac_ctx, uint8_t idx) scan_type = sme_rrm_ctx->measMode[0]; if ((eSIR_ACTIVE_SCAN == scan_type) || - (eSIR_PASSIVE_SCAN == scan_type)) { + (eSIR_PASSIVE_SCAN == scan_type)) { uint32_t max_chan_time; uint64_t current_time; struct scan_start_request *req; @@ -981,25 +982,34 @@ sme_rrm_issue_scan_req(struct mac_context *mac_ctx, uint8_t idx) */ rrm_scan_timer = 0; freq_list = sme_rrm_ctx->channelList.freq_list; + if (!freq_list) { + sme_err("[802.11 RRM]: Global freq list is null"); + sme_reset_ese_bcn_req_in_progress(sme_rrm_ctx); + status = QDF_STATUS_E_FAILURE; + goto send_ind; + } + ch_idx = sme_rrm_ctx->currentIndex; - if ((ch_idx + 1) < sme_rrm_ctx->channelList.numOfChannels) { - sme_rrm_send_scan_result(mac_ctx, idx, 1, - &freq_list[ch_idx], false); - /* Advance the current index. */ - sme_rrm_ctx->currentIndex++; - sme_rrm_issue_scan_req(mac_ctx, idx); -#ifdef FEATURE_WLAN_ESE - sme_rrm_ctx->eseBcnReqInProgress = false; -#endif - return status; - } else { - /* - * Done with the measurement. Clean up all context and - * send a message to PE with measurement done flag set. - */ - sme_rrm_send_scan_result(mac_ctx, idx, 1, - &freq_list[ch_idx], true); - goto free_ch_lst; + for (; ch_idx < sme_rrm_ctx->channelList.numOfChannels; ch_idx++) { + if ((ch_idx + 1) < + sme_rrm_ctx->channelList.numOfChannels) { + sme_rrm_send_scan_result(mac_ctx, idx, 1, + &freq_list[ch_idx], + false); + /* Advance the current index. */ + sme_rrm_ctx->currentIndex++; + } else { + /* + * Done with the measurement. Clean up all + * context and send a message to PE with + * measurement done flag set. + */ + sme_rrm_send_scan_result(mac_ctx, idx, 1, + &freq_list[ch_idx], + true); + sme_reset_ese_bcn_req_in_progress(sme_rrm_ctx); + goto free_ch_lst; + } } }