diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index 2e6233f7b172..fa13b518f17f 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -1589,6 +1589,21 @@ QDF_STATUS wma_process_hal_pwr_dbg_cmd(WMA_HANDLE handle, return status; } +static void wma_discard_fw_event(struct scheduler_msg *msg) +{ + switch (msg->type) { + case WMA_PROCESS_FW_EVENT: + qdf_nbuf_free(((wma_process_fw_event_params *)msg->bodyptr) + ->evt_buf); + break; + } + if (msg->bodyptr) + qdf_mem_free(msg->bodyptr); + msg->bodyptr = NULL; + msg->bodyval = 0; + msg->type = 0; +} + /** * wma_process_fw_event_handler() - common event handler to serialize * event processing through mc_thread @@ -1616,6 +1631,7 @@ static int wma_process_fw_event_mc_thread_ctx(void *ctx, void *ev) cds_msg.type = WMA_PROCESS_FW_EVENT; cds_msg.bodyptr = params_buf; cds_msg.bodyval = 0; + cds_msg.flush_callback = wma_discard_fw_event; if (QDF_STATUS_SUCCESS != scheduler_post_msg(QDF_MODULE_ID_WMA, &cds_msg)) {