qcacld-3.0: Rework HDD IPA stats

Rework WLAN IPA uC stats:
-IPA resource info
-IPA session info
-HDD IPA TX/RX stats
-WLAN FW WDI stats
-IPA WDI stats
Update HDD IPA private data dump
Remove deprecated stats in qcacld-3.0

Change-Id: I8f5170116156b48530ebb3f04f0a9f377972860c
CRs-Fixed: 2124144
diff --git a/core/hdd/src/wlan_hdd_ipa.c b/core/hdd/src/wlan_hdd_ipa.c
index 15f3ae5..3da984b 100644
--- a/core/hdd/src/wlan_hdd_ipa.c
+++ b/core/hdd/src/wlan_hdd_ipa.c
@@ -116,8 +116,7 @@
 enum {
 	HDD_IPA_UC_STAT_REASON_NONE,
 	HDD_IPA_UC_STAT_REASON_DEBUG,
-	HDD_IPA_UC_STAT_REASON_BW_CAL,
-	HDD_IPA_UC_STAT_REASON_DUMP_INFO
+	HDD_IPA_UC_STAT_REASON_BW_CAL
 };
 
 /**
@@ -228,12 +227,7 @@
 	uint64_t num_tx_drop;
 	uint64_t num_tx_err;
 	uint64_t num_tx_cac_drop;
-	uint64_t num_rx_prefilter;
 	uint64_t num_rx_ipa_excep;
-	uint64_t num_rx_recv;
-	uint64_t num_rx_recv_mul;
-	uint64_t num_rx_send_desc_err;
-	uint64_t max_rx_mul;
 };
 
 struct hdd_ipa_priv;
@@ -265,13 +259,6 @@
 	uint64_t num_prod_perf_req;
 
 	uint64_t num_rx_drop;
-	uint64_t num_rx_ipa_tx_dp;
-	uint64_t num_rx_ipa_splice;
-	uint64_t num_rx_ipa_loop;
-	uint64_t num_rx_ipa_tx_dp_err;
-	uint64_t num_rx_ipa_write_done;
-	uint64_t num_max_ipa_tx_mul;
-	uint64_t num_rx_ipa_hw_maxed_out;
 
 	uint64_t num_tx_desc_q_cnt;
 	uint64_t num_tx_desc_error;
@@ -280,8 +267,6 @@
 	uint64_t num_tx_dequeued;
 	uint64_t num_max_pm_queue;
 
-	uint64_t num_freeq_empty;
-	uint64_t num_pri_freeq_empty;
 	uint64_t num_rx_excep;
 	uint64_t num_tx_fwd_ok;
 	uint64_t num_tx_fwd_err;
@@ -443,8 +428,6 @@
 	struct list_head free_tx_desc_head;
 
 	struct hdd_context *hdd_ctx;
-
-	struct dentry *debugfs_dir;
 	struct hdd_ipa_stats stats;
 
 	struct notifier_block ipv4_notifier;
@@ -471,7 +454,7 @@
 	uint64_t ipa_tx_forward;
 	uint64_t ipa_rx_discard;
 	uint64_t ipa_rx_net_send_count;
-	uint64_t ipa_rx_internel_drop_count;
+	uint64_t ipa_rx_internal_drop_count;
 	uint64_t ipa_rx_destructor_count;
 	qdf_mc_timer_t rt_debug_timer;
 	struct uc_rt_debug_info rt_bug_buffer[HDD_IPA_UC_RT_DEBUG_BUF_COUNT];
@@ -526,10 +509,6 @@
 #define HDD_IPA_IS_CONFIG_ENABLED(_hdd_ctx, _mask) \
 	(((_hdd_ctx)->config->IpaConfig & (_mask)) == (_mask))
 
-#define HDD_IPA_INCREASE_INTERNAL_DROP_COUNT(hdd_ipa) \
-	(hdd_ipa)->ipa_rx_internel_drop_count++
-#define HDD_IPA_INCREASE_NET_SEND_COUNT(hdd_ipa) \
-	(hdd_ipa)->ipa_rx_net_send_count++
 #define HDD_BW_GET_DIFF(_x, _y) (unsigned long)((ULONG_MAX - (_y)) + (_x) + 1)
 
 #if defined(QCA_WIFI_3_0) && defined(CONFIG_IPA3)
@@ -848,7 +827,7 @@
 
 	dump_info->time = (uint64_t)qdf_mc_timer_get_system_time();
 	dump_info->ipa_excep_count = hdd_ipa->stats.num_rx_excep;
-	dump_info->rx_drop_count = hdd_ipa->ipa_rx_internel_drop_count;
+	dump_info->rx_drop_count = hdd_ipa->ipa_rx_internal_drop_count;
 	dump_info->net_sent_count = hdd_ipa->ipa_rx_net_send_count;
 	dump_info->tx_fwd_count = hdd_ipa->ipa_tx_forward;
 	dump_info->tx_fwd_ok_count = hdd_ipa->stats.num_tx_fwd_ok;
@@ -887,13 +866,13 @@
 
 	if (!hdd_ipa_is_rt_debugging_enabled(hdd_ctx)) {
 		HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG,
-			"%s: IPA RT debug is not enabled", __func__);
+			"IPA RT debug is not enabled");
 		return;
 	}
 
-	HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+	HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 		"========= WLAN-IPA DEBUG BUF DUMP ==========\n");
-	HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+	HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 		"     TM     :   EXEP   :   DROP   :   NETS   :   FWOK   :   TXFD   :   DSTR   :   DSCD\n");
 
 	qdf_mutex_acquire(&hdd_ipa->rt_debug_lock);
@@ -903,7 +882,7 @@
 		dump_index = (hdd_ipa->rt_buf_fill_index + dump_count) %
 			HDD_IPA_UC_RT_DEBUG_BUF_COUNT;
 		dump_info = &hdd_ipa->rt_bug_buffer[dump_index];
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 			"%12llu:%10llu:%10llu:%10llu:%10llu:%10llu:%10llu:%10llu\n",
 			dump_info->time, dump_info->ipa_excep_count,
 			dump_info->rx_drop_count, dump_info->net_sent_count,
@@ -912,7 +891,7 @@
 			dump_info->rx_discard_count);
 	}
 	qdf_mutex_release(&hdd_ipa->rt_debug_lock);
-	HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+	HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 		"======= WLAN-IPA DEBUG BUF DUMP END ========\n");
 }
 
@@ -1059,7 +1038,7 @@
 	hdd_ipa->ipa_tx_forward = 0;
 	hdd_ipa->ipa_rx_discard = 0;
 	hdd_ipa->ipa_rx_net_send_count = 0;
-	hdd_ipa->ipa_rx_internel_drop_count = 0;
+	hdd_ipa->ipa_rx_internal_drop_count = 0;
 	hdd_ipa->ipa_rx_destructor_count = 0;
 
 	/* Reatime debug enable on feature enable */
@@ -1094,7 +1073,8 @@
 	int i;
 
 	/* HDD IPA */
-	hdd_info("==== HDD IPA ====\n"
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== HDD IPA ====\n"
 		"num_iface: %d\n"
 		"rm_state: %d\n"
 		"rm_lock: %pK\n"
@@ -1126,12 +1106,13 @@
 		&hdd_ipa->pm_work,
 		&hdd_ipa->pm_lock,
 		hdd_ipa->suspended);
-	hdd_err("\nq_lock: %pK\n"
+
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\nq_lock: %pK\n"
 		"pend_desc_head----\n"
 		"\tnext: %pK\n"
 		"\tprev: %pK\n"
 		"hdd_ctx: %pK\n"
-		"debugfs_dir: %pK\n"
 		"stats: %pK\n"
 		"ipv4_notifier: %pK\n"
 		"curr_prod_bw: %d\n"
@@ -1143,16 +1124,16 @@
 		hdd_ipa->pend_desc_head.next,
 		hdd_ipa->pend_desc_head.prev,
 		hdd_ipa->hdd_ctx,
-		hdd_ipa->debugfs_dir,
 		&hdd_ipa->stats,
 		&hdd_ipa->ipv4_notifier,
 		hdd_ipa->curr_prod_bw,
 		hdd_ipa->curr_cons_bw,
 		hdd_ipa->activated_fw_pipe,
 		hdd_ipa->sap_num_connected_sta,
-		(unsigned int)hdd_ipa->sta_connected
-				);
-	hdd_info("\ntx_pipe_handle: 0x%x\n"
+		(unsigned int)hdd_ipa->sta_connected);
+
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\ntx_pipe_handle: 0x%x\n"
 		"rx_pipe_handle: 0x%x\n"
 		"resource_loading: %d\n"
 		"resource_unloading: %d\n"
@@ -1184,9 +1165,59 @@
 		hdd_ipa->ipa_p_rx_packets,
 		hdd_ipa->stat_req_reason);
 
-	hdd_info("assoc_stas_map([id]is_reserved/sta_id): ");
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\ncons_pipe_in----\n"
+		"\tsys: %pK\n"
+		"\tdl.comp_ring_base_pa: 0x%x\n"
+		"\tdl.comp_ring_size: %d\n"
+		"\tdl.ce_ring_base_pa: 0x%x\n"
+		"\tdl.ce_door_bell_pa: 0x%x\n"
+		"\tdl.ce_ring_size: %d\n"
+		"\tdl.num_tx_buffers: %d\n"
+		"prod_pipe_in----\n"
+		"\tsys: %pK\n"
+		"\tul.rdy_ring_base_pa: 0x%x\n"
+		"\tul.rdy_ring_size: %d\n"
+		"\tul.rdy_ring_rp_pa: 0x%x\n"
+		"uc_loaded: %d\n"
+		"wdi_enabled: %d\n"
+		"rt_debug_fill_timer: %pK\n"
+		"rt_debug_lock: %pK\n"
+		"ipa_lock: %pK\n",
+		&hdd_ipa->cons_pipe_in.sys,
+		(unsigned int)hdd_ipa->cons_pipe_in.u.dl.comp_ring_base_pa,
+		hdd_ipa->cons_pipe_in.u.dl.comp_ring_size,
+		(unsigned int)hdd_ipa->cons_pipe_in.u.dl.ce_ring_base_pa,
+		(unsigned int)hdd_ipa->cons_pipe_in.u.dl.ce_door_bell_pa,
+		hdd_ipa->cons_pipe_in.u.dl.ce_ring_size,
+		hdd_ipa->cons_pipe_in.u.dl.num_tx_buffers,
+		&hdd_ipa->prod_pipe_in.sys,
+		(unsigned int)hdd_ipa->prod_pipe_in.u.ul.rdy_ring_base_pa,
+		hdd_ipa->prod_pipe_in.u.ul.rdy_ring_size,
+		(unsigned int)hdd_ipa->prod_pipe_in.u.ul.rdy_ring_rp_pa,
+		hdd_ipa->uc_loaded,
+		hdd_ipa->wdi_enabled,
+		&hdd_ipa->rt_debug_fill_timer,
+		&hdd_ipa->rt_debug_lock,
+		&hdd_ipa->ipa_lock);
+
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\nvdev_to_iface----");
+	for (i = 0; i < CSR_ROAM_SESSION_MAX; i++) {
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"\n\t[%d]=%d", i, hdd_ipa->vdev_to_iface[i]);
+	}
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\nvdev_offload_enabled----");
+	for (i = 0; i < CSR_ROAM_SESSION_MAX; i++) {
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"\n\t[%d]=%d", i, hdd_ipa->vdev_offload_enabled[i]);
+	}
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\nassoc_stas_map ----");
 	for (i = 0; i < WLAN_MAX_STA_COUNT; i++) {
-		hdd_info(" [%d]%d/%d", i,
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"\n\t[%d]: is_reserved=%d, sta_id=%d", i,
 			hdd_ipa->assoc_stas_map[i].is_reserved,
 			hdd_ipa->assoc_stas_map[i].sta_id);
 	}
@@ -1205,7 +1236,8 @@
 	int i;
 
 	/* IPA SYS Pipes */
-	hdd_info("==== IPA SYS Pipes ====\n");
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== IPA SYS Pipes ====\n");
 
 	for (i = 0; i < HDD_IPA_MAX_SYSBAM_PIPE; i++) {
 		struct hdd_ipa_sys_pipe *sys_pipe;
@@ -1214,7 +1246,8 @@
 		sys_pipe = &hdd_ipa->sys_pipe[i];
 		ipa_sys_params = &sys_pipe->ipa_sys_params;
 
-		hdd_info("sys_pipe[%d]----\n"
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"\nsys_pipe[%d]----\n"
 			"\tconn_hdl: 0x%x\n"
 			"\tconn_hdl_valid: %d\n"
 			"\tnat_en: %d\n"
@@ -1262,14 +1295,16 @@
 	int i;
 
 	/* IPA Interface Contexts */
-	hdd_info("==== IPA Interface Contexts ====\n");
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== IPA Interface Contexts ====\n");
 
 	for (i = 0; i < HDD_IPA_MAX_IFACE; i++) {
 		struct hdd_ipa_iface_context *iface_context;
 
 		iface_context = &hdd_ipa->iface_context[i];
 
-		hdd_info("iface_context[%d]----\n"
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"\niface_context[%d]----\n"
 			"\thdd_ipa: %pK\n"
 			"\tadapter: %pK\n"
 			"\ttl_context: %pK\n"
@@ -2036,8 +2071,8 @@
 	if (!hdd_ipa_is_rm_enabled(hdd_ctx))
 		return;
 
-	HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "%s, event code %d",
-		    __func__, event);
+	HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "event code %d",
+		     event);
 
 	switch (event) {
 	case IPA_RM_RESOURCE_GRANTED:
@@ -2057,7 +2092,7 @@
 
 	default:
 		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
-			    "%s, invalid event code %d", __func__, event);
+			    "invalid event code %d",  event);
 		break;
 	}
 }
