|
@@ -1098,7 +1098,7 @@ end:
|
|
|
|
|
|
if (beacon_xmit_ind->fMeasureDone) {
|
|
|
pe_debug("Measurement done.");
|
|
|
- rrm_cleanup(mac_ctx);
|
|
|
+ rrm_cleanup(mac_ctx, beacon_xmit_ind->measurement_idx);
|
|
|
}
|
|
|
|
|
|
if (report)
|
|
@@ -1203,7 +1203,7 @@ QDF_STATUS rrm_process_beacon_req(struct mac_context *mac_ctx, tSirMacAddr peer,
|
|
|
curr_req = mac_ctx->rrm.rrmPEContext.pCurrentReq[index];
|
|
|
if (curr_req) {
|
|
|
qdf_mem_free(curr_req);
|
|
|
- curr_req = NULL;
|
|
|
+ mac_ctx->rrm.rrmPEContext.pCurrentReq[index] = NULL;
|
|
|
}
|
|
|
|
|
|
curr_req = qdf_mem_malloc(sizeof(*curr_req));
|
|
@@ -1224,7 +1224,7 @@ QDF_STATUS rrm_process_beacon_req(struct mac_context *mac_ctx, tSirMacAddr peer,
|
|
|
if (eRRM_SUCCESS != rrm_status) {
|
|
|
rrm_process_beacon_request_failure(mac_ctx,
|
|
|
session_entry, peer, rrm_status, index);
|
|
|
- rrm_cleanup(mac_ctx);
|
|
|
+ rrm_cleanup(mac_ctx, index);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1423,9 +1423,11 @@ tpRRMCaps rrm_get_capabilities(struct mac_context *mac, struct pe_session *pe_se
|
|
|
QDF_STATUS rrm_initialize(struct mac_context *mac)
|
|
|
{
|
|
|
tpRRMCaps pRRMCaps = &mac->rrm.rrmPEContext.rrmEnabledCaps;
|
|
|
+ uint8_t i;
|
|
|
+
|
|
|
+ for (i = 0; i < MAX_MEASUREMENT_REQUEST; i++)
|
|
|
+ mac->rrm.rrmPEContext.pCurrentReq[i] = NULL;
|
|
|
|
|
|
- mac->rrm.rrmPEContext.pCurrentReq[0] = NULL;
|
|
|
- mac->rrm.rrmPEContext.pCurrentReq[1] = NULL;
|
|
|
mac->rrm.rrmPEContext.txMgmtPower = 0;
|
|
|
mac->rrm.rrmPEContext.DialogToken = 0;
|
|
|
|
|
@@ -1448,42 +1450,20 @@ QDF_STATUS rrm_initialize(struct mac_context *mac)
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
-/* -------------------------------------------------------------------- */
|
|
|
-/**
|
|
|
- * rrm_cleanup
|
|
|
- *
|
|
|
- * FUNCTION:
|
|
|
- * cleanup RRM module
|
|
|
- *
|
|
|
- * LOGIC:
|
|
|
- *
|
|
|
- * ASSUMPTIONS:
|
|
|
- *
|
|
|
- * NOTE:
|
|
|
- *
|
|
|
- * @param mode
|
|
|
- * @param rate
|
|
|
- * @return None
|
|
|
- */
|
|
|
-
|
|
|
-QDF_STATUS rrm_cleanup(struct mac_context *mac)
|
|
|
+void rrm_cleanup(struct mac_context *mac, uint8_t idx)
|
|
|
{
|
|
|
- uint8_t i;
|
|
|
+ tpRRMReq cur_rrm_req = NULL;
|
|
|
|
|
|
- for (i = 0; i < MAX_MEASUREMENT_REQUEST; i++) {
|
|
|
- if (mac->rrm.rrmPEContext.pCurrentReq[i]) {
|
|
|
- if (mac->rrm.rrmPEContext.pCurrentReq[i]->request.
|
|
|
- Beacon.reqIes.pElementIds)
|
|
|
- qdf_mem_free(mac->rrm.rrmPEContext.
|
|
|
- pCurrentReq[i]->request.Beacon.
|
|
|
- reqIes.pElementIds);
|
|
|
+ cur_rrm_req = mac->rrm.rrmPEContext.pCurrentReq[idx];
|
|
|
+ if (!cur_rrm_req)
|
|
|
+ return;
|
|
|
|
|
|
- qdf_mem_free(mac->rrm.rrmPEContext.pCurrentReq[i]);
|
|
|
- }
|
|
|
- mac->rrm.rrmPEContext.pCurrentReq[i] = NULL;
|
|
|
- }
|
|
|
+ qdf_mem_free(cur_rrm_req->request.Beacon.reqIes.pElementIds);
|
|
|
+ cur_rrm_req->request.Beacon.reqIes.pElementIds = NULL;
|
|
|
+ cur_rrm_req->request.Beacon.reqIes.num = 0;
|
|
|
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
+ qdf_mem_free(cur_rrm_req);
|
|
|
+ mac->rrm.rrmPEContext.pCurrentReq[idx] = NULL;
|
|
|
}
|
|
|
|
|
|
/**
|