wlan: Setting Trace Levels through ini file.
This change is introduced to give the
user the flexibility to control the
vos trace levels from the
WCNSS_qcom_cfg.ini file.This would
allow the user to capture the log
messages right from the point the
driver is loaded.
Change-Id: I0e72730c6048d23a9d000c545084fae650bc259e
CRs-Fixed: 440389
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index f77ce08..2c3829e 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -1270,6 +1270,45 @@
#endif
/*
+ * VOS Trace Enable Control
+ * Notes:
+ * the MIN/MAX/DEFAULT values apply for all modules
+ * the DEFAULT value is outside the valid range. if the DEFAULT
+ * value is not overridden, then no change will be made to the
+ * "built in" default values compiled into the code
+ * values are a bitmap indicating which log levels are to enabled
+ * (must match order of vos_trace_level enumerations)
+ * 00000001 FATAL
+ * 00000010 ERROR
+ * 00000100 WARN
+ * 00001000 INFO
+ * 00010000 INFO HIGH
+ * 00100000 INFO MED
+ * 01000000 INFO LOW
+ * 10000000 DEBUG
+ *
+ * hence a value of 0xFF would set all bits (enable all logs)
+ */
+
+#define CFG_VOS_TRACE_ENABLE_BAP_NAME "vosTraceEnableBAP"
+#define CFG_VOS_TRACE_ENABLE_TL_NAME "vosTraceEnableTL"
+#define CFG_VOS_TRACE_ENABLE_WDI_NAME "vosTraceEnableWDI"
+#define CFG_VOS_TRACE_ENABLE_HDD_NAME "vosTraceEnableHDD"
+#define CFG_VOS_TRACE_ENABLE_SME_NAME "vosTraceEnableSME"
+#define CFG_VOS_TRACE_ENABLE_PE_NAME "vosTraceEnablePE"
+#define CFG_VOS_TRACE_ENABLE_WDA_NAME "vosTraceEnableWDA"
+#define CFG_VOS_TRACE_ENABLE_SYS_NAME "vosTraceEnableSYS"
+#define CFG_VOS_TRACE_ENABLE_VOSS_NAME "vosTraceEnableVOSS"
+#ifdef WLAN_SOFTAP_FEATURE
+#define CFG_VOS_TRACE_ENABLE_SAP_NAME "vosTraceEnableSAP"
+#define CFG_VOS_TRACE_ENABLE_HDD_SAP_NAME "vosTraceEnableHDDSAP"
+#endif
+
+#define CFG_VOS_TRACE_ENABLE_MIN (0)
+#define CFG_VOS_TRACE_ENABLE_MAX (0xff)
+#define CFG_VOS_TRACE_ENABLE_DEFAULT (0xffff)
+
+/*
* WDI Trace Enable Control
* Notes:
* the MIN/MAX/DEFAULT values apply for all modules
@@ -1824,6 +1863,21 @@
v_BOOL_t fEnableBeaconEarlyTermination;
v_BOOL_t teleBcnWakeupEn;
+/* VOS Trace Control*/
+ v_U16_t vosTraceEnableBAP;
+ v_U16_t vosTraceEnableTL;
+ v_U16_t vosTraceEnableWDI;
+ v_U16_t vosTraceEnableHDD;
+ v_U16_t vosTraceEnableSME;
+ v_U16_t vosTraceEnablePE;
+ v_U16_t vosTraceEnableWDA;
+ v_U16_t vosTraceEnableSYS;
+ v_U16_t vosTraceEnableVOSS;
+#ifdef WLAN_SOFTAP_FEATURE
+ v_U16_t vosTraceEnableSAP;
+ v_U16_t vosTraceEnableHDDSAP;
+#endif
+
#ifdef FEATURE_WLAN_INTEGRATED_SOC
/* WDI Trace Control */
v_U32_t wdiTraceEnableDAL;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index b9df60a..dc809bd 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -1503,6 +1503,85 @@
CFG_ENABLE_BEACON_EARLY_TERMINATION_DEFAULT,
CFG_ENABLE_BEACON_EARLY_TERMINATION_MIN,
CFG_ENABLE_BEACON_EARLY_TERMINATION_MAX ),
+/* CFG_VOS_TRACE_ENABLE Parameters */
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_BAP_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableBAP,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_TL_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableTL,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_WDI_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableWDI,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_HDD_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableHDD,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SME_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableSME,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_PE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnablePE,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_WDA_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableWDA,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SYS_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableSYS,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_VOSS_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableVOSS,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+#ifdef WLAN_SOFTAP_FEATURE
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SAP_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableSAP,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+
+ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_HDD_SAP_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, vosTraceEnableHDDSAP,
+ VAR_FLAGS_OPTIONAL,
+ CFG_VOS_TRACE_ENABLE_DEFAULT,
+ CFG_VOS_TRACE_ENABLE_MIN,
+ CFG_VOS_TRACE_ENABLE_MAX ),
+#endif
#ifdef FEATURE_WLAN_INTEGRATED_SOC
/* note that since the default value is out of range we cannot
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index cc16804..7ca4cf6 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -327,6 +327,48 @@
static int curr_con_mode;
#endif
+/**---------------------------------------------------------------------------
+
+ \brief hdd_vos_trace_enable() - Configure initial VOS Trace enable
+
+ Called immediately after the cfg.ini is read in order to configure
+ the desired trace levels.
+
+ \param - moduleId - module whose trace level is being configured
+ \param - bitmask - bitmask of log levels to be enabled
+
+ \return - void
+
+ --------------------------------------------------------------------------*/
+static void hdd_vos_trace_enable(VOS_MODULE_ID moduleId, v_U32_t bitmask)
+{
+ wpt_tracelevel level;
+
+ /* if the bitmask is the default value, then a bitmask was not
+ specified in cfg.ini, so leave the logging level alone (it
+ will remain at the "compiled in" default value) */
+ if (CFG_VOS_TRACE_ENABLE_DEFAULT == bitmask)
+ {
+ return;
+ }
+
+ /* a mask was specified. start by disabling all logging */
+ vos_trace_setValue(moduleId, VOS_TRACE_LEVEL_NONE, 0);
+
+ /* now cycle through the bitmask until all "set" bits are serviced */
+ level = VOS_TRACE_LEVEL_FATAL;
+ while (0 != bitmask)
+ {
+ if (bitmask & 1)
+ {
+ vos_trace_setValue(moduleId, level, 1);
+ }
+ level++;
+ bitmask >>= 1;
+ }
+}
+
+
#ifdef FEATURE_WLAN_INTEGRATED_SOC
/**---------------------------------------------------------------------------
@@ -3496,6 +3538,32 @@
}
#endif
+ // Update VOS trace levels based upon the cfg.ini
+ hdd_vos_trace_enable(VOS_MODULE_ID_BAP,
+ pHddCtx->cfg_ini->vosTraceEnableBAP);
+ hdd_vos_trace_enable(VOS_MODULE_ID_TL,
+ pHddCtx->cfg_ini->vosTraceEnableTL);
+ hdd_vos_trace_enable(VOS_MODULE_ID_WDI,
+ pHddCtx->cfg_ini->vosTraceEnableWDI);
+ hdd_vos_trace_enable(VOS_MODULE_ID_HDD,
+ pHddCtx->cfg_ini->vosTraceEnableHDD);
+ hdd_vos_trace_enable(VOS_MODULE_ID_SME,
+ pHddCtx->cfg_ini->vosTraceEnableSME);
+ hdd_vos_trace_enable(VOS_MODULE_ID_PE,
+ pHddCtx->cfg_ini->vosTraceEnablePE);
+ hdd_vos_trace_enable(VOS_MODULE_ID_WDA,
+ pHddCtx->cfg_ini->vosTraceEnableWDA);
+ hdd_vos_trace_enable(VOS_MODULE_ID_SYS,
+ pHddCtx->cfg_ini->vosTraceEnableSYS);
+ hdd_vos_trace_enable(VOS_MODULE_ID_VOSS,
+ pHddCtx->cfg_ini->vosTraceEnableVOSS);
+#ifdef WLAN_SOFTAP_FEATURE
+ hdd_vos_trace_enable(VOS_MODULE_ID_SAP,
+ pHddCtx->cfg_ini->vosTraceEnableSAP);
+ hdd_vos_trace_enable(VOS_MODULE_ID_HDD_SOFTAP,
+ pHddCtx->cfg_ini->vosTraceEnableHDDSAP);
+#endif
+
#ifdef FEATURE_WLAN_INTEGRATED_SOC
// Update WDI trace levels based upon the cfg.ini
hdd_wdi_trace_enable(eWLAN_MODULE_DAL,