@@ -2084,7 +2119,7 @@
 	cds_ssr_protect(__func__);
 	event = uc_rm_work->event;
 	HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG,
-		"%s, posted event %d", __func__, event);
+		"posted event %d",  event);
 
 	hdd_ipa_uc_rm_notify_handler(hdd_ipa, event);
 	cds_ssr_unprotect(__func__);
@@ -2105,10 +2140,9 @@
 	struct hdd_context *hdd_ctx;
 	QDF_STATUS status;
 
-	HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR, "%s : UC READY", __func__);
+	HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO, "UC READY");
 	if (true == hdd_ipa->uc_loaded) {
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "%s : UC already loaded",
-			 __func__);
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "UC already loaded");
 		return;
 	}
 
@@ -2237,6 +2271,379 @@
 #endif
 
 /**
+ * hdd_ipa_wlan_event_to_str() - convert IPA WLAN event to string
+ * @event: IPA WLAN event to be converted to a string
+ *
+ * Return: ASCII string representing the IPA WLAN event
+ */
+static inline char *hdd_ipa_wlan_event_to_str(enum ipa_wlan_event event)
+{
+	switch (event) {
+	CASE_RETURN_STRING(WLAN_CLIENT_CONNECT);
+	CASE_RETURN_STRING(WLAN_CLIENT_DISCONNECT);
+	CASE_RETURN_STRING(WLAN_CLIENT_POWER_SAVE_MODE);
+	CASE_RETURN_STRING(WLAN_CLIENT_NORMAL_MODE);
+	CASE_RETURN_STRING(SW_ROUTING_ENABLE);
+	CASE_RETURN_STRING(SW_ROUTING_DISABLE);
+	CASE_RETURN_STRING(WLAN_AP_CONNECT);
+	CASE_RETURN_STRING(WLAN_AP_DISCONNECT);
+	CASE_RETURN_STRING(WLAN_STA_CONNECT);
+	CASE_RETURN_STRING(WLAN_STA_DISCONNECT);
+	CASE_RETURN_STRING(WLAN_CLIENT_CONNECT_EX);
+	default:
+		return "UNKNOWN";
+	}
+}
+
+/**
+ * hdd_ipa_print_session_info - Print IPA session info
+ * @hdd_ipa: HDD IPA local context
+ *
+ * Return: None
+ */
+static void hdd_ipa_print_session_info(struct hdd_ipa_priv *hdd_ipa)
+{
+	uint8_t session_id;
+	int device_mode;
+	struct ipa_uc_pending_event *event = NULL, *next = NULL;
+	struct hdd_ipa_iface_context *iface_context = NULL;
+	int i;
+
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== IPA SESSION INFO ====\n"
+		"NUM IFACE: %d\n"
+		"RM STATE: %d\n"
+		"ACTIVATED FW PIPE: %d\n"
+		"SAP NUM STAs: %d\n"
+		"STA CONNECTED: %d\n"
+		"CONCURRENT MODE: %s\n"
+		"RSC LOADING: %d\n"
+		"RSC UNLOADING: %d\n"
+		"PENDING CONS REQ: %d\n"
+		"IPA PIPES DOWN: %d\n"
+		"IPA UC LOADED: %d\n"
+		"IPA WDI ENABLED: %d\n"
+		"NUM SEND MSG: %d\n"
+		"NUM FREE MSG: %d\n",
+		hdd_ipa->num_iface,
+		hdd_ipa->rm_state,
+		hdd_ipa->activated_fw_pipe,
+		hdd_ipa->sap_num_connected_sta,
+		hdd_ipa->sta_connected,
+		(hdd_ipa->hdd_ctx->mcc_mode ? "MCC" : "SCC"),
+		hdd_ipa->resource_loading,
+		hdd_ipa->resource_unloading,
+		hdd_ipa->pending_cons_req,
+		hdd_ipa->ipa_pipes_down,
+		hdd_ipa->uc_loaded,
+		hdd_ipa->wdi_enabled,
+		(unsigned int)hdd_ipa->stats.num_send_msg,
+		(unsigned int)hdd_ipa->stats.num_free_msg);
+
+	for (i = 0; i < HDD_IPA_MAX_IFACE; i++) {
+		iface_context = &hdd_ipa->iface_context[i];
+		if (!iface_context || !iface_context->adapter)
+			continue;
+
+		session_id = iface_context->adapter->sessionId;
+		if (session_id >= CSR_ROAM_SESSION_MAX)
+			continue;
+
+		device_mode = iface_context->adapter->device_mode;
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"\nIFACE[%d]: session:%d, sta_id:%d, mode:%s, offload:%d",
+			i, session_id,
+			iface_context->sta_id,
+			hdd_device_mode_to_string(device_mode),
+			hdd_ipa->vdev_offload_enabled[session_id]);
+	}
+
+	for (i = 0; i < IPA_WLAN_EVENT_MAX; i++)
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"\nEVENT[%d]=%d",
+			i, hdd_ipa->stats.event[i]);
+
+	i = 0;
+	qdf_list_peek_front(&hdd_ipa->pending_event,
+			(qdf_list_node_t **)&event);
+	while (event != NULL) {
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"\nPENDING EVENT[%d]: DEV:%s, EVT:%s, sta_id:%d, MAC:%pM",
+			i, event->adapter->dev->name,
+			hdd_ipa_wlan_event_to_str(event->type),
+			event->sta_id, event->mac_addr);
+
+		qdf_list_peek_next(&hdd_ipa->pending_event,
+			(qdf_list_node_t *)event, (qdf_list_node_t **)&next);
+		event = next;
+		next = NULL;
+		i++;
+	}
+}
+
+/**
+ * hdd_ipa_print_txrx_stats - Print HDD IPA TX/RX stats
+ * @hdd_ipa: HDD IPA local context
+ *
+ * Return: None
+ */
+static void hdd_ipa_print_txrx_stats(struct hdd_ipa_priv *hdd_ipa)
+{
+	int i;
+	struct hdd_ipa_iface_context *iface_context = NULL;
+
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== HDD IPA TX/RX STATS ====\n"
+		"NUM RM GRANT: %llu\n"
+		"NUM RM RELEASE: %llu\n"
+		"NUM RM GRANT IMM: %llu\n"
+		"NUM CONS PERF REQ: %llu\n"
+		"NUM PROD PERF REQ: %llu\n"
+		"NUM RX DROP: %llu\n"
+		"NUM EXCP PKT: %llu\n"
+		"NUM TX FWD OK: %llu\n"
+		"NUM TX FWD ERR: %llu\n"
+		"NUM TX DESC Q CNT: %llu\n"
+		"NUM TX DESC ERROR: %llu\n"
+		"NUM TX COMP CNT: %llu\n"
+		"NUM TX QUEUED: %llu\n"
+		"NUM TX DEQUEUED: %llu\n"
+		"NUM MAX PM QUEUE: %llu\n"
+		"TX REF CNT: %d\n"
+		"SUSPENDED: %d\n"
+		"PEND DESC HEAD: %pK\n"
+		"TX DESC LIST: %pK\n"
+		"FREE TX DESC HEAD: %pK\n",
+		hdd_ipa->stats.num_rm_grant,
+		hdd_ipa->stats.num_rm_release,
+		hdd_ipa->stats.num_rm_grant_imm,
+		hdd_ipa->stats.num_cons_perf_req,
+		hdd_ipa->stats.num_prod_perf_req,
+		hdd_ipa->stats.num_rx_drop,
+		hdd_ipa->stats.num_rx_excep,
+		hdd_ipa->stats.num_tx_fwd_ok,
+		hdd_ipa->stats.num_tx_fwd_err,
+		hdd_ipa->stats.num_tx_desc_q_cnt,
+		hdd_ipa->stats.num_tx_desc_error,
+		hdd_ipa->stats.num_tx_comp_cnt,
+		hdd_ipa->stats.num_tx_queued,
+		hdd_ipa->stats.num_tx_dequeued,
+		hdd_ipa->stats.num_max_pm_queue,
+		hdd_ipa->tx_ref_cnt.counter,
+		hdd_ipa->suspended,
+		&hdd_ipa->pend_desc_head,
+		hdd_ipa->tx_desc_list,
+		&hdd_ipa->free_tx_desc_head);
+
+	for (i = 0; i < HDD_IPA_MAX_IFACE; i++) {
+		iface_context = &hdd_ipa->iface_context[i];
+		if (!iface_context || !iface_context->adapter)
+			continue;
+
+		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+			"IFACE[%d]: TX:%llu, TX DROP:%llu, TX ERR:%llu, TX CAC DROP:%llu, RX IPA EXCEP:%llu",
+			i,
+			iface_context->stats.num_tx,
+			iface_context->stats.num_tx_drop,
+			iface_context->stats.num_tx_err,
+			iface_context->stats.num_tx_cac_drop,
+			iface_context->stats.num_rx_ipa_excep);
+	}
+}
+
+/**
+ * hdd_ipa_print_fw_wdi_stats - Print WLAN FW WDI stats
+ * @hdd_ipa: HDD IPA local context
+ *
+ * Return: None
+ */
+static void hdd_ipa_print_fw_wdi_stats(struct hdd_ipa_priv *hdd_ipa,
+				       struct ipa_uc_fw_stats *uc_fw_stat)
+{
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== WLAN FW WDI TX STATS ====\n"
+		"COMP RING BASE: 0x%x\n"
+		"COMP RING SIZE: %d\n"
+		"COMP RING DBELL : 0x%x\n"
+		"COMP RING DBELL IND VAL : %d\n"
+		"COMP RING DBELL CACHED VAL : %d\n"
+		"PKTS ENQ : %d\n"
+		"PKTS COMP : %d\n"
+		"IS SUSPEND : %d\n",
+		uc_fw_stat->tx_comp_ring_base,
+		uc_fw_stat->tx_comp_ring_size,
+		uc_fw_stat->tx_comp_ring_dbell_addr,
+		uc_fw_stat->tx_comp_ring_dbell_ind_val,
+		uc_fw_stat->tx_comp_ring_dbell_cached_val,
+		uc_fw_stat->tx_pkts_enqueued,
+		uc_fw_stat->tx_pkts_completed,
+		uc_fw_stat->tx_is_suspend);
+
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== WLAN FW WDI RX STATS ====\n"
+		"IND RING BASE: 0x%x\n"
+		"IND RING SIZE: %d\n"
+		"IND RING DBELL : 0x%x\n"
+		"IND RING DBELL IND VAL : %d\n"
+		"IND RING DBELL CACHED VAL : %d\n"
+		"RDY IND ADDR : 0x%x\n"
+		"RDY IND CACHE VAL : %d\n"
+		"RFIL IND : %d\n"
+		"NUM PKT INDICAT : %d\n"
+		"BUF REFIL : %d\n"
+		"NUM DROP NO SPC : %d\n"
+		"NUM DROP NO BUF : %d\n"
+		"IS SUSPND : %d\n",
+		uc_fw_stat->rx_ind_ring_base,
+		uc_fw_stat->rx_ind_ring_size,
+		uc_fw_stat->rx_ind_ring_dbell_addr,
+		uc_fw_stat->rx_ind_ring_dbell_ind_val,
+		uc_fw_stat->rx_ind_ring_dbell_ind_cached_val,
+		uc_fw_stat->rx_ind_ring_rdidx_addr,
+		uc_fw_stat->rx_ind_ring_rd_idx_cached_val,
+		uc_fw_stat->rx_refill_idx,
+		uc_fw_stat->rx_num_pkts_indicated,
+		uc_fw_stat->rx_buf_refilled,
+		uc_fw_stat->rx_num_ind_drop_no_space,
+		uc_fw_stat->rx_num_ind_drop_no_buf,
+		uc_fw_stat->rx_is_suspend);
+}
+
+/**
+ * hdd_ipa_print_ipa_wdi_stats - Print IPA WDI stats
+ * @hdd_ipa: HDD IPA local context
+ *
+ * Return: None
+ */
+static void hdd_ipa_print_ipa_wdi_stats(struct hdd_ipa_priv *hdd_ipa)
+{
+	struct IpaHwStatsWDIInfoData_t ipa_stat;
+
+	ipa_get_wdi_stats(&ipa_stat);
+
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== IPA WDI TX STATS ====\n"
+		"NUM PROCD : %d\n"
+		"CE DBELL : 0x%x\n"
+		"NUM DBELL FIRED : %d\n"
+		"COMP RNG FULL : %d\n"
+		"COMP RNG EMPT : %d\n"
+		"COMP RNG USE HGH : %d\n"
+		"COMP RNG USE LOW : %d\n"
+		"BAM FIFO FULL : %d\n"
+		"BAM FIFO EMPT : %d\n"
+		"BAM FIFO USE HGH : %d\n"
+		"BAM FIFO USE LOW : %d\n"
+		"NUM DBELL : %d\n"
+		"NUM UNEXP DBELL : %d\n"
+		"NUM BAM INT HDL : 0x%x\n"
+		"NUM BAM INT NON-RUN : 0x%x\n"
+		"NUM QMB INT HDL : 0x%x\n",
+		ipa_stat.tx_ch_stats.num_pkts_processed,
+		ipa_stat.tx_ch_stats.copy_engine_doorbell_value,
+		ipa_stat.tx_ch_stats.num_db_fired,
+		ipa_stat.tx_ch_stats.tx_comp_ring_stats.ringFull,
+		ipa_stat.tx_ch_stats.tx_comp_ring_stats.ringEmpty,
+		ipa_stat.tx_ch_stats.tx_comp_ring_stats.ringUsageHigh,
+		ipa_stat.tx_ch_stats.tx_comp_ring_stats.ringUsageLow,
+		ipa_stat.tx_ch_stats.bam_stats.bamFifoFull,
+		ipa_stat.tx_ch_stats.bam_stats.bamFifoEmpty,
+		ipa_stat.tx_ch_stats.bam_stats.bamFifoUsageHigh,
+		ipa_stat.tx_ch_stats.bam_stats.bamFifoUsageLow,
+		ipa_stat.tx_ch_stats.num_db,
+		ipa_stat.tx_ch_stats.num_unexpected_db,
+		ipa_stat.tx_ch_stats.num_bam_int_handled,
+		ipa_stat.tx_ch_stats.
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0))
+			num_bam_int_in_non_running_state,
+#else
+			num_bam_int_in_non_runnning_state,
+#endif
+		ipa_stat.tx_ch_stats.num_qmb_int_handled);
+
+	QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
+		"\n==== IPA WDI RX STATS ====\n"
+		"MAX OST PKT : %d\n"
+		"NUM PKT PRCSD : %d\n"
+		"RNG RP : 0x%x\n"
+		"IND RNG FULL : %d\n"
+		"IND RNG EMPT : %d\n"
+		"IND RNG USE HGH : %d\n"
+		"IND RNG USE LOW : %d\n"
+		"BAM FIFO FULL : %d\n"
+		"BAM FIFO EMPT : %d\n"
+		"BAM FIFO USE HGH : %d\n"
+		"BAM FIFO USE LOW : %d\n"
+		"NUM DB : %d\n"
+		"NUM UNEXP DB : %d\n"
+		"NUM BAM INT HNDL : 0x%x\n",
+		ipa_stat.rx_ch_stats.max_outstanding_pkts,
+		ipa_stat.rx_ch_stats.num_pkts_processed,
+		ipa_stat.rx_ch_stats.rx_ring_rp_value,
+		ipa_stat.rx_ch_stats.rx_ind_ring_stats.ringFull,
+		ipa_stat.rx_ch_stats.rx_ind_ring_stats.ringEmpty,
+		ipa_stat.rx_ch_stats.rx_ind_ring_stats.ringUsageHigh,
+		ipa_stat.rx_ch_stats.rx_ind_ring_stats.ringUsageLow,
+		ipa_stat.rx_ch_stats.bam_stats.bamFifoFull,
+		ipa_stat.rx_ch_stats.bam_stats.bamFifoEmpty,
+		ipa_stat.rx_ch_stats.bam_stats.bamFifoUsageHigh,
+		ipa_stat.rx_ch_stats.bam_stats.bamFifoUsageLow,
+		ipa_stat.rx_ch_stats.num_db,
+		ipa_stat.rx_ch_stats.num_unexpected_db,
+		ipa_stat.rx_ch_stats.num_bam_int_handled);
+}
+
+/**
+ * hdd_ipa_uc_info() - Print IPA uC resource and session information
+ * @adapter: network adapter
+ *
+ * Return: None
+ */
+void hdd_ipa_uc_info(struct hdd_context *hdd_ctx)
+{
+	struct hdd_ipa_priv *hdd_ipa;
+
+	hdd_ipa = hdd_ctx->hdd_ipa;
+
+	if (!hdd_ipa) {
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+			"HDD IPA context is NULL");
+		return;
+	}
+
+	/* IPA session info */
+	hdd_ipa_print_session_info(hdd_ipa);
+}
+
+/**
+ * hdd_ipa_uc_stat() - Print IPA uC stats
+ * @adapter: network adapter
+ *
+ * Return: None
+ */
+void hdd_ipa_uc_stat(struct hdd_adapter *adapter)
+{
+	struct hdd_context *hdd_ctx;
+	struct hdd_ipa_priv *hdd_ipa;
+
+	hdd_ctx = WLAN_HDD_GET_CTX(adapter);
+	hdd_ipa = hdd_ctx->hdd_ipa;
+
+	if (!hdd_ipa) {
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+			"HDD IPA context is NULL");
+		return;
+	}
+
+	/* HDD IPA TX/RX stats */
+	hdd_ipa_print_txrx_stats(hdd_ipa);
+	/* IPA WDI stats */
+	hdd_ipa_print_ipa_wdi_stats(hdd_ipa);
+	/* WLAN FW WDI stats */
+	hdd_ipa_uc_stat_request(adapter, HDD_IPA_UC_STAT_REASON_DEBUG);
+}
+
+/**
  * hdd_ipa_uc_op_cb() - IPA uC operation callback
  * @op_msg: operation message received from firmware
  * @usr_ctxt: user context registered with TL (we register the HDD Global
@@ -2248,19 +2655,18 @@
 {
 	struct op_msg_type *msg = op_msg;
 	struct ipa_uc_fw_stats *uc_fw_stat;
-	struct IpaHwStatsWDIInfoData_t ipa_stat;
 	struct hdd_ipa_priv *hdd_ipa;
 	struct hdd_context *hdd_ctx;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 
 	if (!op_msg || !usr_ctxt) {
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR, "%s, INVALID ARG", __func__);
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR, "INVALID ARG");
 		return;
 	}
 
 	if (HDD_IPA_UC_OPCODE_MAX <= msg->op_code) {
 		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
-			    "%s, INVALID OPCODE %d", __func__, msg->op_code);
+			    "INVALID OPCODE %d",  msg->op_code);
 		qdf_mem_free(op_msg);
 		return;
 	}
@@ -2323,157 +2729,11 @@
 		qdf_mutex_release(&hdd_ipa->ipa_lock);
 	} else if ((HDD_IPA_UC_OPCODE_STATS == msg->op_code) &&
 		(HDD_IPA_UC_STAT_REASON_DEBUG == hdd_ipa->stat_req_reason)) {
-		/* STATs from host */
-		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
-			  "==== IPA_UC WLAN_HOST RX ====\n"
-			  "NUM EXCP PKT : %llu\n"
-			  "NUM TX FWD OK : %llu\n"
-			  "NUM TX FWD ERR : %llu",
-			  hdd_ipa->stats.num_rx_excep,
-			  hdd_ipa->stats.num_tx_fwd_ok,
-			  hdd_ipa->stats.num_tx_fwd_err);
-		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
-			  "==== IPA_UC WLAN_HOST CONTROL ====\n"
-			  "SAP NUM STAs: %d\n"
-			  "STA CONNECTED: %d\n"
-			  "CONCURRENT MODE: %s\n"
-			  "TX PIPE HDL: 0x%x\n"
-			  "RX PIPE HDL : 0x%x\n"
-			  "RSC LOADING : %d\n"
-			  "RSC UNLOADING : %d\n"
-			  "PNDNG CNS RQT : %d",
-			  hdd_ipa->sap_num_connected_sta,
-			  hdd_ipa->sta_connected,
-			  (hdd_ctx->mcc_mode ? "MCC" : "SCC"),
-			  hdd_ipa->tx_pipe_handle,
-			  hdd_ipa->rx_pipe_handle,
-			  hdd_ipa->resource_loading,
-			  hdd_ipa->resource_unloading,
-			  hdd_ipa->pending_cons_req);
-
-		/* STATs from FW */
 		uc_fw_stat = (struct ipa_uc_fw_stats *)
