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
This commit is contained in:
Alan Chen
2020-12-11 12:39:18 -08:00
committed by snandini
parent 2eea47c0c9
commit 8a27ffb4ad
4 changed files with 13 additions and 2 deletions

View File

@@ -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;

View File

@@ -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++) {

View File

@@ -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;
}

View File

@@ -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