Browse Source

qcacmn: Add rate limit for HEX DUMP qdf api

Add rate limit for QDF_TRACE_HEX_DUMP API to avoid hex dump
message flood in kmsg and driver log.

Change-Id: I34fa16f3723169a07e66c0c806885c06abc2fa57
CRs-Fixed: 2660367
Liangwei Dong 5 years ago
parent
commit
560f438d7b
1 changed files with 30 additions and 0 deletions
  1. 30 0
      qdf/linux/src/i_qdf_trace.h

+ 30 - 0
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