diff options
| author | Himanshu Agarwal <himanaga@qti.qualcomm.com> | 2016-04-11 22:09:22 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-04-22 10:23:13 +0530 |
| commit | 0b51a767c817e4779651f621701350bf73ddf2bb (patch) | |
| tree | 54abb804442b156306e7322c9a4bbeb356fde137 | |
| parent | 89c770ddd30c4fa0dcfd5bdf61c5191eb811bfb4 (diff) | |
qcacld-2.0: Add logic to log pause/unpause time
Add logic to calculate pause and unpause time for
network queues to debug data path issues.
Change-Id: I50c3f83f3bde9e3f2e7c7e4c003e967f00590049
CRs-Fixed: 988801
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_main.h | 5 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_hostapd.c | 2 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 30 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_tx_rx.c | 48 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h | 4 |
5 files changed, 77 insertions, 12 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h index c038b7dbff45..10dfacec8248 100644 --- a/CORE/HDD/inc/wlan_hdd_main.h +++ b/CORE/HDD/inc/wlan_hdd_main.h @@ -1218,6 +1218,11 @@ struct hdd_adapter_s uint32_t pause_map; spinlock_t pause_map_lock; + adf_os_time_t start_time; + adf_os_time_t last_time; + adf_os_time_t total_pause_time; + adf_os_time_t total_unpause_time; + uint8_t history_index; struct hdd_netif_queue_history queue_oper_history[WLAN_HDD_MAX_HISTORY_ENTRY]; diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c index af22e5d91f19..9a36dd29b738 100644 --- a/CORE/HDD/src/wlan_hdd_hostapd.c +++ b/CORE/HDD/src/wlan_hdd_hostapd.c @@ -7135,6 +7135,8 @@ hdd_adapter_t* hdd_wlan_create_ap_dev(hdd_context_t *pHddCtx, spin_lock_init(&pHostapdAdapter->pause_map_lock); pHostapdAdapter->last_tx_jiffies = jiffies; pHostapdAdapter->bug_report_count = 0; + pHostapdAdapter->start_time = + pHostapdAdapter->last_time = vos_system_ticks(); } return pHostapdAdapter; } diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 2944b6ac054a..fd40d77bb854 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -10140,6 +10140,7 @@ static hdd_adapter_t* hdd_alloc_station_adapter(hdd_context_t *pHddCtx, spin_lock_init(&pAdapter->pause_map_lock); pAdapter->last_tx_jiffies = jiffies; pAdapter->bug_report_count = 0; + pAdapter->start_time = pAdapter->last_time = vos_system_ticks(); } return pAdapter; @@ -13729,16 +13730,30 @@ static inline void wlan_hdd_display_adapter_netif_queue_history(hdd_adapter_t *adapter) { int i; + adf_os_time_t total, pause, unpause, curr_time; if (!adapter) return; - - hddLog(LOGE, FL("Session_id %d device mode %d current index %d"), - adapter->sessionId, adapter->device_mode, - adapter->history_index); + hddLog(LOGE, FL("Session_id %d device mode %d"), + adapter->sessionId, adapter->device_mode); hddLog(LOGE, "Netif queue operation statistics:"); hddLog(LOGE, "Current pause_map value %x", adapter->pause_map); + curr_time = vos_system_ticks(); + total = curr_time - adapter->start_time; + if (adapter->pause_map) { + pause = adapter->total_pause_time + + curr_time - adapter->last_time; + unpause = adapter->total_unpause_time; + } else { + unpause = adapter->total_unpause_time + + curr_time - adapter->last_time; + pause = adapter->total_pause_time; + } + hddLog(LOGE, "Total: %ums Pause: %ums Unpause: %ums", + vos_system_ticks_to_msecs(total), + vos_system_ticks_to_msecs(pause), + vos_system_ticks_to_msecs(unpause)); hddLog(LOGE, " reason_type: pause_cnt: unpause_cnt"); for (i = 0; i < WLAN_REASON_TYPE_MAX; i++) { @@ -13748,7 +13763,8 @@ wlan_hdd_display_adapter_netif_queue_history(hdd_adapter_t *adapter) adapter->queue_oper_stats[i].unpause_count); } - hddLog(LOGE, "Netif queue operation history:"); + hddLog(LOGE, "Netif queue operation history: current index %d", + adapter->history_index); hddLog(LOGE, "index: time: action_type: reason_type: pause_map"); for (i = 0; i < WLAN_HDD_MAX_HISTORY_ENTRY; i++) { @@ -13808,6 +13824,10 @@ void wlan_hdd_clear_netif_queue_history(hdd_context_t *hdd_ctx) vos_mem_zero(adapter->queue_oper_history, sizeof(adapter->queue_oper_history)); + adapter->history_index = 0; + adapter->start_time = adapter->last_time = vos_system_ticks(); + adapter->total_pause_time = 0; + adapter->total_unpause_time = 0; status = hdd_get_next_adapter(hdd_ctx, adapter_node, &next); adapter_node = next; } diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c index 09cbd4b1039f..66ab1d251c1a 100644 --- a/CORE/HDD/src/wlan_hdd_tx_rx.c +++ b/CORE/HDD/src/wlan_hdd_tx_rx.c @@ -1457,7 +1457,7 @@ const char *hdd_reason_type_to_string(enum netif_reason_type reason) CASE_RETURN_STRING(WLAN_CONTROL_PATH); CASE_RETURN_STRING(WLAN_DATA_FLOW_CONTROL); default: - return "Unknown"; + return "Invalid"; } } @@ -1483,7 +1483,7 @@ const char *hdd_action_type_to_string(enum netif_action_type action) CASE_RETURN_STRING(WLAN_NETIF_CARRIER_ON); CASE_RETURN_STRING(WLAN_NETIF_CARRIER_OFF); default: - return "Unknown"; + return "Invalid"; } } @@ -1535,6 +1535,34 @@ static void wlan_hdd_update_txq_timestamp(struct net_device *dev) } /** + * wlan_hdd_update_unpause_time() - update unpause time + * @adapter: hdd adapter handle + * + * Return: none + */ +static void wlan_hdd_update_unpause_time(hdd_adapter_t *adapter) +{ + adf_os_time_t curr_time = vos_system_ticks(); + + adapter->total_unpause_time += curr_time - adapter->last_time; + adapter->last_time = curr_time; +} + +/** + * wlan_hdd_update_pause_time() - update pause time + * @adapter: hdd adapter handle + * + * Return: none + */ +static void wlan_hdd_update_pause_time(hdd_adapter_t *adapter) +{ + adf_os_time_t curr_time = vos_system_ticks(); + + adapter->total_pause_time += curr_time - adapter->last_time; + adapter->last_time = curr_time; +} + +/** * wlan_hdd_netif_queue_control() - Use for netif_queue related actions * @adapter: adapter handle * @action: action type @@ -1569,6 +1597,7 @@ void wlan_hdd_netif_queue_control(hdd_adapter_t *adapter, if (!adapter->pause_map) { netif_tx_stop_all_queues(adapter->dev); wlan_hdd_update_txq_timestamp(adapter->dev); + wlan_hdd_update_unpause_time(adapter); } adapter->pause_map |= (1 << reason); spin_unlock_bh(&adapter->pause_map_lock); @@ -1577,16 +1606,20 @@ void wlan_hdd_netif_queue_control(hdd_adapter_t *adapter, case WLAN_START_ALL_NETIF_QUEUE: spin_lock_bh(&adapter->pause_map_lock); adapter->pause_map &= ~(1 << reason); - if (!adapter->pause_map) + if (!adapter->pause_map) { netif_tx_start_all_queues(adapter->dev); + wlan_hdd_update_pause_time(adapter); + } spin_unlock_bh(&adapter->pause_map_lock); break; case WLAN_WAKE_ALL_NETIF_QUEUE: spin_lock_bh(&adapter->pause_map_lock); adapter->pause_map &= ~(1 << reason); - if (!adapter->pause_map) + if (!adapter->pause_map) { netif_tx_wake_all_queues(adapter->dev); + wlan_hdd_update_pause_time(adapter); + } spin_unlock_bh(&adapter->pause_map_lock); break; @@ -1595,6 +1628,7 @@ void wlan_hdd_netif_queue_control(hdd_adapter_t *adapter, if (!adapter->pause_map) { netif_tx_stop_all_queues(adapter->dev); wlan_hdd_update_txq_timestamp(adapter->dev); + wlan_hdd_update_unpause_time(adapter); } adapter->pause_map |= (1 << reason); netif_carrier_off(adapter->dev); @@ -1605,8 +1639,10 @@ void wlan_hdd_netif_queue_control(hdd_adapter_t *adapter, spin_lock_bh(&adapter->pause_map_lock); netif_carrier_on(adapter->dev); adapter->pause_map &= ~(1 << reason); - if (!adapter->pause_map) + if (!adapter->pause_map) { netif_tx_start_all_queues(adapter->dev); + wlan_hdd_update_pause_time(adapter); + } spin_unlock_bh(&adapter->pause_map_lock); break; @@ -1615,6 +1651,7 @@ void wlan_hdd_netif_queue_control(hdd_adapter_t *adapter, if (!adapter->pause_map) { netif_tx_disable(adapter->dev); wlan_hdd_update_txq_timestamp(adapter->dev); + wlan_hdd_update_unpause_time(adapter); } adapter->pause_map |= (1 << reason); spin_unlock_bh(&adapter->pause_map_lock); @@ -1625,6 +1662,7 @@ void wlan_hdd_netif_queue_control(hdd_adapter_t *adapter, if (!adapter->pause_map) { netif_tx_disable(adapter->dev); wlan_hdd_update_txq_timestamp(adapter->dev); + wlan_hdd_update_unpause_time(adapter); } adapter->pause_map |= (1 << reason); netif_carrier_off(adapter->dev); diff --git a/CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h b/CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h index 69d8b4d5b9f1..5ee07f95bc05 100644 --- a/CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h +++ b/CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h @@ -80,7 +80,7 @@ enum wlan_op_mode { * @WLAN_NETIF_CARRIER_OFF: off carrier */ enum netif_action_type { - WLAN_STOP_ALL_NETIF_QUEUE, + WLAN_STOP_ALL_NETIF_QUEUE = 1, WLAN_START_ALL_NETIF_QUEUE, WLAN_WAKE_ALL_NETIF_QUEUE, WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER, @@ -99,7 +99,7 @@ enum netif_action_type { * @WLAN_REASON_TYPE_MAX: max netif reason */ enum netif_reason_type { - WLAN_CONTROL_PATH, + WLAN_CONTROL_PATH = 1, WLAN_DATA_FLOW_CONTROL, WLAN_REASON_TYPE_MAX, }; |
