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