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