1 /* 2 * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /* 21 * DOC: smeTrace.c 22 * Implementation for trace related APIs 23 * 24 * Author Kiran Kumar Reddy CH L V 25 */ 26 #include "ani_global.h" /* for struct mac_context **/ 27 #include "mac_trace.h" 28 #include "sme_trace.h" 29 #include "sme_internal.h" 30 #ifndef SME_TRACE_RECORD 31 void sme_trace_init(struct mac_context *mac) 32 { 33 34 } 35 #endif 36 #ifdef SME_TRACE_RECORD 37 38 static uint8_t *sme_trace_get_rx_msg_string(uint32_t code) 39 { 40 switch (code) { 41 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_SCAN_REQ); 42 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_SCAN_GET_RESULTS); 43 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_CONNECT); 44 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_SET_11DINFO); 45 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_GET_SOFTAP_DOMAIN); 46 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_SET_REGINFO); 47 CASE_RETURN_STRING 48 (TRACE_CODE_SME_RX_HDD_MSG_UPDATE_CHANNEL_CONFIG); 49 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_UPDATE_CONFIG); 50 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_HDDREADYIND); 51 CASE_RETURN_STRING 52 (TRACE_CODE_SME_RX_HDD_MSG_SCAN_FLUSH_RESULTS); 53 CASE_RETURN_STRING 54 (TRACE_CODE_SME_RX_HDD_MSG_SCAN_FLUSH_P2PRESULTS); 55 CASE_RETURN_STRING 56 (TRACE_CODE_SME_RX_HDD_MSG_SCAN_RESULT_GETFIRST); 57 CASE_RETURN_STRING 58 (TRACE_CODE_SME_RX_HDD_MSG_SCAN_RESULT_GETNEXT); 59 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_SCAN_RESULT_PURGE); 60 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ROAM_REASSOC); 61 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ROAM_DISCONNECT); 62 CASE_RETURN_STRING 63 (TRACE_CODE_SME_RX_HDD_ROAM_GET_CONNECTPROFILE); 64 CASE_RETURN_STRING 65 (TRACE_CODE_SME_RX_HDD_ROAM_FREE_CONNECTPROFILE); 66 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ROAM_SET_PMKIDCACHE); 67 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ROAM_DEL_PMKIDCACHE); 68 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ROAM_GET_PMKIDCACHE); 69 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_GET_CONFIGPARAM); 70 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_GET_MODPROFFIELDS); 71 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_CONFIG_PWRSAVE); 72 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_GET_CONFIG_PWRSAVE); 73 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ENABLE_PWRSAVE); 74 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_DISABLE_PWRSAVE); 75 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SIGNAL_POWER_EVENT); 76 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_START_AUTO_BMPSTIMER); 77 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_STOP_AUTO_BMPSTIMER); 78 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_IS_PWRSAVE_ENABLED); 79 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_REQUEST_FULLPOWER); 80 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_REQUEST_BMPS); 81 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_DHCP_FLAG); 82 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_REQUEST_STANDBY); 83 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_WOWL_ADDBCAST_PATTERN); 84 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_WOWL_DELBCAST_PATTERN); 85 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ENTER_WOWL); 86 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_EXIT_WOWL); 87 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_KEY); 88 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_REMOVE_KEY); 89 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_GET_CNTRYCODE); 90 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_CNTRYCODE); 91 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_CFGPRIVACY); 92 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_NEIGHBOR_REPORTREQ); 93 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_DBG_READREG); 94 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_DBG_WRITEREG); 95 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_DBG_READMEM); 96 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_DBG_WRITEMEM); 97 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_OPEN_SESSION); 98 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CLOSE_SESSION); 99 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_HOSTOFFLOAD); 100 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_GTKOFFLOAD); 101 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_GET_GTKOFFLOAD); 102 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ABORT_MACSCAN); 103 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_REGISTER_MGMTFR); 104 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_DEREGISTER_MGMTFR); 105 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_REMAIN_ONCHAN); 106 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SEND_ACTION); 107 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CANCEL_REMAIN_ONCHAN); 108 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CONFIG_RXPFIL); 109 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CONFIG_SUSPENDIND); 110 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CONFIG_RESUMEREQ); 111 #ifdef WLAN_FEATURE_EXTWOW_SUPPORT 112 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CONFIG_EXTWOW); 113 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CONFIG_APP_TYPE1); 114 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CONFIG_APP_TYPE2); 115 #endif 116 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_MAXTXPOW); 117 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_TXPOW); 118 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_TMLEVEL); 119 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CAPS_EXCH); 120 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_DISABLE_CAP); 121 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_GET_DEFCCNV); 122 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_GET_CURCC); 123 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_RESET_PW5G); 124 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_RP5G); 125 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_ROAMIBAND); 126 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_RSSIDIFF); 127 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_IMMRSSIDIFF); 128 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_FTENABLED); 129 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_WESMODE); 130 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_SET_SCANCTRL); 131 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_UPDATE_P2P_IE); 132 CASE_RETURN_STRING 133 (TRACE_CODE_SME_RX_HDD_UPDATE_ROAM_SCAN_N_PROBES); 134 CASE_RETURN_STRING 135 (TRACE_CODE_SME_RX_HDD_UPDATE_ROAM_SCAN_HOME_AWAY_TIME); 136 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_STORE_JOIN_REQ); 137 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_CLEAR_JOIN_REQ); 138 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_ISSUE_JOIN_REQ); 139 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_MSG_DEAUTH_STA); 140 #ifdef FEATURE_WLAN_TDLS 141 CASE_RETURN_STRING 142 (TRACE_CODE_SME_RX_HDD_TDLS_LINK_ESTABLISH_PARAM); 143 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_TDLS_CHAN_SWITCH_REQ); 144 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_TDLS_SEND_MGMT_FRAME); 145 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_TDLS_CHANGE_PEER_STA); 146 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_TDLS_ADD_PEER_STA); 147 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_TDLS_DEL_PEER_STA); 148 #endif 149 CASE_RETURN_STRING(TRACE_CODE_SME_RX_HDD_PREF_NET_LIST); 150 default: 151 return "UNKNOWN"; 152 } 153 } 154 155 static uint8_t *sme_trace_get_command_string(uint32_t command) 156 { 157 switch (command) { 158 CASE_RETURN_STRING(eSmeNoCommand); 159 CASE_RETURN_STRING(eSmeCsrCommandMask); 160 CASE_RETURN_STRING(eSmeCommandRoam); 161 CASE_RETURN_STRING(eSmeCommandWmStatusChange); 162 CASE_RETURN_STRING(eSmeQosCommandMask); 163 CASE_RETURN_STRING(eSmeCommandAddTs); 164 CASE_RETURN_STRING(eSmeCommandDelTs); 165 CASE_RETURN_STRING(e_sme_command_set_hw_mode); 166 CASE_RETURN_STRING(e_sme_command_nss_update); 167 CASE_RETURN_STRING(e_sme_command_set_dual_mac_config); 168 CASE_RETURN_STRING(e_sme_command_set_antenna_mode); 169 CASE_RETURN_STRING(e_sme_command_sap_ch_width_update); 170 default: 171 return "UNKNOWN"; 172 } 173 } 174 175 static void sme_trace_dump(void *mac_ctx, tp_qdf_trace_record record, 176 uint16_t rec_index) 177 { 178 switch (record->code) { 179 case TRACE_CODE_SME_COMMAND: 180 sme_nofl_debug("%04d %012llu %s S%d %-14s %-30s(0x%x)", 181 rec_index, record->qtime, record->time, 182 record->session, "SME COMMAND:", 183 sme_trace_get_command_string(record->data), 184 record->data); 185 break; 186 case TRACE_CODE_SME_TX_WMA_MSG: 187 sme_nofl_debug("%04d %012llu %s S%d %-14s %-30s(0x%x)", 188 rec_index, record->qtime, record->time, 189 record->session, "TX WMA Msg:", 190 mac_trace_get_wma_msg_string((uint16_t)record->data), 191 record->data); 192 break; 193 case TRACE_CODE_SME_RX_WMA_MSG: 194 sme_nofl_debug("%04d %012llu %s S%d %-14s %-30s(0x%x)", 195 rec_index, record->qtime, record->time, record->session, 196 "RX WMA Msg:", 197 mac_trace_get_sme_msg_string((uint16_t)record->data), 198 record->data); 199 break; 200 default: 201 sme_nofl_debug("%04d %012llu %s S%d %-14s %-30s(0x%x)", 202 rec_index, record->qtime, record->time, record->session, 203 "RX HDD MSG:", 204 sme_trace_get_rx_msg_string(record->code), 205 record->data); 206 break; 207 } 208 } 209 210 void sme_trace_init(struct mac_context *mac) 211 { 212 qdf_trace_register(QDF_MODULE_ID_SME, &sme_trace_dump); 213 } 214 #endif 215