-			     ((uint8_t *)op_msg + sizeof(struct op_msg_type));
-		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
-			  "==== IPA_UC WLAN_FW TX ====\n"
-			  "COMP RING BASE: 0x%x\n"
-			  "COMP RING SIZE: %d\n"
-			  "COMP RING DBELL : 0x%x\n"
-			  "COMP RING DBELL IND VAL : %d\n"
-			  "COMP RING DBELL CACHED VAL : %d\n"
-			  "COMP RING DBELL CACHED VAL : %d\n"
-			  "PKTS ENQ : %d\n"
-			  "PKTS COMP : %d\n"
-			  "IS SUSPEND : %d\n"
-			  "RSVD : 0x%x",
-			  uc_fw_stat->tx_comp_ring_base,
-			  uc_fw_stat->tx_comp_ring_size,
-			  uc_fw_stat->tx_comp_ring_dbell_addr,
-			  uc_fw_stat->tx_comp_ring_dbell_ind_val,
-			  uc_fw_stat->tx_comp_ring_dbell_cached_val,
-			  uc_fw_stat->tx_comp_ring_dbell_cached_val,
-			  uc_fw_stat->tx_pkts_enqueued,
-			  uc_fw_stat->tx_pkts_completed,
-			  uc_fw_stat->tx_is_suspend,
-			  uc_fw_stat->tx_reserved);
-		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
-			  "==== IPA_UC WLAN_FW RX ====\n"
-			  "IND RING BASE: 0x%x\n"
-			  "IND RING SIZE: %d\n"
-			  "IND RING DBELL : 0x%x\n"
-			  "IND RING DBELL IND VAL : %d\n"
-			  "IND RING DBELL CACHED VAL : %d\n"
-			  "RDY IND ADDR : 0x%x\n"
-			  "RDY IND CACHE VAL : %d\n"
-			  "RFIL IND : %d\n"
-			  "NUM PKT INDICAT : %d\n"
-			  "BUF REFIL : %d\n"
-			  "NUM DROP NO SPC : %d\n"
-			  "NUM DROP NO BUF : %d\n"
-			  "IS SUSPND : %d\n"
-			  "RSVD : 0x%x\n",
-			  uc_fw_stat->rx_ind_ring_base,
-			  uc_fw_stat->rx_ind_ring_size,
-			  uc_fw_stat->rx_ind_ring_dbell_addr,
-			  uc_fw_stat->rx_ind_ring_dbell_ind_val,
-			  uc_fw_stat->rx_ind_ring_dbell_ind_cached_val,
-			  uc_fw_stat->rx_ind_ring_rdidx_addr,
-			  uc_fw_stat->rx_ind_ring_rd_idx_cached_val,
-			  uc_fw_stat->rx_refill_idx,
-			  uc_fw_stat->rx_num_pkts_indicated,
-			  uc_fw_stat->rx_buf_refilled,
-			  uc_fw_stat->rx_num_ind_drop_no_space,
-			  uc_fw_stat->rx_num_ind_drop_no_buf,
-			  uc_fw_stat->rx_is_suspend,
-			  uc_fw_stat->rx_reserved);
-		/* STATs from IPA */
-		ipa_get_wdi_stats(&ipa_stat);
-		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
-			  "==== IPA_UC IPA TX ====\n"
-			  "NUM PROCD : %d\n"
-			  "CE DBELL : 0x%x\n"
-			  "NUM DBELL FIRED : %d\n"
-			  "COMP RNG FULL : %d\n"
-			  "COMP RNG EMPT : %d\n"
-			  "COMP RNG USE HGH : %d\n"
-			  "COMP RNG USE LOW : %d\n"
-			  "BAM FIFO FULL : %d\n"
-			  "BAM FIFO EMPT : %d\n"
-			  "BAM FIFO USE HGH : %d\n"
-			  "BAM FIFO USE LOW : %d\n"
-			  "NUM DBELL : %d\n"
-			  "NUM UNEXP DBELL : %d\n"
-			  "NUM BAM INT HDL : 0x%x\n"
-			  "NUM BAM INT NON-RUN : 0x%x\n"
-			  "NUM QMB INT HDL : 0x%x",
-			  ipa_stat.tx_ch_stats.num_pkts_processed,
-			  ipa_stat.tx_ch_stats.copy_engine_doorbell_value,
-			  ipa_stat.tx_ch_stats.num_db_fired,
-			  ipa_stat.tx_ch_stats.tx_comp_ring_stats.ringFull,
-			  ipa_stat.tx_ch_stats.tx_comp_ring_stats.ringEmpty,
-			  ipa_stat.tx_ch_stats.tx_comp_ring_stats.ringUsageHigh,
-			  ipa_stat.tx_ch_stats.tx_comp_ring_stats.ringUsageLow,
-			  ipa_stat.tx_ch_stats.bam_stats.bamFifoFull,
-			  ipa_stat.tx_ch_stats.bam_stats.bamFifoEmpty,
-			  ipa_stat.tx_ch_stats.bam_stats.bamFifoUsageHigh,
-			  ipa_stat.tx_ch_stats.bam_stats.bamFifoUsageLow,
-			  ipa_stat.tx_ch_stats.num_db,
-			  ipa_stat.tx_ch_stats.num_unexpected_db,
-			  ipa_stat.tx_ch_stats.num_bam_int_handled,
-			  ipa_stat.tx_ch_stats.
-			  num_bam_int_in_non_running_state,
-			  ipa_stat.tx_ch_stats.num_qmb_int_handled);
+			((uint8_t *)op_msg + sizeof(struct op_msg_type));
 
