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

Commit 5dde1730 authored by Vevek Venkatesan's avatar Vevek Venkatesan
Browse files

qcacmn: add CDP interface support for pkt_log_exit

Add CDP interface API support for pkt_log_exit,
to cleanup pkt_log_init on failure.

Change-Id: Ib50efaed5997d341d3e76c2e1dbe42856df40191
CRs-Fixed: 3012201
parent ccd086c3
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -566,6 +566,27 @@ static inline void cdp_pkt_log_con_service(ol_txrx_soc_handle soc,
	return;
}

/**
 * cdp_pkt_log_exit() - API to cleanup packet log info
 * @soc: data path soc handle
 * @pdev_id: id of data path pdev handle
 *
 * Return: void
 */
static inline void cdp_pkt_log_exit(ol_txrx_soc_handle soc, uint8_t pdev_id)
{
	if (!soc || !soc->ops || !soc->ops->misc_ops) {
		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
			"%s invalid instance", __func__);
		return;
	}

	if (soc->ops->misc_ops->pkt_log_exit)
		return soc->ops->misc_ops->pkt_log_exit(soc, pdev_id);

	return;
}

/**
 * cdp_get_num_rx_contexts() - API to get the number of RX contexts
 * @soc: soc handle
+1 −0
Original line number Diff line number Diff line
@@ -1265,6 +1265,7 @@ struct cdp_misc_ops {
			     void *scn);
	void (*pkt_log_con_service)(struct cdp_soc_t *soc_hdl,
				    uint8_t pdev_id, void *scn);
	void (*pkt_log_exit)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id);
	int (*get_num_rx_contexts)(struct cdp_soc_t *soc_hdl);
	void (*register_pktdump_cb)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
				    ol_txrx_pktdump_cb tx_cb,
+27 −0
Original line number Diff line number Diff line
@@ -543,6 +543,28 @@ static void dp_pktlogmod_exit(struct dp_pdev *pdev)
	pktlogmod_exit(scn);
	pdev->pkt_log_init = false;
}

/**
 * dp_pkt_log_exit() - Wrapper API to cleanup pktlog info
 * @soc_hdl: Datapath soc handle
 * @pdev_id: id of data path pdev handle
 *
 * Return: none
 */
static void dp_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
{
	struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
	struct dp_pdev *pdev =
		dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);

	if (!pdev) {
		dp_err("pdev handle is NULL");
		return;
	}

	dp_pktlogmod_exit(pdev);
}

#else
static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl,
				   uint8_t pdev_id, void *scn)
@@ -550,6 +572,10 @@ static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl,
}

static void dp_pktlogmod_exit(struct dp_pdev *handle) { }

static void dp_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
{
}
#endif
/**
 * dp_get_num_rx_contexts() - get number of RX contexts
@@ -11945,6 +11971,7 @@ static struct cdp_misc_ops dp_ops_misc = {
#endif /* FEATURE_RUNTIME_PM */
	.pkt_log_init = dp_pkt_log_init,
	.pkt_log_con_service = dp_pkt_log_con_service,
	.pkt_log_exit = dp_pkt_log_exit,
	.get_num_rx_contexts = dp_get_num_rx_contexts,
	.get_tx_ack_stats = dp_tx_get_success_ack_stats,
#ifdef WLAN_SUPPORT_DATA_STALL
+11 −2
Original line number Diff line number Diff line
@@ -417,6 +417,7 @@ static int pktlog_attach(struct hif_opaque_softc *scn)
	char *proc_name;
	struct proc_dir_entry *proc_entry;

	qdf_info("attach pktlog resources");
	/* Allocate pktlog dev for later use */
	pl_dev = get_pktlog_handle();

@@ -441,6 +442,7 @@ static int pktlog_attach(struct hif_opaque_softc *scn)
		 */
		pl_dev->pl_funcs->pktlog_init(scn);
	} else {
		qdf_err("pl_dev is NULL");
		return -EINVAL;
	}

@@ -505,6 +507,7 @@ static void pktlog_detach(struct hif_opaque_softc *scn)
	struct ath_pktlog_info *pl_info;
	struct pktlog_dev_t *pl_dev = get_pktlog_handle();

	qdf_info("detach pktlog resources");
	if (!pl_dev) {
		qdf_info("Invalid pktlog context");
		ASSERT(0);
@@ -1038,6 +1041,7 @@ int pktlogmod_init(void *context)
{
	int ret;

	qdf_info("Initialize pkt_log module");
	/* create the proc directory entry */
	g_pktlog_pde = proc_mkdir(PKTLOG_PROC_DIR, NULL);

@@ -1050,8 +1054,10 @@ int pktlogmod_init(void *context)
	ret = pktlog_attach((struct hif_opaque_softc *)context);

	/* If packet log init failed */
	if (ret)
	if (ret) {
		qdf_err("pktlog_attach failed");
		goto attach_fail;
	}

	return ret;

@@ -1064,8 +1070,11 @@ int pktlogmod_init(void *context)

void pktlogmod_exit(void *context)
{
	if (!g_pktlog_pde)
	qdf_info("pkt_log module cleanup");
	if (!g_pktlog_pde) {
		qdf_err("g_pktlog_pde is NULL");
		return;
	}

	pktlog_detach((struct hif_opaque_softc *)context);