qcacmn: Trigger copy of pktlogs to SD Card on basis of ring ID

For fatal events , driver sends EVENT_WLAN_LOG_COMPLETE
to userspace. But there can be multiple events for each
ring id like connectivity, driver , frimware, wakelock etc.
Cnss diag has to trigger copy of pkt log to /sdcard only for
one bug report, so send ring id in log complete event so
that it can trigger copy for driver ring id.

Change-Id: I3b06bed52509e58ac4d79698c95ba5eb1baa3bb3
CRs-Fixed: 2053770
这个提交包含在:
Agrawal Ashish
2017-05-30 15:19:54 +05:30
提交者 snandini
父节点 31d77bc18a
当前提交 42a1dc0596
修改 2 个文件,包含 13 行新增7 行删除

查看文件

@@ -63,7 +63,8 @@ static inline void wlan_logging_set_fw_flush_complete(void)
#ifdef FEATURE_WLAN_DIAG_SUPPORT #ifdef FEATURE_WLAN_DIAG_SUPPORT
void wlan_report_log_completion(uint32_t is_fatal, void wlan_report_log_completion(uint32_t is_fatal,
uint32_t indicator, uint32_t indicator,
uint32_t reason_code); uint32_t reason_code,
uint8_t ring_id);
#else #else
static inline void wlan_report_log_completion(uint32_t is_fatal, static inline void wlan_report_log_completion(uint32_t is_fatal,
uint32_t indicator, uint32_t indicator,

查看文件

@@ -680,6 +680,7 @@ static int send_filled_buffers_to_user(void)
* @is_fatal: Type of event, fatal or not * @is_fatal: Type of event, fatal or not
* @indicator: Source of bug report, framework/host/firmware * @indicator: Source of bug report, framework/host/firmware
* @reason_code: Reason for triggering bug report * @reason_code: Reason for triggering bug report
* @ring_id: Ring id of logging entities
* *
* This function is used to report the bug report completion to userspace * This function is used to report the bug report completion to userspace
* *
@@ -687,7 +688,8 @@ static int send_filled_buffers_to_user(void)
*/ */
void wlan_report_log_completion(uint32_t is_fatal, void wlan_report_log_completion(uint32_t is_fatal,
uint32_t indicator, uint32_t indicator,
uint32_t reason_code) uint32_t reason_code,
uint8_t ring_id)
{ {
WLAN_HOST_DIAG_EVENT_DEF(wlan_diag_event, WLAN_HOST_DIAG_EVENT_DEF(wlan_diag_event,
struct host_event_wlan_log_complete); struct host_event_wlan_log_complete);
@@ -695,7 +697,7 @@ void wlan_report_log_completion(uint32_t is_fatal,
wlan_diag_event.is_fatal = is_fatal; wlan_diag_event.is_fatal = is_fatal;
wlan_diag_event.indicator = indicator; wlan_diag_event.indicator = indicator;
wlan_diag_event.reason_code = reason_code; wlan_diag_event.reason_code = reason_code;
wlan_diag_event.reserved = 0; wlan_diag_event.reserved = ring_id;
WLAN_HOST_DIAG_EVENT_REPORT(&wlan_diag_event, EVENT_WLAN_LOG_COMPLETE); WLAN_HOST_DIAG_EVENT_REPORT(&wlan_diag_event, EVENT_WLAN_LOG_COMPLETE);
} }
@@ -704,12 +706,13 @@ void wlan_report_log_completion(uint32_t is_fatal,
#ifdef CONFIG_MCL #ifdef CONFIG_MCL
/** /**
* send_flush_completion_to_user() - Indicate flush completion to the user * send_flush_completion_to_user() - Indicate flush completion to the user
* @ring_id: Ring id of logging entities
* *
* This function is used to send the flush completion message to user space * This function is used to send the flush completion message to user space
* *
* Return: None * Return: None
*/ */
static void send_flush_completion_to_user(void) static void send_flush_completion_to_user(uint8_t ring_id)
{ {
uint32_t is_fatal, indicator, reason_code; uint32_t is_fatal, indicator, reason_code;
bool recovery_needed; bool recovery_needed;
@@ -721,7 +724,7 @@ static void send_flush_completion_to_user(void)
LOGGING_TRACE(QDF_TRACE_LEVEL_DEBUG, LOGGING_TRACE(QDF_TRACE_LEVEL_DEBUG,
"%s: Sending flush done to userspace", __func__); "%s: Sending flush done to userspace", __func__);
wlan_report_log_completion(is_fatal, indicator, reason_code); wlan_report_log_completion(is_fatal, indicator, reason_code, ring_id);
if (recovery_needed) if (recovery_needed)
cds_trigger_recovery(false); cds_trigger_recovery(false);
@@ -775,7 +778,8 @@ static int wlan_logging_thread(void *Arg)
#ifdef CONFIG_MCL #ifdef CONFIG_MCL
if (WLAN_LOG_INDICATOR_HOST_ONLY == if (WLAN_LOG_INDICATOR_HOST_ONLY ==
cds_get_log_indicator()) { cds_get_log_indicator()) {
send_flush_completion_to_user(); send_flush_completion_to_user(
RING_ID_DRIVER_DEBUG);
} }
#endif #endif
} }
@@ -797,7 +801,8 @@ static int wlan_logging_thread(void *Arg)
if (gwlan_logging.is_flush_complete == true) { if (gwlan_logging.is_flush_complete == true) {
gwlan_logging.is_flush_complete = false; gwlan_logging.is_flush_complete = false;
#ifdef CONFIG_MCL #ifdef CONFIG_MCL
send_flush_completion_to_user(); send_flush_completion_to_user(
RING_ID_DRIVER_DEBUG);
#endif #endif
} else { } else {
gwlan_logging.is_flush_complete = true; gwlan_logging.is_flush_complete = true;