xref: /wlan-driver/qca-wifi-host-cmn/utils/fwlog/dbglog_host.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2011, 2014-2020 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022 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 #ifndef _DBGLOG_HOST_H_
21*5113495bSYour Name #define _DBGLOG_HOST_H_
22*5113495bSYour Name 
23*5113495bSYour Name #ifdef __cplusplus
24*5113495bSYour Name extern "C" {
25*5113495bSYour Name #endif
26*5113495bSYour Name 
27*5113495bSYour Name #include "dbglog_common.h"
28*5113495bSYour Name #include "wmi_unified_param.h"
29*5113495bSYour Name 
30*5113495bSYour Name #define DIAG_FWID_OFFSET            24
31*5113495bSYour Name #define DIAG_FWID_MASK              0xFF000000  /* Bit 24-31 */
32*5113495bSYour Name 
33*5113495bSYour Name #define DIAG_TIMESTAMP_OFFSET       0
34*5113495bSYour Name #define DIAG_TIMESTAMP_MASK         0x00FFFFFF  /* Bit 0-23 */
35*5113495bSYour Name 
36*5113495bSYour Name #define DIAG_ID_OFFSET              16
37*5113495bSYour Name #define DIAG_ID_MASK                0xFFFF0000  /* Bit 16-31 */
38*5113495bSYour Name 
39*5113495bSYour Name #define DIAG_VDEVID_OFFSET          11
40*5113495bSYour Name #define DIAG_VDEVID_MASK            0x0000F800  /* Bit 11-15 */
41*5113495bSYour Name #define DIAG_VDEVID_NUM_MAX         16
42*5113495bSYour Name 
43*5113495bSYour Name #define DIAG_VDEVLEVEL_OFFSET       8
44*5113495bSYour Name #define DIAG_VDEVLEVEL_MASK         0x00000700  /* Bit 8-10 */
45*5113495bSYour Name 
46*5113495bSYour Name #define DIAG_PAYLEN_OFFSET          0
47*5113495bSYour Name #define DIAG_PAYLEN_MASK            0x000000FF  /* Bit 0-7 */
48*5113495bSYour Name 
49*5113495bSYour Name #define DIAG_PAYLEN_OFFSET16        0
50*5113495bSYour Name #define DIAG_PAYLEN_MASK16          0x0000FFFF  /* Bit 0-16 */
51*5113495bSYour Name 
52*5113495bSYour Name #define DIAG_GET_TYPE(arg) \
53*5113495bSYour Name 	((arg & DIAG_FWID_MASK) >> DIAG_FWID_OFFSET)
54*5113495bSYour Name 
55*5113495bSYour Name #define DIAG_GET_TIME_STAMP(arg) \
56*5113495bSYour Name 	((arg & DIAG_TIMESTAMP_MASK) >> DIAG_TIMESTAMP_OFFSET)
57*5113495bSYour Name 
58*5113495bSYour Name #define DIAG_GET_ID(arg) \
59*5113495bSYour Name 	((arg & DIAG_ID_MASK) >> DIAG_ID_OFFSET)
60*5113495bSYour Name 
61*5113495bSYour Name #define DIAG_GET_VDEVID(arg) \
62*5113495bSYour Name 	((arg & DIAG_VDEVID_MASK) >> DIAG_VDEVID_OFFSET)
63*5113495bSYour Name 
64*5113495bSYour Name #define DIAG_GET_VDEVLEVEL(arg)	\
65*5113495bSYour Name 	((arg & DIAG_VDEVLEVEL_MASK) >> DIAG_VDEVLEVEL_OFFSET)
66*5113495bSYour Name 
67*5113495bSYour Name #define DIAG_GET_PAYLEN(arg) \
68*5113495bSYour Name 	((arg & DIAG_PAYLEN_MASK) >> DIAG_PAYLEN_OFFSET)
69*5113495bSYour Name 
70*5113495bSYour Name #define DIAG_GET_PAYLEN16(arg) \
71*5113495bSYour Name 	((arg & DIAG_PAYLEN_MASK16) >> DIAG_PAYLEN_OFFSET16)
72*5113495bSYour Name 
73*5113495bSYour Name #define diag_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_DIAG, params)
74*5113495bSYour Name #define diag_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_DIAG, params)
75*5113495bSYour Name #define diag_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_DIAG, params)
76*5113495bSYour Name #define diag_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_DIAG, params)
77*5113495bSYour Name #define diag_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_DIAG, params)
78*5113495bSYour Name 
79*5113495bSYour Name #define diag_err_rl(params...) QDF_TRACE_ERROR_RL(QDF_MODULE_ID_DIAG, params)
80*5113495bSYour Name 
81*5113495bSYour Name #ifdef FEATURE_FW_LOG_PARSING
82*5113495bSYour Name /*
83*5113495bSYour Name  * set the dbglog parser type
84*5113495bSYour Name  */int
85*5113495bSYour Name dbglog_parser_type_init(wmi_unified_t wmi_handle, int type);
86*5113495bSYour Name 
87*5113495bSYour Name /** dbglog_int - Registers a WMI event handle for WMI_DBGMSG_EVENT
88*5113495bSYour Name  * @brief wmi_handle - handle to wmi module
89*5113495bSYour Name  */
90*5113495bSYour Name int
91*5113495bSYour Name dbglog_init(wmi_unified_t wmi_handle);
92*5113495bSYour Name 
93*5113495bSYour Name /** dbglog_deinit - UnRegisters a WMI event handle for WMI_DBGMSG_EVENT
94*5113495bSYour Name  * @brief wmi_handle - handle to wmi module
95*5113495bSYour Name  */
96*5113495bSYour Name int
97*5113495bSYour Name dbglog_deinit(wmi_unified_t wmi_handle);
98*5113495bSYour Name 
99*5113495bSYour Name /** set the size of the report size
100*5113495bSYour Name  * @brief wmi_handle - handle to Wmi module
101*5113495bSYour Name  * @brief size - Report size
102*5113495bSYour Name  */
103*5113495bSYour Name int
104*5113495bSYour Name dbglog_set_report_size(wmi_unified_t wmi_handle, uint16_t size);
105*5113495bSYour Name 
106*5113495bSYour Name /** Set the resolution for time stamp
107*5113495bSYour Name  * @brief wmi_handle - handle to Wmi module
108*5113495bSYour Name  * @ brief tsr - time stamp resolution
109*5113495bSYour Name  */
110*5113495bSYour Name int
111*5113495bSYour Name dbglog_set_timestamp_resolution(wmi_unified_t wmi_handle,
112*5113495bSYour Name 				uint16_t tsr);
113*5113495bSYour Name 
114*5113495bSYour Name /** Enable reporting. If it is set to false then Target won't deliver
115*5113495bSYour Name  * any debug information
116*5113495bSYour Name  */
117*5113495bSYour Name int
118*5113495bSYour Name dbglog_report_enable(wmi_unified_t wmi_handle, A_BOOL isenable);
119*5113495bSYour Name 
120*5113495bSYour Name /** Set the log level
121*5113495bSYour Name  * @brief DBGLOG_INFO - Information lowest log level
122*5113495bSYour Name  * @brief DBGLOG_WARNING
123*5113495bSYour Name  * @brief DBGLOG_ERROR - default log level
124*5113495bSYour Name  */
125*5113495bSYour Name int
126*5113495bSYour Name dbglog_set_log_lvl(wmi_unified_t wmi_handle, DBGLOG_LOG_LVL log_lvl);
127*5113495bSYour Name 
128*5113495bSYour Name /*
129*5113495bSYour Name  * set the debug log level for a given module
130*5113495bSYour Name  *  mod_id_lvl : the format is more user friendly.
131*5113495bSYour Name  *    module_id =  mod_id_lvl/10;
132*5113495bSYour Name  *    log_level =  mod_id_lvl%10;
133*5113495bSYour Name  * example : mod_id_lvl is 153. then module id is 15 and log level is 3.
134*5113495bSYour Name  *           this format allows user to pass a single value
135*5113495bSYour Name  *           (which is the most convenient way for most of the OSs)
136*5113495bSYour Name  *           to be passed from user to the driver.
137*5113495bSYour Name  */
138*5113495bSYour Name int
139*5113495bSYour Name dbglog_set_mod_log_lvl(wmi_unified_t wmi_handle, uint32_t mod_id_lvl);
140*5113495bSYour Name 
141*5113495bSYour Name /*
142*5113495bSYour Name  * set the debug log level for wow module
143*5113495bSYour Name  *  mod_id_lvl : the format is more user friendly.
144*5113495bSYour Name  *    module_id =  mod_id_lvl/10;
145*5113495bSYour Name  *    log_level =  mod_id_lvl%10;
146*5113495bSYour Name  * example : mod_id_lvl is 153. then module id is 15 and log level is 3.
147*5113495bSYour Name  *           this format allows user to pass a single value
148*5113495bSYour Name  *           (which is the most convenient way for most of the OSs)
149*5113495bSYour Name  *           to be passed from user to the driver.
150*5113495bSYour Name  */
151*5113495bSYour Name int
152*5113495bSYour Name dbglog_set_mod_wow_log_lvl(wmi_unified_t wmi_handle, uint32_t mod_id_lvl);
153*5113495bSYour Name 
154*5113495bSYour Name /** Enable/Disable the logging for VAP */
155*5113495bSYour Name int
156*5113495bSYour Name dbglog_vap_log_enable(wmi_unified_t wmi_handle, uint16_t vap_id,
157*5113495bSYour Name 		      A_BOOL isenable);
158*5113495bSYour Name /** Enable/Disable logging for Module */
159*5113495bSYour Name int
160*5113495bSYour Name dbglog_module_log_enable(wmi_unified_t wmi_handle, uint32_t mod_id,
161*5113495bSYour Name 			 A_BOOL isenable);
162*5113495bSYour Name 
163*5113495bSYour Name /** set vap enablie bitmap */
164*5113495bSYour Name void
165*5113495bSYour Name dbglog_set_vap_enable_bitmap(wmi_unified_t wmi_handle,
166*5113495bSYour Name 			     uint32_t vap_enable_bitmap);
167*5113495bSYour Name 
168*5113495bSYour Name /** set log level for all the modules specified in the bitmap.
169*5113495bSYour Name  *  for all other modules with 0 in the bitmap (or) outside the bitmap,
170*5113495bSYour Name  *  the log level be reset to DBGLOG_ERR.
171*5113495bSYour Name  */
172*5113495bSYour Name void
173*5113495bSYour Name dbglog_set_mod_enable_bitmap(wmi_unified_t wmi_handle,
174*5113495bSYour Name 			     uint32_t log_level,
175*5113495bSYour Name 			     uint32_t *mod_enable_bitmap,
176*5113495bSYour Name 			     uint32_t bitmap_len);
177*5113495bSYour Name 
178*5113495bSYour Name int
179*5113495bSYour Name dbglog_parse_debug_logs(ol_scn_t scn, u_int8_t *datap,
180*5113495bSYour Name 					u_int32_t len);
181*5113495bSYour Name 
182*5113495bSYour Name /**
183*5113495bSYour Name  * cnss_diag_activate_service() - API to register CNSS diag cmd handler
184*5113495bSYour Name  *
185*5113495bSYour Name  * API to register the handler for the NL message received from cnss_diag
186*5113495bSYour Name  * application.
187*5113495bSYour Name  *
188*5113495bSYour Name  * Return: 0
189*5113495bSYour Name  */
190*5113495bSYour Name int cnss_diag_activate_service(void);
191*5113495bSYour Name 
192*5113495bSYour Name /**
193*5113495bSYour Name  * cnss_diag_deactivate_service() - API to deregister CNSS diag cmd handler
194*5113495bSYour Name  *
195*5113495bSYour Name  * API to deregister the handler for the NL message received from cnss_diag
196*5113495bSYour Name  * application.
197*5113495bSYour Name  *
198*5113495bSYour Name  * Return: 0
199*5113495bSYour Name  */
200*5113495bSYour Name int cnss_diag_deactivate_service(void);
201*5113495bSYour Name 
202*5113495bSYour Name #else
203*5113495bSYour Name static inline int
204*5113495bSYour Name dbglog_parser_type_init(wmi_unified_t wmi_handle, int type)
205*5113495bSYour Name {
206*5113495bSYour Name 	return A_OK;
207*5113495bSYour Name }
208*5113495bSYour Name 
209*5113495bSYour Name static inline int
210*5113495bSYour Name dbglog_init(wmi_unified_t wmi_handle)
211*5113495bSYour Name {
212*5113495bSYour Name 	return A_OK;
213*5113495bSYour Name }
214*5113495bSYour Name 
215*5113495bSYour Name static inline int
216*5113495bSYour Name dbglog_deinit(wmi_unified_t wmi_handle)
217*5113495bSYour Name {
218*5113495bSYour Name 	return A_OK;
219*5113495bSYour Name }
220*5113495bSYour Name 
221*5113495bSYour Name static inline int
222*5113495bSYour Name dbglog_report_enable(wmi_unified_t wmi_handle, A_BOOL isenable)
223*5113495bSYour Name {
224*5113495bSYour Name 	return A_OK;
225*5113495bSYour Name }
226*5113495bSYour Name 
227*5113495bSYour Name static inline int
228*5113495bSYour Name dbglog_set_log_lvl(wmi_unified_t wmi_handle, DBGLOG_LOG_LVL log_lvl)
229*5113495bSYour Name {
230*5113495bSYour Name 	return A_OK;
231*5113495bSYour Name }
232*5113495bSYour Name 
233*5113495bSYour Name static inline int cnss_diag_activate_service(void)
234*5113495bSYour Name {
235*5113495bSYour Name 	return A_OK;
236*5113495bSYour Name }
237*5113495bSYour Name 
238*5113495bSYour Name static inline int cnss_diag_deactivate_service(void)
239*5113495bSYour Name {
240*5113495bSYour Name 	return A_OK;
241*5113495bSYour Name }
242*5113495bSYour Name 
243*5113495bSYour Name static inline int
244*5113495bSYour Name dbglog_module_log_enable(wmi_unified_t wmi_handle, uint32_t mod_id,
245*5113495bSYour Name 			 A_BOOL isenable)
246*5113495bSYour Name {
247*5113495bSYour Name 	return A_OK;
248*5113495bSYour Name }
249*5113495bSYour Name 
250*5113495bSYour Name static inline int
251*5113495bSYour Name dbglog_vap_log_enable(wmi_unified_t wmi_handle, uint16_t vap_id,
252*5113495bSYour Name 		      A_BOOL isenable)
253*5113495bSYour Name {
254*5113495bSYour Name 	return A_OK;
255*5113495bSYour Name }
256*5113495bSYour Name 
257*5113495bSYour Name static inline int
258*5113495bSYour Name dbglog_set_mod_log_lvl(wmi_unified_t wmi_handle, uint32_t mod_id_lvl)
259*5113495bSYour Name {
260*5113495bSYour Name 	return A_OK;
261*5113495bSYour Name }
262*5113495bSYour Name 
263*5113495bSYour Name static inline int
264*5113495bSYour Name dbglog_set_mod_wow_log_lvl(wmi_unified_t wmi_handle, uint32_t mod_id_lvl)
265*5113495bSYour Name {
266*5113495bSYour Name 	return A_OK;
267*5113495bSYour Name }
268*5113495bSYour Name #endif /* FEATURE_FW_LOG_PARSING */
269*5113495bSYour Name 
270*5113495bSYour Name #ifdef __cplusplus
271*5113495bSYour Name }
272*5113495bSYour Name #endif
273*5113495bSYour Name 
274*5113495bSYour Name #endif /* _DBGLOG_HOST_H_ */
275