-		QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
-			  "==== IPA_UC IPA RX ====\n"
-			  "MAX OST PKT : %d\n"
-			  "NUM PKT PRCSD : %d\n"
-			  "RNG RP : 0x%x\n"
-			  "COMP RNG FULL : %d\n"
-			  "COMP RNG EMPT : %d\n"
-			  "COMP RNG USE HGH : %d\n"
-			  "COMP RNG USE LOW : %d\n"
-			  "BAM FIFO FULL : %d\n"
-			  "BAM FIFO EMPT : %d\n"
-			  "BAM FIFO USE HGH : %d\n"
-			  "BAM FIFO USE LOW : %d\n"
-			  "NUM DB : %d\n"
-			  "NUM UNEXP DB : %d\n"
-			  "NUM BAM INT HNDL : 0x%x\n",
-			  ipa_stat.rx_ch_stats.max_outstanding_pkts,
-			  ipa_stat.rx_ch_stats.num_pkts_processed,
-			  ipa_stat.rx_ch_stats.rx_ring_rp_value,
-			  ipa_stat.rx_ch_stats.rx_ind_ring_stats.ringFull,
-			  ipa_stat.rx_ch_stats.rx_ind_ring_stats.ringEmpty,
-			  ipa_stat.rx_ch_stats.rx_ind_ring_stats.ringUsageHigh,
-			  ipa_stat.rx_ch_stats.rx_ind_ring_stats.ringUsageLow,
-			  ipa_stat.rx_ch_stats.bam_stats.bamFifoFull,
-			  ipa_stat.rx_ch_stats.bam_stats.bamFifoEmpty,
-			  ipa_stat.rx_ch_stats.bam_stats.bamFifoUsageHigh,
-			  ipa_stat.rx_ch_stats.bam_stats.bamFifoUsageLow,
-			  ipa_stat.rx_ch_stats.num_db,
-			  ipa_stat.rx_ch_stats.num_unexpected_db,
-			  ipa_stat.rx_ch_stats.num_bam_int_handled);
+		/* WLAN FW WDI stats */
+		hdd_ipa_print_fw_wdi_stats(hdd_ipa, uc_fw_stat);
 	} else if ((HDD_IPA_UC_OPCODE_STATS == msg->op_code) &&
 		(HDD_IPA_UC_STAT_REASON_BW_CAL == hdd_ipa->stat_req_reason)) {
 		/* STATs from FW */
@@ -2576,11 +2836,10 @@
 		sme_ipa_offload_enable_disable(WLAN_HDD_GET_HAL_CTX(adapter),
 			adapter->sessionId, &ipa_offload_enable_disable)) {
 		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
-			    "%s (offload_type=%d, vdev_id=%d, enable=%d)",
-			    "Failure to enable IPA offload",
-			    ipa_offload_enable_disable.offload_type,
-			    ipa_offload_enable_disable.vdev_id,
-			    ipa_offload_enable_disable.enable);
+			"Failure to enable IPA offload (offload_type=%d, vdev_id=%d, enable=%d)",
+			ipa_offload_enable_disable.offload_type,
+			ipa_offload_enable_disable.vdev_id,
+			ipa_offload_enable_disable.enable);
 	} else {
 		/* Update the IPA offload status */
 		hdd_ipa->vdev_offload_enabled[session_id] =
@@ -2606,7 +2865,7 @@
 	msg = uc_op_work->msg;
 	uc_op_work->msg = NULL;
 	HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG,
-			"%s, posted msg %d", __func__, msg->op_code);
+			"posted msg %d",  msg->op_code);
 
 	hdd_ipa_uc_op_cb(msg, hdd_ipa->hdd_ctx);
 
