diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c index 7f8fd07c04..49ac802297 100644 --- a/core/cds/src/cds_api.c +++ b/core/cds/src/cds_api.c @@ -1111,13 +1111,13 @@ QDF_STATUS cds_pre_enable(void) status = wma_pre_start(); if (QDF_IS_STATUS_ERROR(status)) { cds_err("Failed to WMA prestart"); - return QDF_STATUS_E_FAILURE; + goto exit_pkt_log; } status = htc_start(gp_cds_context->htc_ctx); if (QDF_IS_STATUS_ERROR(status)) { cds_err("Failed to Start HTC"); - goto exit_with_status; + goto exit_pkt_log; } status = wma_wait_for_ready_event(gp_cds_context->wma_context); @@ -1154,7 +1154,12 @@ stop_wmi: htc_stop(gp_cds_context->htc_ctx); wma_wmi_work_close(); -exit_with_status: + +exit_pkt_log: + if (QDF_GLOBAL_FTM_MODE != cds_get_conparam() && + QDF_GLOBAL_EPPING_MODE != cds_get_conparam()) + cdp_pkt_log_exit(soc, OL_TXRX_PDEV_ID); + return status; } diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index 3bf507a290..545416cbf4 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -1011,8 +1011,10 @@ void htt_pkt_log_init(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn) ol_txrx_pdev_handle handle = ol_txrx_get_pdev_from_pdev_id(soc, pdev_id); - if (handle->pkt_log_init) + if (handle->pkt_log_init) { + ol_txrx_err("pktlog already initialized"); return; + } if (cds_get_conparam() != QDF_GLOBAL_FTM_MODE && !QDF_IS_EPPING_ENABLED(cds_get_conparam())) { @@ -1023,6 +1025,8 @@ void htt_pkt_log_init(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn) qdf_print(" pktlogmod_init failed"); else handle->pkt_log_init = true; + } else { + ol_txrx_err("Invalid conn mode: %d", cds_get_conparam()); } } @@ -1035,11 +1039,17 @@ void htt_pkt_log_init(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn) */ static void htt_pktlogmod_exit(struct ol_txrx_pdev_t *handle) { + if (!handle->pkt_log_init) { + ol_txrx_err("pktlog is not initialized"); + return; + } + if (cds_get_conparam() != QDF_GLOBAL_FTM_MODE && - !QDF_IS_EPPING_ENABLED(cds_get_conparam()) && - handle->pkt_log_init) { + !QDF_IS_EPPING_ENABLED(cds_get_conparam())) { pktlogmod_exit(handle); handle->pkt_log_init = false; + } else { + ol_txrx_err("Invalid conn mode: %d", cds_get_conparam()); } } @@ -5742,6 +5752,7 @@ static void ol_txrx_soc_detach(struct cdp_soc_t *soc) qdf_mem_free(soc); } +#ifdef REMOVE_PKT_LOG /** * ol_txrx_pkt_log_con_service() - connect packet log service * @soc_hdl: Datapath soc handle @@ -5750,11 +5761,22 @@ static void ol_txrx_soc_detach(struct cdp_soc_t *soc) * * Return: noe */ -#ifdef REMOVE_PKT_LOG static void ol_txrx_pkt_log_con_service(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn) { } + +/** + * ol_txrx_pkt_log_exit() - cleanup packet log info + * @soc_hdl: Datapath soc handle + * @pdev_id: id of data path pdev handle + * + * Return: noe + */ +static void ol_txrx_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) +{ +} + #else static void ol_txrx_pkt_log_con_service(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn) @@ -5762,6 +5784,19 @@ static void ol_txrx_pkt_log_con_service(struct cdp_soc_t *soc_hdl, htt_pkt_log_init(soc_hdl, pdev_id, scn); pktlog_htc_attach(); } + +static void ol_txrx_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) +{ + struct ol_txrx_soc_t *soc = cdp_soc_t_to_ol_txrx_soc_t(soc_hdl); + ol_txrx_pdev_handle pdev = ol_txrx_get_pdev_from_pdev_id(soc, pdev_id); + + if (!pdev) { + ol_txrx_err("pdev handle is NULL"); + return; + } + + htt_pktlogmod_exit(pdev); +} #endif /* OL wrapper functions for CDP abstraction */ @@ -6152,6 +6187,7 @@ static struct cdp_misc_ops ol_ops_misc = { .get_intra_bss_fwd_pkts_count = ol_get_intra_bss_fwd_pkts_count, .pkt_log_init = htt_pkt_log_init, .pkt_log_con_service = ol_txrx_pkt_log_con_service, + .pkt_log_exit = ol_txrx_pkt_log_exit, .register_pktdump_cb = ol_register_packetdump_callback, .unregister_pktdump_cb = ol_deregister_packetdump_callback, #ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK