qcacmn: Allocate MAC Trace buffer dynamically
Allocate memory for g_qdf_trace_tbl buffer dynamically. Change-Id: I5e9ba0a33e220ead36e0775f00000346aae68373 CRs-Fixed: 2267922
This commit is contained in:
@@ -503,6 +503,7 @@ static inline void qdf_register_debugcb_init(void)
|
|||||||
#ifdef TRACE_RECORD
|
#ifdef TRACE_RECORD
|
||||||
void qdf_trace_register(QDF_MODULE_ID, tp_qdf_trace_cb);
|
void qdf_trace_register(QDF_MODULE_ID, tp_qdf_trace_cb);
|
||||||
void qdf_trace_init(void);
|
void qdf_trace_init(void);
|
||||||
|
void qdf_trace_deinit(void);
|
||||||
void qdf_trace(uint8_t module, uint8_t code, uint16_t session, uint32_t data);
|
void qdf_trace(uint8_t module, uint8_t code, uint16_t session, uint32_t data);
|
||||||
void qdf_trace_enable(uint32_t, uint8_t enable);
|
void qdf_trace_enable(uint32_t, uint8_t enable);
|
||||||
void qdf_trace_dump_all(void *, uint8_t, uint8_t, uint32_t, uint32_t);
|
void qdf_trace_dump_all(void *, uint8_t, uint8_t, uint32_t, uint32_t);
|
||||||
@@ -514,6 +515,11 @@ void qdf_trace_init(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
void qdf_trace_deinit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
void qdf_trace_enable(uint32_t bitmask_of_module_id, uint8_t enable)
|
void qdf_trace_enable(uint32_t bitmask_of_module_id, uint8_t enable)
|
||||||
{
|
{
|
||||||
|
@@ -88,8 +88,6 @@ module_trace_info g_qdf_trace_info[QDF_MODULE_ID_MAX] = {
|
|||||||
#ifdef TRACE_RECORD
|
#ifdef TRACE_RECORD
|
||||||
/* Static and Global variables */
|
/* Static and Global variables */
|
||||||
static spinlock_t ltrace_lock;
|
static spinlock_t ltrace_lock;
|
||||||
|
|
||||||
static qdf_trace_record_t g_qdf_trace_tbl[MAX_QDF_TRACE_RECORDS];
|
|
||||||
/* global qdf trace data */
|
/* global qdf trace data */
|
||||||
static t_qdf_trace_data g_qdf_trace_data;
|
static t_qdf_trace_data g_qdf_trace_data;
|
||||||
/*
|
/*
|
||||||
@@ -102,6 +100,13 @@ static t_qdf_trace_data g_qdf_trace_data;
|
|||||||
*/
|
*/
|
||||||
static tp_qdf_trace_cb qdf_trace_cb_table[QDF_MODULE_ID_MAX];
|
static tp_qdf_trace_cb qdf_trace_cb_table[QDF_MODULE_ID_MAX];
|
||||||
static tp_qdf_trace_cb qdf_trace_restore_cb_table[QDF_MODULE_ID_MAX];
|
static tp_qdf_trace_cb qdf_trace_restore_cb_table[QDF_MODULE_ID_MAX];
|
||||||
|
|
||||||
|
#ifdef WLAN_LOGGING_BUFFERS_DYNAMICALLY
|
||||||
|
static qdf_trace_record_t *g_qdf_trace_tbl;
|
||||||
|
#else
|
||||||
|
static qdf_trace_record_t g_qdf_trace_tbl[MAX_QDF_TRACE_RECORDS];
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_MEMDUMP_ENABLE
|
#ifdef WLAN_FEATURE_MEMDUMP_ENABLE
|
||||||
@@ -376,6 +381,30 @@ qdf_export_symbol(qdf_trace_hex_dump);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef TRACE_RECORD
|
#ifdef TRACE_RECORD
|
||||||
|
|
||||||
|
#ifdef WLAN_LOGGING_BUFFERS_DYNAMICALLY
|
||||||
|
static inline QDF_STATUS allocate_g_qdf_trace_tbl_buffer(void)
|
||||||
|
{
|
||||||
|
g_qdf_trace_tbl = vzalloc(MAX_QDF_TRACE_RECORDS *
|
||||||
|
sizeof(*g_qdf_trace_tbl));
|
||||||
|
QDF_BUG(g_qdf_trace_tbl);
|
||||||
|
return g_qdf_trace_tbl ? QDF_STATUS_SUCCESS : QDF_STATUS_E_NOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void free_g_qdf_trace_tbl_buffer(void)
|
||||||
|
{
|
||||||
|
vfree(g_qdf_trace_tbl);
|
||||||
|
g_qdf_trace_tbl = NULL;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline QDF_STATUS allocate_g_qdf_trace_tbl_buffer(void)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void free_g_qdf_trace_tbl_buffer(void)
|
||||||
|
{ }
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* qdf_trace_enable() - Enable MTRACE for specific modules
|
* qdf_trace_enable() - Enable MTRACE for specific modules
|
||||||
* @bitmask_of_module_id: Bitmask according to enum of the modules.
|
* @bitmask_of_module_id: Bitmask according to enum of the modules.
|
||||||
@@ -446,6 +475,8 @@ void qdf_trace_init(void)
|
|||||||
{
|
{
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
|
if (allocate_g_qdf_trace_tbl_buffer() != QDF_STATUS_SUCCESS)
|
||||||
|
return;
|
||||||
g_qdf_trace_data.head = INVALID_QDF_TRACE_ADDR;
|
g_qdf_trace_data.head = INVALID_QDF_TRACE_ADDR;
|
||||||
g_qdf_trace_data.tail = INVALID_QDF_TRACE_ADDR;
|
g_qdf_trace_data.tail = INVALID_QDF_TRACE_ADDR;
|
||||||
g_qdf_trace_data.num = 0;
|
g_qdf_trace_data.num = 0;
|
||||||
@@ -460,6 +491,26 @@ void qdf_trace_init(void)
|
|||||||
}
|
}
|
||||||
qdf_export_symbol(qdf_trace_init);
|
qdf_export_symbol(qdf_trace_init);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* qdf_trace_deinit() - frees memory allocated dynamically
|
||||||
|
*
|
||||||
|
* Called from cds_deinit, so that we can free the memory and resets
|
||||||
|
* the variables
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
void qdf_trace_deinit(void)
|
||||||
|
{
|
||||||
|
g_qdf_trace_data.enable = false;
|
||||||
|
g_qdf_trace_data.num = 0;
|
||||||
|
g_qdf_trace_data.head = INVALID_QDF_TRACE_ADDR;
|
||||||
|
g_qdf_trace_data.tail = INVALID_QDF_TRACE_ADDR;
|
||||||
|
|
||||||
|
free_g_qdf_trace_tbl_buffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_export_symbol(qdf_trace_deinit);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qdf_trace() - puts the messages in to ring-buffer
|
* qdf_trace() - puts the messages in to ring-buffer
|
||||||
* @module: Enum of module, basically module id.
|
* @module: Enum of module, basically module id.
|
||||||
|
Reference in New Issue
Block a user