diff --git a/qdf/linux/src/i_qdf_trace.h b/qdf/linux/src/i_qdf_trace.h index 711aa4162324..58443ba83c68 100644 --- a/qdf/linux/src/i_qdf_trace.h +++ b/qdf/linux/src/i_qdf_trace.h @@ -90,8 +90,20 @@ __last_ticks = __ticks;\ } \ } while (0) + +#define __QDF_TRACE_HEX_DUMP_RATE_LIMITED(params...)\ + do {\ + static ulong __last_ticks;\ + ulong __ticks = jiffies;\ + if (time_after(__ticks,\ + __last_ticks + HZ / QDF_MAX_LOGS_PER_SEC)) {\ + QDF_TRACE_HEX_DUMP(params);\ + __last_ticks = __ticks;\ + } \ + } while (0) #else #define __QDF_TRACE_RATE_LIMITED(arg ...) +#define __QDF_TRACE_HEX_DUMP_RATE_LIMITED(arg ...) #endif #define __QDF_TRACE_NO_FL(log_level, module_id, format, args...) \ @@ -106,6 +118,9 @@ #define __QDF_TRACE_RL_NO_FL(log_level, module_id, format, args...) \ __QDF_TRACE_RATE_LIMITED(module_id, log_level, format, ## args) +#define __QDF_TRACE_HEX_DUMP_RL(log_level, module_id, args...) \ + __QDF_TRACE_HEX_DUMP_RATE_LIMITED(module_id, log_level, ## args) + static inline void __qdf_trace_noop(QDF_MODULE_ID module, const char *format, ...) { } static inline void __qdf_trace_dummy(QDF_MODULE_ID module, @@ -130,12 +145,15 @@ static inline void __qdf_trace_hexdump_dummy(QDF_MODULE_ID module, __QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_FATAL, ## params) #define QDF_VTRACE_FATAL(module_id, fmt, args) \ QDF_VTRACE(module_id, QDF_TRACE_LEVEL_FATAL, fmt, args) +#define QDF_TRACE_HEX_DUMP_FATAL_RL(params...) \ + __QDF_TRACE_HEX_DUMP_RL(QDF_TRACE_LEVEL_FATAL, ## params) #else #define QDF_TRACE_FATAL(params...) __qdf_trace_noop(params) #define QDF_TRACE_FATAL_NO_FL(params...) __qdf_trace_noop(params) #define QDF_TRACE_FATAL_RL(params...) __qdf_trace_noop(params) #define QDF_TRACE_FATAL_RL_NO_FL(params...) __qdf_trace_noop(params) #define QDF_VTRACE_FATAL(params...) __qdf_trace_noop(params) +#define QDF_TRACE_HEX_DUMP_FATAL_RL(params...) __qdf_trace_noop(params) #endif #ifdef WLAN_LOG_ERROR @@ -149,12 +167,15 @@ static inline void __qdf_trace_hexdump_dummy(QDF_MODULE_ID module, __QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_ERROR, ## params) #define QDF_VTRACE_ERROR(module_id, fmt, args) \ QDF_VTRACE(module_id, QDF_TRACE_LEVEL_ERROR, fmt, args) +#define QDF_TRACE_HEX_DUMP_ERROR_RL(params...) \ + __QDF_TRACE_HEX_DUMP_RL(QDF_TRACE_LEVEL_ERROR, ## params) #else #define QDF_TRACE_ERROR(params...) __qdf_trace_noop(params) #define QDF_TRACE_ERROR_NO_FL(params...) __qdf_trace_noop(params) #define QDF_TRACE_ERROR_RL(params...) __qdf_trace_noop(params) #define QDF_TRACE_ERROR_RL_NO_FL(params...) __qdf_trace_noop(params) #define QDF_VTRACE_ERROR(params...) __qdf_trace_noop(params) +#define QDF_TRACE_HEX_DUMP_ERROR_RL(params...) __qdf_trace_noop(params) #endif #ifdef WLAN_LOG_WARN @@ -168,12 +189,15 @@ static inline void __qdf_trace_hexdump_dummy(QDF_MODULE_ID module, __QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_WARN, ## params) #define QDF_VTRACE_WARN(module_id, fmt, args) \ QDF_VTRACE(module_id, QDF_TRACE_LEVEL_WARN, fmt, args) +#define QDF_TRACE_HEX_DUMP_WARN_RL(params...) \ + __QDF_TRACE_HEX_DUMP_RL(QDF_TRACE_LEVEL_WARN, ## params) #else #define QDF_TRACE_WARN(params...) __qdf_trace_noop(params) #define QDF_TRACE_WARN_NO_FL(params...) __qdf_trace_noop(params) #define QDF_TRACE_WARN_RL(params...) __qdf_trace_noop(params) #define QDF_TRACE_WARN_RL_NO_FL(params...) __qdf_trace_noop(params) #define QDF_VTRACE_WARN(params...) __qdf_trace_noop(params) +#define QDF_TRACE_HEX_DUMP_WARN_RL(params...) __qdf_trace_noop(params) #endif #ifdef WLAN_LOG_INFO @@ -187,12 +211,15 @@ static inline void __qdf_trace_hexdump_dummy(QDF_MODULE_ID module, __QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_INFO, ## params) #define QDF_VTRACE_INFO(module_id, fmt, args) \ QDF_VTRACE(module_id, QDF_TRACE_LEVEL_INFO, fmt, args) +#define QDF_TRACE_HEX_DUMP_INFO_RL(params...) \ + __QDF_TRACE_HEX_DUMP_RL(QDF_TRACE_LEVEL_INFO, ## params) #else #define QDF_TRACE_INFO(params...) __qdf_trace_noop(params) #define QDF_TRACE_INFO_NO_FL(params...) __qdf_trace_noop(params) #define QDF_TRACE_INFO_RL(params...) __qdf_trace_noop(params) #define QDF_TRACE_INFO_RL_NO_FL(params...) __qdf_trace_noop(params) #define QDF_VTRACE_INFO(params...) __qdf_trace_noop(params) +#define QDF_TRACE_HEX_DUMP_INFO_RL(params...) __qdf_trace_noop(params) #endif #ifdef WLAN_LOG_DEBUG @@ -206,12 +233,15 @@ static inline void __qdf_trace_hexdump_dummy(QDF_MODULE_ID module, __QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_DEBUG, ## params) #define QDF_VTRACE_DEBUG(module_id, fmt, args) \ QDF_VTRACE(module_id, QDF_TRACE_LEVEL_DEBUG, fmt, args) +#define QDF_TRACE_HEX_DUMP_DEBUG_RL(params...) \ + __QDF_TRACE_HEX_DUMP_RL(QDF_TRACE_LEVEL_DEBUG, ## params) #else #define QDF_TRACE_DEBUG(params...) __qdf_trace_noop(params) #define QDF_TRACE_DEBUG_NO_FL(params...) __qdf_trace_noop(params) #define QDF_TRACE_DEBUG_RL(params...) __qdf_trace_noop(params) #define QDF_TRACE_DEBUG_RL_NO_FL(params...) __qdf_trace_noop(params) #define QDF_VTRACE_DEBUG(params...) __qdf_trace_noop(params) +#define QDF_TRACE_HEX_DUMP_DEBUG_RL(params...) __qdf_trace_noop(params) #endif #ifdef WLAN_LOG_ENTER