@@ -2974,7 +3233,7 @@
 
 	hdd_ipa = (struct hdd_ipa_priv *)hdd_ctx->hdd_ipa;
 	if (false == hdd_ipa->ipa_pipes_down) {
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 			    "IPA pipes are not down yet, force shutdown");
 		hdd_ipa_uc_disable_pipes(hdd_ipa);
 	} else {
@@ -3853,13 +4112,13 @@
 	if (!adapter || adapter->magic != WLAN_HDD_ADAPTER_MAGIC) {
 		HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "Invalid adapter: 0x%pK",
 			    adapter);
-		HDD_IPA_INCREASE_INTERNAL_DROP_COUNT(hdd_ipa);
+		hdd_ipa->ipa_rx_internal_drop_count++;
 		kfree_skb(skb);
 		return;
 	}
 
 	if (cds_is_driver_unloading()) {
-		HDD_IPA_INCREASE_INTERNAL_DROP_COUNT(hdd_ipa);
+		hdd_ipa->ipa_rx_internal_drop_count++;
 		kfree_skb(skb);
 		return;
 	}
@@ -3878,7 +4137,7 @@
 	else
 		++adapter->hdd_stats.tx_rx_stats.rx_refused[cpu_index];
 
-	HDD_IPA_INCREASE_NET_SEND_COUNT(hdd_ipa);
+	hdd_ipa->ipa_rx_net_send_count++;
 }
 
 /**
@@ -3903,11 +4162,11 @@
 	/* Set IPA ownership for intra-BSS Tx packets to avoid skb_orphan */
 	qdf_nbuf_ipa_owned_set(skb);
 
