qcacmn: Dump driver information
qcacld-2.0 to qcacmn propagation Dump state information of HDD, SME, PE and WMA layers into a buffer. Contents of this buffer will be copied into user space using proc entry /proc/debugdriver/ driverdump. Change-Id: Ifbb102e440d7df20defa1a397964cb9b55082bf9 CRs-Fixed: 955357
This commit is contained in:

zatwierdzone przez
qcabuildsw

rodzic
99c4b0bf4d
commit
75394d6c8f
@@ -364,6 +364,12 @@ void qdf_trace_set_level(QDF_MODULE_ID module, QDF_TRACE_LEVEL level);
|
||||
bool qdf_trace_get_level(QDF_MODULE_ID module, QDF_TRACE_LEVEL level);
|
||||
|
||||
typedef void (*tp_qdf_trace_cb)(void *p_mac, tp_qdf_trace_record, uint16_t);
|
||||
typedef void (*tp_qdf_state_info_cb) (char **buf, uint16_t *size);
|
||||
void qdf_register_debugcb_init(void);
|
||||
void qdf_register_debug_callback(QDF_MODULE_ID module_id,
|
||||
tp_qdf_state_info_cb qdf_state_infocb);
|
||||
QDF_STATUS qdf_state_info_dump_all(char *buf, uint16_t size,
|
||||
uint16_t *driver_dump_size);
|
||||
void qdf_trace(uint8_t module, uint8_t code, uint16_t session, uint32_t data);
|
||||
void qdf_trace_register(QDF_MODULE_ID, tp_qdf_trace_cb);
|
||||
QDF_STATUS qdf_trace_spin_lock_init(void);
|
||||
|
@@ -75,6 +75,7 @@
|
||||
#endif /* CONFIG_MCL */
|
||||
|
||||
#define QDF_ENABLE_TRACING
|
||||
#define qdf_scnprintf scnprintf
|
||||
|
||||
#ifdef QDF_ENABLE_TRACING
|
||||
|
||||
|
@@ -101,6 +101,7 @@ 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_restore_cb_table[QDF_MODULE_ID_MAX];
|
||||
static tp_qdf_state_info_cb qdf_state_info_table[QDF_MODULE_ID_MAX];
|
||||
|
||||
#ifdef FEATURE_DP_TRACE
|
||||
/* Static and Global variables */
|
||||
@@ -715,6 +716,70 @@ void qdf_trace_dump_all(void *p_mac, uint8_t code, uint8_t session,
|
||||
}
|
||||
EXPORT_SYMBOL(qdf_trace_dump_all);
|
||||
|
||||
/**
|
||||
* qdf_register_debugcb_init() - initializes debug callbacks
|
||||
* to NULL
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void qdf_register_debugcb_init(void)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < QDF_MODULE_ID_MAX; i++)
|
||||
qdf_state_info_table[i] = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(qdf_register_debugcb_init);
|
||||
|
||||
/**
|
||||
* qdf_register_debug_callback() - stores callback handlers to print
|
||||
* state information
|
||||
* @module_id: module id of layer
|
||||
* @qdf_state_infocb: callback to be registered
|
||||
*
|
||||
* This function is used to store callback handlers to print
|
||||
* state information
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void qdf_register_debug_callback(QDF_MODULE_ID module_id,
|
||||
tp_qdf_state_info_cb qdf_state_infocb)
|
||||
{
|
||||
qdf_state_info_table[module_id] = qdf_state_infocb;
|
||||
}
|
||||
EXPORT_SYMBOL(qdf_register_debug_callback);
|
||||
|
||||
/**
|
||||
* qdf_state_info_dump_all() - it invokes callback of layer which registered
|
||||
* its callback to print its state information.
|
||||
* @buf: buffer pointer to be passed
|
||||
* @size: size of buffer to be filled
|
||||
* @driver_dump_size: actual size of buffer used
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS on success
|
||||
*/
|
||||
QDF_STATUS qdf_state_info_dump_all(char *buf, uint16_t size,
|
||||
uint16_t *driver_dump_size)
|
||||
{
|
||||
uint8_t module, ret = QDF_STATUS_SUCCESS;
|
||||
uint16_t buf_len = size;
|
||||
char *buf_ptr = buf;
|
||||
|
||||
for (module = 0; module < QDF_MODULE_ID_MAX; module++) {
|
||||
if (NULL != qdf_state_info_table[module]) {
|
||||
qdf_state_info_table[module](&buf_ptr, &buf_len);
|
||||
if (!buf_len) {
|
||||
ret = QDF_STATUS_E_NOMEM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*driver_dump_size = size - buf_len;
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(qdf_state_info_dump_all);
|
||||
|
||||
#ifdef FEATURE_DP_TRACE
|
||||
/**
|
||||
* qdf_dp_trace_init() - enables the DP trace
|
||||
|
Reference in New Issue
Block a user