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:
Padma, Santhosh Kumar
2016-08-11 16:33:03 +05:30
zatwierdzone przez qcabuildsw
rodzic 99c4b0bf4d
commit 75394d6c8f
3 zmienionych plików z 72 dodań i 0 usunięć

Wyświetl plik

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

Wyświetl plik

@@ -75,6 +75,7 @@
#endif /* CONFIG_MCL */
#define QDF_ENABLE_TRACING
#define qdf_scnprintf scnprintf
#ifdef QDF_ENABLE_TRACING

Wyświetl plik

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