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;
}