-	/* WLAN subsystem is in suspend, put int queue */
+	/* WLAN subsystem is in suspend, put in queue */
 	if (hdd_ipa->suspended) {
 		qdf_spin_unlock_bh(&hdd_ipa->pm_lock);
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
-			"TX in SUSPEND PUT QUEUE");
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
+			"Tx in suspend, put in queue");
 		qdf_mem_set(skb->cb, sizeof(skb->cb), 0);
 		pm_tx_cb = (struct hdd_ipa_pm_tx_cb *)skb->cb;
 		pm_tx_cb->exception = true;
@@ -3921,11 +4180,10 @@
 		qdf_spin_unlock_bh(&hdd_ipa->pm_lock);
 		if (hdd_softap_hard_start_xmit(skb, adapter->dev)) {
 			HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
-			    "packet tx fail");
+			    "packet Tx fail");
 			hdd_ipa->stats.num_tx_fwd_err++;
 		} else {
 			hdd_ipa->stats.num_tx_fwd_ok++;
-			hdd_ipa->ipa_tx_forward++;
 		}
 	}
 }
@@ -3971,7 +4229,7 @@
 
 		if ((desc & FW_RX_DESC_DISCARD_M)) {
 			hdd_ipa_forward(hdd_ipa, adapter, skb);
-			hdd_ipa->ipa_rx_internel_drop_count++;
+			hdd_ipa->ipa_rx_internal_drop_count++;
 			hdd_ipa->ipa_rx_discard++;
 			ret = HDD_IPA_FORWARD_PKT_DISCARD;
 		} else {
@@ -3981,8 +4239,7 @@
 				hdd_ipa_forward(hdd_ipa, adapter, cloned_skb);
 			else
 				HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
-						"%s: tx skb alloc failed",
-						__func__);
+						"tx skb alloc failed");
 			ret = HDD_IPA_FORWARD_PKT_LOCAL_STACK;
 		}
 	}
