Pārlūkot izejas kodu

qcacmn: Rate limit error logs from send_diag_netlink_data

Introduce proper logging APIs for diag module and also rate limit error
logs when skb allocation fails in low memory conditions to avoid excessive
logging side effects

Change-Id: Ia41ff7cfd526180825df61a43f1f59163947f257
CRs-Fixed: 2836681
Alan Chen 4 gadi atpakaļ
vecāks
revīzija
8a27ffb4ad

+ 2 - 0
qdf/inc/qdf_types.h

@@ -391,6 +391,7 @@ typedef bool (*qdf_irqlocked_func_t)(void *);
  * @QDF_MODULE_ID_IFMGR: Interface Manager feature ID
  * @QDF_MODULE_ID_MSCS: MSCS feature ID
  * @QDF_MODULE_ID_GPIO: GPIO configuration module ID
+ * @QDF_MODULE_ID_DIAG: Host diag module ID
  * @QDF_MODULE_ID_ANY: anything
  * @QDF_MODULE_ID_MAX: Max place holder module ID
  *
@@ -522,6 +523,7 @@ typedef enum {
 	QDF_MODULE_ID_IFMGR,
 	QDF_MODULE_ID_MSCS,
 	QDF_MODULE_ID_GPIO,
+	QDF_MODULE_ID_DIAG,
 	QDF_MODULE_ID_ANY,
 	QDF_MODULE_ID_MAX,
 } QDF_MODULE_ID;

+ 2 - 0
qdf/linux/src/qdf_trace.c

@@ -3170,6 +3170,7 @@ struct category_name_info g_qdf_category_name[MAX_SUPPORTED_CATEGORY] = {
 	[QDF_MODULE_ID_MSCS] = {"MSCS"},
 	[QDF_MODULE_ID_GPIO] = {"GPIO_CFG"},
 	[QDF_MODULE_ID_IFMGR] = {"IF_MGR"},
+	[QDF_MODULE_ID_DIAG] = {"DIAG"},
 };
 qdf_export_symbol(g_qdf_category_name);
 
@@ -3719,6 +3720,7 @@ static void set_default_trace_levels(struct category_info *cinfo)
 		[QDF_MODULE_ID_MSCS] = QDF_TRACE_LEVEL_INFO,
 		[QDF_MODULE_ID_GPIO] = QDF_TRACE_LEVEL_NONE,
 		[QDF_MODULE_ID_IFMGR] = QDF_TRACE_LEVEL_ERROR,
+		[QDF_MODULE_ID_DIAG] = QDF_TRACE_LEVEL_ERROR,
 	};
 
 	for (i = 0; i < MAX_SUPPORTED_CATEGORY; i++) {

+ 1 - 2
utils/fwlog/dbglog_host.c

@@ -1750,8 +1750,7 @@ send_diag_netlink_data(const uint8_t *buffer, uint32_t len, uint32_t cmd)
 
 		skb_out = nlmsg_new(slot_len, GFP_ATOMIC);
 		if (!skb_out) {
-			AR_DEBUG_PRINTF(ATH_DEBUG_ERR,
-					("Failed to allocate new skb\n"));
+			diag_err_rl("Failed to allocate new skb");
 			return A_ERROR;
 		}
 

+ 8 - 0
utils/fwlog/dbglog_host.h

@@ -69,6 +69,14 @@ extern "C" {
 #define DIAG_GET_PAYLEN16(arg) \
 	((arg & DIAG_PAYLEN_MASK16) >> DIAG_PAYLEN_OFFSET16)
 
+#define diag_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_DIAG, params)
+#define diag_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_DIAG, params)
+#define diag_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_DIAG, params)
+#define diag_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_DIAG, params)
+#define diag_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_DIAG, params)
+
+#define diag_err_rl(params...) QDF_TRACE_ERROR_RL(QDF_MODULE_ID_DIAG, params)
+
 #ifdef FEATURE_FW_LOG_PARSING
 /*
  * set the dbglog parser type