From 8a27ffb4adf2d7367486325016ab145aafdbf3f9 Mon Sep 17 00:00:00 2001 From: Alan Chen Date: Fri, 11 Dec 2020 12:39:18 -0800 Subject: [PATCH] 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 --- qdf/inc/qdf_types.h | 2 ++ qdf/linux/src/qdf_trace.c | 2 ++ utils/fwlog/dbglog_host.c | 3 +-- utils/fwlog/dbglog_host.h | 8 ++++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/qdf/inc/qdf_types.h b/qdf/inc/qdf_types.h index 1cb76732d0..262a5666a0 100644 --- a/qdf/inc/qdf_types.h +++ b/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; diff --git a/qdf/linux/src/qdf_trace.c b/qdf/linux/src/qdf_trace.c index abb142be78..d951defd06 100644 --- a/qdf/linux/src/qdf_trace.c +++ b/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++) { diff --git a/utils/fwlog/dbglog_host.c b/utils/fwlog/dbglog_host.c index b2d2582a10..221066dd5a 100644 --- a/utils/fwlog/dbglog_host.c +++ b/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; } diff --git a/utils/fwlog/dbglog_host.h b/utils/fwlog/dbglog_host.h index 93b21efea0..d57facac71 100644 --- a/utils/fwlog/dbglog_host.h +++ b/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