Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94821eb4 authored by Vevek Venkatesan's avatar Vevek Venkatesan Committed by Madan Koyyalamudi
Browse files

qcacld-3.0: call CDP API for pkt_log_exit from CDS layer

Once pkt_log_con_service success in cds_pre_enable,
in case of any further failure, pkt_log_exit cleanup is
not done, so calling CDP interface API for pkt_log_exit.

Change-Id: Ibddc99fb47109a73de095f068694b2548849f14d
CRs-Fixed: 2978390
parent 2dec6938
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -1038,13 +1038,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);
@@ -1083,7 +1083,12 @@ QDF_STATUS cds_pre_enable(void)
	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;
}

+40 −4
Original line number Diff line number Diff line
@@ -1013,8 +1013,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())) {
@@ -1025,6 +1027,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());
	}
}

@@ -1037,11 +1041,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());
	}
}

@@ -5753,6 +5763,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
@@ -5761,11 +5772,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)
@@ -5773,6 +5795,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 */
@@ -6160,6 +6195,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