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