@@ -4028,7 +4285,7 @@
 		if (0 != status) {
 			HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
 					"Invalid context: drop packet");
-			HDD_IPA_INCREASE_INTERNAL_DROP_COUNT(hdd_ipa);
+			hdd_ipa->ipa_rx_internal_drop_count++;
 			kfree_skb(skb);
 			return;
 		}
@@ -4050,7 +4307,7 @@
 			HDD_IPA_DBG_DUMP(QDF_TRACE_LEVEL_DEBUG,
 				"w2i -- skb",
 				skb->data, HDD_IPA_DBG_DUMP_RX_LEN);
-			HDD_IPA_INCREASE_INTERNAL_DROP_COUNT(hdd_ipa);
+			hdd_ipa->ipa_rx_internal_drop_count++;
 			kfree_skb(skb);
 			return;
 		}
@@ -4060,7 +4317,7 @@
 		if (!adapter) {
 			HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
 				    "IPA_RECEIVE: Adapter is NULL");
-			HDD_IPA_INCREASE_INTERNAL_DROP_COUNT(hdd_ipa);
+			hdd_ipa->ipa_rx_internal_drop_count++;
 			kfree_skb(skb);
 			return;
 		}
@@ -4244,7 +4501,6 @@
 	} else {
 		hdd_ipa->stats.num_tx_desc_error++;
 		qdf_spin_unlock_bh(&hdd_ipa->q_lock);
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR, "No free Tx desc!");
 		ipa_free_skb(ipa_tx_desc);
 		hdd_ipa_rm_try_release(hdd_ipa);
 		return;
@@ -4256,7 +4512,6 @@
 		(struct cdp_vdev *)iface_context->tl_context,
 		ipa_tx_desc->skb);
 	if (skb) {
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "TLSHIM tx fail");
 		qdf_nbuf_free(skb);
 		iface_context->stats.num_tx_err++;
 		return;
@@ -4315,8 +4570,8 @@
 		pm_tx_cb = (struct hdd_ipa_pm_tx_cb *)skb->cb;
 		dequeued++;
 		if (pm_tx_cb->exception) {
-			HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
-				"FLUSH EXCEPTION");
+			HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
+				"Flush Exception");
 			if (pm_tx_cb->adapter->dev)
 				hdd_softap_hard_start_xmit(skb,
 					  pm_tx_cb->adapter->dev);
@@ -4938,44 +5193,6 @@
 #endif
 
 /**
- * hdd_ipa_wlan_event_to_str() - convert IPA WLAN event to string
- * @event: IPA WLAN event to be converted to a string
- *
- * Return: ASCII string representing the IPA WLAN event
- */
-static inline char *hdd_ipa_wlan_event_to_str(enum ipa_wlan_event event)
-{
-	switch (event) {
-	case WLAN_CLIENT_CONNECT:
-		return "WLAN_CLIENT_CONNECT";
-	case WLAN_CLIENT_DISCONNECT:
-		return "WLAN_CLIENT_DISCONNECT";
-	case WLAN_CLIENT_POWER_SAVE_MODE:
-		return "WLAN_CLIENT_POWER_SAVE_MODE";
-	case WLAN_CLIENT_NORMAL_MODE:
-		return "WLAN_CLIENT_NORMAL_MODE";
-	case SW_ROUTING_ENABLE:
-		return "SW_ROUTING_ENABLE";
-	case SW_ROUTING_DISABLE:
-		return "SW_ROUTING_DISABLE";
-	case WLAN_AP_CONNECT:
-		return "WLAN_AP_CONNECT";
-	case WLAN_AP_DISCONNECT:
-		return "WLAN_AP_DISCONNECT";
-	case WLAN_STA_CONNECT:
-		return "WLAN_STA_CONNECT";
-	case WLAN_STA_DISCONNECT:
-		return "WLAN_STA_DISCONNECT";
-	case WLAN_CLIENT_CONNECT_EX:
-		return "WLAN_CLIENT_CONNECT_EX";
-
-	case IPA_WLAN_EVENT_MAX:
-	default:
-		return "UNKNOWN";
-	}
-}
-
-/**
  * hdd_to_ipa_wlan_event() - convert hdd_ipa_wlan_event to ipa_wlan_event
  * @hdd_ipa_event_type: HDD IPA WLAN event to be converted to an ipa_wlan_event
  *
@@ -5037,7 +5254,7 @@
 	struct ipa_wlan_msg_ex *msg_ex = NULL;
 	int ret;
 
-	HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO, "%s: %s evt, MAC: %pM sta_id: %d",
+	HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO, "%s: EVT: %s, MAC: %pM, sta_id: %d",
 		    adapter->dev->name, hdd_ipa_wlan_event_to_str(type),
 		    mac_addr, sta_id);
 
@@ -5066,7 +5283,7 @@
 		unsigned int pending_event_count;
 		struct ipa_uc_pending_event *pending_event = NULL;
 
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 			    "%s:IPA resource %s inprogress",
 			    hdd_ipa_wlan_event_to_str(type),
 			    hdd_ipa->resource_loading ?
@@ -5080,7 +5297,7 @@
 			 * If timed out, store the events separately and
 			 * handle them later.
 			 */
-			HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+			HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 				    "IPA resource %s timed out",
 				    hdd_ipa->resource_loading ?
 				    "load" : "unload");
@@ -5123,7 +5340,7 @@
 			}
 			return 0;
 		}
-		HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+		HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 			    "IPA resource %s completed",
 			    hdd_ipa->resource_loading ?
 			    "load" : "unload");
@@ -5328,7 +5545,7 @@
 
 			ret = hdd_ipa_uc_handle_first_con(hdd_ipa);
 			if (ret) {
-				HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
+				HDD_IPA_LOG(QDF_TRACE_LEVEL_INFO,
 					    "%s: handle 1st con ret %d",
 					    adapter->dev->name, ret);
 
@@ -5519,10 +5736,10 @@
 
 	pending_event_count = qdf_list_size(&hdd_ipa->pending_event);
 	HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG,
-		"%s, Pending Event Count %d", __func__, pending_event_count);
+		"Pending Event Count %d",  pending_event_count);
 	if (!pending_event_count) {
 		HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG,
-			"%s, No Pending Event", __func__);
+			"No Pending Event");
 		return;
 	}