Kiet Lam | 54ae80e | 2014-03-07 15:19:39 -0800 | [diff] [blame] | 1 | /* |
Sreelakshmi Konamki | d8784d9 | 2016-04-14 14:59:13 +0530 | [diff] [blame] | 2 | * Copyright (c) 2014-2016 The Linux Foundation. All rights reserved. |
Kiet Lam | 54ae80e | 2014-03-07 15:19:39 -0800 | [diff] [blame] | 3 | * |
| 4 | * Previously licensed under the ISC license by Qualcomm Atheros, Inc. |
| 5 | * |
| 6 | * |
| 7 | * Permission to use, copy, modify, and/or distribute this software for |
| 8 | * any purpose with or without fee is hereby granted, provided that the |
| 9 | * above copyright notice and this permission notice appear in all |
| 10 | * copies. |
| 11 | * |
| 12 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
| 13 | * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
| 14 | * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
| 15 | * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
| 16 | * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
| 17 | * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
| 18 | * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| 19 | * PERFORMANCE OF THIS SOFTWARE. |
| 20 | */ |
Sushant Kaushik | 4b7cb30 | 2014-01-06 17:45:01 +0530 | [diff] [blame] | 21 | |
Kiet Lam | 54ae80e | 2014-03-07 15:19:39 -0800 | [diff] [blame] | 22 | /* |
| 23 | * This file was originally distributed by Qualcomm Atheros, Inc. |
| 24 | * under proprietary terms before Copyright ownership was assigned |
| 25 | * to the Linux Foundation. |
| 26 | */ |
Sushant Kaushik | 4b7cb30 | 2014-01-06 17:45:01 +0530 | [diff] [blame] | 27 | |
| 28 | #include "vos_trace.h" |
| 29 | #include "vos_types.h" |
| 30 | #include "wlan_hdd_trace.h" |
| 31 | #include "wlan_hdd_main.h" |
| 32 | |
| 33 | static tANI_U8* hddTraceGetEventString(tANI_U32 code) |
| 34 | { |
| 35 | switch(code) |
| 36 | { |
| 37 | CASE_RETURN_STRING(TRACE_CODE_HDD_OPEN_REQUEST); |
| 38 | CASE_RETURN_STRING(TRACE_CODE_HDD_STOP_REQUEST); |
| 39 | CASE_RETURN_STRING(TRACE_CODE_HDD_TX_TIMEOUT); |
| 40 | CASE_RETURN_STRING(TRACE_CODE_HDD_P2P_DEV_ADDR_IOCTL); |
| 41 | CASE_RETURN_STRING(TRACE_CODE_HDD_SETSUSPENDMODE_IOCTL); |
| 42 | CASE_RETURN_STRING(TRACE_CODE_HDD_SETROAMTRIGGER_IOCTL); |
| 43 | CASE_RETURN_STRING(TRACE_CODE_HDD_GETROAMTRIGGER_IOCTL); |
| 44 | CASE_RETURN_STRING(TRACE_CODE_HDD_SETROAMSCANPERIOD_IOCTL); |
| 45 | CASE_RETURN_STRING(TRACE_CODE_HDD_GETROAMSCANPERIOD_IOCTL); |
| 46 | CASE_RETURN_STRING(TRACE_CODE_HDD_SETROAMDELTA_IOCTL); |
| 47 | CASE_RETURN_STRING(TRACE_CODE_HDD_GETROAMDELTA_IOCTL); |
| 48 | CASE_RETURN_STRING(TRACE_CODE_HDD_GETBAND_IOCTL); |
| 49 | CASE_RETURN_STRING(TRACE_CODE_HDD_GETCOUNTRYREV_IOCTL); |
| 50 | CASE_RETURN_STRING(TRACE_CODE_HDD_SETROAMSCANCHANNELS_IOCTL); |
| 51 | CASE_RETURN_STRING(TRACE_CODE_HDD_GETROAMSCANCHANNELS_IOCTL); |
| 52 | CASE_RETURN_STRING(TRACE_CODE_HDD_HOSTAPD_OPEN_REQUEST); |
| 53 | CASE_RETURN_STRING(TRACE_CODE_HDD_HOSTAPD_STOP_REQUEST); |
| 54 | CASE_RETURN_STRING(TRACE_CODE_HDD_HOSTAPD_UNINIT_REQUEST); |
| 55 | CASE_RETURN_STRING(TRACE_CODE_HDD_SOFTAP_TX_TIMEOUT); |
| 56 | CASE_RETURN_STRING(TRACE_CODE_HDD_HOSTAPD_SET_MAC_ADDR); |
| 57 | CASE_RETURN_STRING(TRACE_CODE_HDD_HOSTAPD_P2P_SET_NOA_IOCTL); |
| 58 | CASE_RETURN_STRING(TRACE_CODE_HDD_HOSTAPD_P2P_SET_PS_IOCTL); |
| 59 | CASE_RETURN_STRING(TRACE_CODE_HDD_HOSTAPD_SET_SAP_CHANNEL_LIST_IOCTL); |
| 60 | CASE_RETURN_STRING(TRACE_CODE_HDD_ADD_VIRTUAL_INTF); |
| 61 | CASE_RETURN_STRING(TRACE_CODE_HDD_DEL_VIRTUAL_INTF); |
| 62 | CASE_RETURN_STRING(TRACE_CODE_HDD_CHANGE_VIRTUAL_INTF); |
| 63 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_START_AP); |
| 64 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_CHANGE_BEACON); |
| 65 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_STOP_AP); |
| 66 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_CHANGE_BSS); |
| 67 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_ADD_KEY); |
| 68 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_GET_KEY ); |
| 69 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_DEFAULT_KEY); |
| 70 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_CONNECT); |
| 71 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_DISCONNECT); |
| 72 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_JOIN_IBSS); |
| 73 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_LEAVE_IBSS); |
| 74 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_WIPHY_PARAMS); |
| 75 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_TXPOWER); |
| 76 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_GET_TXPOWER); |
Konamki, Sreelakshmi | 7b464be | 2015-07-14 12:17:01 +0530 | [diff] [blame] | 77 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SCAN); |
| 78 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SCHED_SCAN_START); |
| 79 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SCHED_SCAN_STOP); |
Konamki, Sreelakshmi | 824f93e | 2015-07-31 12:55:48 +0530 | [diff] [blame] | 80 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_CHANNEL); |
| 81 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_ADD_BEACON); |
| 82 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_BEACON); |
| 83 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_CHANGE_IFACE); |
| 84 | CASE_RETURN_STRING(TRACE_CODE_HDD_CHANGE_STATION); |
| 85 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_UPDATE_BSS); |
Sushant Kaushik | 4b7cb30 | 2014-01-06 17:45:01 +0530 | [diff] [blame] | 86 | CASE_RETURN_STRING(TRACE_CODE_HDD_REMAIN_ON_CHANNEL); |
| 87 | CASE_RETURN_STRING(TRACE_CODE_HDD_REMAINCHANREADYHANDLER); |
| 88 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_CANCEL_REMAIN_ON_CHANNEL); |
| 89 | CASE_RETURN_STRING(TRACE_CODE_HDD_ACTION); |
| 90 | CASE_RETURN_STRING(TRACE_CODE_HDD_MGMT_TX_CANCEL_WAIT); |
| 91 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_GET_STA); |
| 92 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_POWER_MGMT); |
| 93 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_DEL_STA); |
| 94 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_ADD_STA); |
| 95 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_PMKSA); |
Konamki, Sreelakshmi | 7b464be | 2015-07-14 12:17:01 +0530 | [diff] [blame] | 96 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_DEL_PMKSA); |
Sushant Kaushik | 4b7cb30 | 2014-01-06 17:45:01 +0530 | [diff] [blame] | 97 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_UPDATE_FT_IES); |
| 98 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_TDLS_MGMT); |
Konamki, Sreelakshmi | 824f93e | 2015-07-31 12:55:48 +0530 | [diff] [blame] | 99 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_TDLS_OPER); |
| 100 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_REKEY_DATA); |
Konamki, Sreelakshmi | 7b464be | 2015-07-14 12:17:01 +0530 | [diff] [blame] | 101 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_RESUME_WLAN); |
| 102 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SUSPEND_WLAN); |
| 103 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_SET_MAC_ACL); |
| 104 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_TESTMODE); |
| 105 | CASE_RETURN_STRING(TRACE_CODE_HDD_CFG80211_DUMP_SURVEY); |
Sushant Kaushik | 4b7cb30 | 2014-01-06 17:45:01 +0530 | [diff] [blame] | 106 | CASE_RETURN_STRING(TRACE_CODE_HDD_UNSUPPORTED_IOCTL); |
| 107 | CASE_RETURN_STRING(TRACE_CODE_HDD_SETROAMSCANCHANNELMINTIME_IOCTL); |
| 108 | CASE_RETURN_STRING(TRACE_CODE_HDD_GETROAMSCANCHANNELMINTIME_IOCTL); |
Konamki, Sreelakshmi | 824f93e | 2015-07-31 12:55:48 +0530 | [diff] [blame] | 109 | CASE_RETURN_STRING(TRACE_CODE_HDD_STOP_NETDEV); |
| 110 | CASE_RETURN_STRING(TRACE_CODE_HDD_WAKE_NETDEV); |
| 111 | CASE_RETURN_STRING(TRACE_CODE_HDD_FLUSH_TX_QUEUES); |
Sushant Kaushik | 4b7cb30 | 2014-01-06 17:45:01 +0530 | [diff] [blame] | 112 | default: |
| 113 | return ("UNKNOWN"); |
| 114 | break; |
| 115 | } |
| 116 | } |
| 117 | |
| 118 | void hddTraceDump(void *pMac, tpvosTraceRecord pRecord, tANI_U16 recIndex) |
| 119 | { |
Konamki, Sreelakshmi | b9c4571 | 2015-07-29 11:48:19 +0530 | [diff] [blame] | 120 | if (TRACE_CODE_HDD_RX_SME_MSG == pRecord->code) |
| 121 | { |
Abhishek Singh | c7d6fbc | 2015-10-19 12:14:41 +0530 | [diff] [blame] | 122 | hddLog(LOG1, "%04d %012u S%d %-14s %-30s(0x%x)", |
Konamki, Sreelakshmi | b9c4571 | 2015-07-29 11:48:19 +0530 | [diff] [blame] | 123 | recIndex, pRecord->time, pRecord->session, "RX SME MSG:", |
| 124 | get_eRoamCmdStatus_str(pRecord->data), pRecord->data); |
| 125 | } |
| 126 | else |
| 127 | { |
Abhishek Singh | c7d6fbc | 2015-10-19 12:14:41 +0530 | [diff] [blame] | 128 | hddLog(LOG1, "%04d %012u S%d %-14s %-30s(0x%x)", |
Konamki, Sreelakshmi | b9c4571 | 2015-07-29 11:48:19 +0530 | [diff] [blame] | 129 | recIndex, pRecord->time, pRecord->session, "HDD Event:", |
| 130 | hddTraceGetEventString(pRecord->code), pRecord->data); |
| 131 | } |
Sushant Kaushik | 4b7cb30 | 2014-01-06 17:45:01 +0530 | [diff] [blame] | 132 | } |
| 133 | |
| 134 | void hddTraceInit() |
| 135 | { |
| 136 | vosTraceRegister(VOS_MODULE_ID_HDD, (tpvosTraceCb)&hddTraceDump); |
| 137 | } |
Padma, Santhosh Kumar | 9093b20 | 2015-07-21 15:37:38 +0530 | [diff] [blame] | 138 | |
| 139 | /** |
| 140 | * hdd_state_info_dump() - prints state information of hdd layer |
| 141 | */ |
| 142 | static void hdd_state_info_dump(void) |
| 143 | { |
| 144 | v_CONTEXT_t vos_ctx_ptr; |
| 145 | hdd_context_t *hdd_ctx_ptr = NULL; |
| 146 | hdd_adapter_list_node_t *adapter_node = NULL, *next = NULL; |
| 147 | VOS_STATUS status; |
| 148 | hdd_station_ctx_t *hdd_sta_ctx = NULL; |
| 149 | hdd_adapter_t *adapter =NULL; |
| 150 | |
| 151 | /* get the global voss context */ |
| 152 | vos_ctx_ptr = vos_get_global_context(VOS_MODULE_ID_VOSS, NULL); |
| 153 | |
Sreelakshmi Konamki | d8784d9 | 2016-04-14 14:59:13 +0530 | [diff] [blame] | 154 | if (!vos_ctx_ptr) { |
| 155 | hddLog(LOGE, FL("Invalid Global VOSS Context")); |
Padma, Santhosh Kumar | 9093b20 | 2015-07-21 15:37:38 +0530 | [diff] [blame] | 156 | VOS_ASSERT(0); |
| 157 | return; |
| 158 | } |
Sreelakshmi Konamki | d8784d9 | 2016-04-14 14:59:13 +0530 | [diff] [blame] | 159 | hdd_ctx_ptr = vos_get_context(VOS_MODULE_ID_HDD, vos_ctx_ptr); |
| 160 | if (!hdd_ctx_ptr) { |
| 161 | hddLog(LOGE, FL("HDD context is Null")); |
| 162 | return; |
| 163 | } |
Padma, Santhosh Kumar | 9093b20 | 2015-07-21 15:37:38 +0530 | [diff] [blame] | 164 | |
| 165 | hddLog(LOG1, |
| 166 | FL("mScanPending %d isWlanSuspended %d disable_dfs_flag %d"), |
| 167 | hdd_ctx_ptr->scan_info.mScanPending, |
| 168 | hdd_ctx_ptr->isWlanSuspended, hdd_ctx_ptr->disable_dfs_flag); |
| 169 | |
| 170 | status = hdd_get_front_adapter(hdd_ctx_ptr, &adapter_node); |
| 171 | |
| 172 | while (NULL != adapter_node && VOS_STATUS_SUCCESS == status) { |
| 173 | adapter = adapter_node->pAdapter; |
| 174 | if (adapter->dev) |
| 175 | hddLog(LOG1, FL("device name: %s"), adapter->dev->name); |
| 176 | switch (adapter->device_mode) { |
| 177 | case WLAN_HDD_INFRA_STATION: |
| 178 | case WLAN_HDD_P2P_CLIENT: |
| 179 | hdd_sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); |
| 180 | hddLog(LOG1, FL("connState: %d device_mode: %d"), |
| 181 | hdd_sta_ctx->conn_info.connState, adapter->device_mode); |
| 182 | break; |
| 183 | |
| 184 | default: |
| 185 | break; |
| 186 | } |
| 187 | status = hdd_get_next_adapter(hdd_ctx_ptr, adapter_node, &next); |
| 188 | adapter_node = next; |
| 189 | } |
| 190 | } |
| 191 | |
| 192 | /** |
| 193 | * hdd_register_debug_callback() - registration function for hdd layer |
| 194 | * to print hdd state information |
| 195 | */ |
| 196 | void hdd_register_debug_callback() |
| 197 | { |
| 198 | vos_register_debug_callback(VOS_MODULE_ID_HDD, &hdd_state_info_dump); |
| 199 | } |