Browse Source

qcacld-3.0: Enable pktlog for Helium

Add Support to enable pktlog through INI
for helium based devices.

Change-Id: I0acfcf1db8c007c5e2ce81fcb1775fd1b7a50570
CRs-Fixed: 2185210
Venkata Sharath Chandra Manchala 7 years ago
parent
commit
2996517bbc

+ 0 - 1
core/cds/src/cds_api.c

@@ -1806,7 +1806,6 @@ bool cds_is_packet_log_enabled(void)
 			  "%s: Hdd Context is Null", __func__);
 		return false;
 	}
-
 	return hdd_ctx->config->enablePacketLog;
 }
 

+ 6 - 3
core/dp/txrx/ol_rx.c

@@ -158,7 +158,8 @@ void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
 	else
 		data.mac_id = 0;
 
-	wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, pdev, &data);
+	wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, (struct cdp_pdev *)pdev,
+			  &data);
 }
 #else
 void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
@@ -180,7 +181,8 @@ void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
 	else
 		data.mac_id = 0;
 
-	wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, pdev, &data);
+	wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, (struct cdp_pdev *)pdev,
+			  &data);
 }
 #endif
 
@@ -301,7 +303,8 @@ static void ol_rx_process_inv_peer(ol_txrx_pdev_handle pdev,
 	msg.msdu = msdu;
 	msg.vdev_id = vdev->vdev_id;
 #ifdef WDI_EVENT_ENABLE
-	wdi_event_handler(WDI_EVENT_RX_PEER_INVALID, pdev, &msg);
+	wdi_event_handler(WDI_EVENT_RX_PEER_INVALID, (struct cdp_pdev *)pdev,
+			  &msg);
 #endif
 }
 

+ 15 - 10
core/dp/txrx/ol_txrx.c

@@ -1375,6 +1375,7 @@ void htt_pkt_log_init(struct cdp_pdev *ppdev, void *scn)
 	if (cds_get_conparam() != QDF_GLOBAL_FTM_MODE &&
 			!QDF_IS_EPPING_ENABLED(cds_get_conparam())) {
 		pktlog_sethandle(&handle->pl_dev, scn);
+		pktlog_set_callback_regtype(PKTLOG_DEFAULT_CALLBACK_REGISTRATION);
 		if (pktlogmod_init(scn))
 			qdf_print("%s: pktlogmod_init failed", __func__);
 		else
@@ -5785,6 +5786,18 @@ ol_txrx_wrapper_set_flow_control_parameters(struct cdp_cfg *cfg_pdev,
 		(struct txrx_pdev_cfg_param_t *)cfg_param);
 }
 
+#ifdef WDI_EVENT_ENABLE
+void *ol_get_pldev(struct cdp_pdev *txrx_pdev)
+{
+	struct ol_txrx_pdev_t *pdev =
+				 (struct ol_txrx_pdev_t *)txrx_pdev;
+	if (pdev != NULL)
+		return pdev->pl_dev;
+
+	return NULL;
+}
+#endif
+
 static struct cdp_cmn_ops ol_ops_cmn = {
 	.txrx_soc_attach_target = ol_txrx_soc_attach_target,
 	.txrx_vdev_attach = ol_txrx_vdev_attach,
@@ -5911,16 +5924,6 @@ static struct cdp_mob_stats_ops ol_ops_mob_stats = {
 	.stats = ol_txrx_stats
 };
 
-static void *ol_get_pldev(struct cdp_pdev *txrx_pdev)
-{
-	struct ol_txrx_pdev_t *handle = (struct ol_txrx_pdev_t *)txrx_pdev;
-
-	if (handle != NULL)
-		return handle->pl_dev;
-
-	return NULL;
-}
-
 static struct cdp_cfg_ops ol_ops_cfg = {
 	.set_cfg_rx_fwd_disabled = ol_set_cfg_rx_fwd_disabled,
 	.set_cfg_packet_log_enabled = ol_set_cfg_packet_log_enabled,
@@ -5982,6 +5985,8 @@ static struct cdp_pmf_ops ol_ops_pmf = {
 
 static struct cdp_ctrl_ops ol_ops_ctrl = {
 	.txrx_get_pldev = ol_get_pldev,
+	.txrx_wdi_event_sub = wdi_event_sub,
+	.txrx_wdi_event_unsub = wdi_event_unsub,
 };
 
 /* WINplatform specific structures */

+ 9 - 1
core/dp/txrx/ol_txrx.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -92,6 +92,14 @@ ol_txrx_hl_tdls_flag_reset(struct cdp_vdev *vdev, bool flag)
 }
 #endif
 
+#ifdef WDI_EVENT_ENABLE
+void *ol_get_pldev(struct cdp_pdev *txrx_pdev);
+#else
+void *ol_get_pldev(struct cdp_pdev *txrx_pdev)
+{
+	return NULL;
+}
+#endif
 /*
  * @nbuf: buffer which contains data to be displayed
  * @nbuf_paddr: physical address of the buffer

+ 20 - 6
core/dp/txrx/ol_txrx_event.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -77,10 +77,13 @@ wdi_event_iter_sub(struct ol_txrx_pdev_t *pdev,
 
 void
 wdi_event_handler(enum WDI_EVENT event,
-		  struct ol_txrx_pdev_t *txrx_pdev, void *data)
+		  struct cdp_pdev *ppdev, void *data)
 {
 	uint32_t event_index;
 	wdi_event_subscribe *wdi_sub;
+	struct ol_txrx_pdev_t *txrx_pdev =
+				(struct ol_txrx_pdev_t *)ppdev;
+
 	/*
 	 * Input validation
 	 */
@@ -107,11 +110,16 @@ wdi_event_handler(enum WDI_EVENT event,
 }
 
 A_STATUS
-wdi_event_sub(struct ol_txrx_pdev_t *txrx_pdev,
-	      wdi_event_subscribe *event_cb_sub, enum WDI_EVENT event)
+wdi_event_sub(struct cdp_pdev *ppdev,
+	      void *pevent_cb_sub, uint32_t event)
 {
 	uint32_t event_index;
 	wdi_event_subscribe *wdi_sub;
+	struct ol_txrx_pdev_t *txrx_pdev =
+				(struct ol_txrx_pdev_t *)ppdev;
+	wdi_event_subscribe *event_cb_sub =
+				(wdi_event_subscribe *)pevent_cb_sub;
+
 	/* Input validation */
 	if (!txrx_pdev || !txrx_pdev->wdi_event_list) {
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
@@ -152,11 +160,17 @@ wdi_event_sub(struct ol_txrx_pdev_t *txrx_pdev,
 }
 
 A_STATUS
-wdi_event_unsub(struct ol_txrx_pdev_t *txrx_pdev,
-		wdi_event_subscribe *event_cb_sub, enum WDI_EVENT event)
+wdi_event_unsub(struct cdp_pdev *ppdev,
+		void *pevent_cb_sub, uint32_t event)
 {
 	uint32_t event_index = event - WDI_EVENT_BASE;
 
+	struct ol_txrx_pdev_t *txrx_pdev =
+				(struct ol_txrx_pdev_t *)ppdev;
+
+	wdi_event_subscribe *event_cb_sub =
+				(wdi_event_subscribe *)pevent_cb_sub;
+
 	/* Input validation */
 	if (!event_cb_sub) {
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,

+ 10 - 10
core/dp/txrx/wdi_event_api.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2014, 2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2014, 2017-2018 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -29,7 +29,7 @@
 #define _WDI_EVENT_API_H_
 
 #include "wdi_event.h"
-
+#include <cdp_txrx_handle.h>
 struct ol_txrx_pdev_t;
 
 /**
@@ -47,9 +47,9 @@ struct ol_txrx_pdev_t;
  * @param event - which event's notifications are being subscribed to
  * @return error code, or A_OK for success
  */
-A_STATUS wdi_event_sub(struct ol_txrx_pdev_t *txrx_pdev,
-		       wdi_event_subscribe *event_cb_sub,
-		       enum WDI_EVENT event);
+A_STATUS wdi_event_sub(struct cdp_pdev *ppdev,
+		       void *event_cb_sub,
+		       uint32_t event);
 
 /**
  * @brief Unsubscribe from a specified WDI event.
@@ -64,21 +64,21 @@ A_STATUS wdi_event_sub(struct ol_txrx_pdev_t *txrx_pdev,
  * @param event - which event is being unsubscribed
  * @return error code, or A_OK for success
  */
-A_STATUS wdi_event_unsub(struct ol_txrx_pdev_t *txrx_pdev,
-			 wdi_event_subscribe *event_cb_sub,
-			 enum WDI_EVENT event);
+A_STATUS wdi_event_unsub(struct cdp_pdev *ppdev,
+			 void *event_cb_sub,
+			 uint32_t event);
 
 #ifdef WDI_EVENT_ENABLE
 
 void wdi_event_handler(enum WDI_EVENT event,
-		       struct ol_txrx_pdev_t *txrx_pdev, void *data);
+		       struct cdp_pdev *txrx_pdev, void *data);
 A_STATUS wdi_event_attach(struct ol_txrx_pdev_t *txrx_pdev);
 A_STATUS wdi_event_detach(struct ol_txrx_pdev_t *txrx_pdev);
 
 #else
 
 static inline void wdi_event_handler(enum WDI_EVENT event,
-		       struct ol_txrx_pdev_t *txrx_pdev, void *data)
+		       struct cdp_pdev *txrx_pdev, void *data)
 {
 }
 static inline A_STATUS wdi_event_attach(struct ol_txrx_pdev_t *txrx_pdev)

+ 0 - 1
core/hdd/src/wlan_hdd_cfg80211.c

@@ -7467,7 +7467,6 @@ static int __wlan_hdd_cfg80211_wifi_logger_start(struct wiphy *wiphy,
 	}
 	start_log.is_iwpriv_command = nla_get_u32(
 			tb[QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_FLAGS]);
-	hdd_debug("is_iwpriv_command =%d", start_log.is_iwpriv_command);
 
 	/* size is buff size which can be set using iwpriv command*/
 	start_log.size = 0;

+ 1 - 3
core/wma/src/wma_main.c

@@ -6649,12 +6649,10 @@ static void wma_set_wifi_start_packet_stats(void *wma_handle,
 #ifdef HELIUMPLUS
 	log_state = ATH_PKTLOG_ANI | ATH_PKTLOG_RCUPDATE | ATH_PKTLOG_RCFIND |
 		ATH_PKTLOG_RX | ATH_PKTLOG_TX |
-		ATH_PKTLOG_TEXT | ATH_PKTLOG_SW_EVENT |
-		ATH_PKTLOG_LITE_T2H | ATH_PKTLOG_LITE_RX;
+		ATH_PKTLOG_TEXT | ATH_PKTLOG_SW_EVENT;
 #else
 	log_state = ATH_PKTLOG_LITE_T2H | ATH_PKTLOG_LITE_RX;
 #endif
-
 	if (start_log->size != 0) {
 		pktlog_setsize(scn, start_log->size * MEGABYTE);
 		return;